From 4a736fb3356f0bbf1bf5dd04c0330c92ae0d9228 Mon Sep 17 00:00:00 2001 From: Andrew Date: Wed, 8 Jul 2020 10:51:54 +1000 Subject: [PATCH] (Exchange) Add GetHistoricCandles() & GetHistoricCandlesEx() support to exchanges (#479) * implemented binance and bitfinex GetHistoricCandles wrapper methods) * coinbene supported added * after and before clean up * gateio wrapper completed * merged upstream/master * Added bsaic KlineIntervalSupported() method * Converted binance fixed test * WIP * new KlineConvertToExchangeStandardString method added * end of day WIP * WIP * end of day WIP started migration of trade history * added kline support to hitbtc huobi lbank * added exchangehistory to all supported exchanges started work on coinbase 300 candles/request method * end of day WIP * removed unused ta and misc changes to flag ready for review * yobit cleanup * revert coinbase changES * general code clean up and added zb support * poloniex support added * renamed method to FormatExchangeKlineInterval other misc fixes * linter fixes * linter fixes * removed verbose * fixed poloniex test coverage * revert poloniex mock data * regenerated poloniex mock data * a very verbose clean up * binance mock clean up * removed unneeded t.Log() * setting verbose to true to debug CI issue * first pass changes addressed * common.ErrNotYetImplemented implemented :D * comments added * WIP-addressed exchange requests and reverted previous GetExchangeHistory changes * WIP-addressed exchange requests and reverted previous GetExchangeHistory changes * increased test coverage added kraken support * OKGroup support completed started work on address GetExchangeHistory feedback and migrating to own PR under https://github.com/xtda/gocryptotrader/tree/exchange_history * convert zb ratelimits * gofmt run on okcoin * increased delay on rate limit * gofmt package * fixed panic with coinbene and bithumb if conversion fails * very broken end of day WIP * added support for GetHistoricCandlesEx to coinbase and binance * gofmt package * coinbase, btcmarkets, zb ex wrapper function added * added all exchange support for ex regenerated mock data * update bithumb to return wrapper method * gofmt package * end of day started work on changes * reworked test coverage added okgroup support general fixes/change requests addressed * Added OneMonth * limit checks on supportedexchanges * reverted getexchangehistory * reworked binance tesT * added workaround for kraken panic * renamed command to extended removed interval check on non-implemented commands * added wrapperconfig back * increased test coverage for FormatExchangeKlineInterval * WIP * increased test coverage for FormatExchangeKlineInterval bitfinex/gateio/huobi * linter fixes * zb kraken lbank coinbene btcmarkets support added * removed verbose * OK group support for other asset types added * swapped margin to use spot endpoint * index support added test coverage added for asset types * added asset type to okcoin test * gofmt * add asset to extended method * removed verbose * add support for coinbene swap increase test coverage * removed verbose * small clean up of okgroup wrapper functions * verbose to troubleshoot CI issues * removed verbose * added error check reverted coinbasechanges * readme updated * removed unused start/finish started work on decoupling api requests from kline package * restructured coinbene, bithumb methods, added bitstamp support * kraken time fix * BTCMarkets restructure * typo fix * removed test for futures due to contact changing * added start/end date to extended method over range * converted to assettranslator * removed verbose * removed invalid char * reverted incorrectly removed return * added import * further template updates * macos hates my keyboard :D * misc canges * x -> i * removed verbose * updated fixCasing to allocate var before checks * removed time conversion * sort all outgoing kline candles * fixCasing fix * after/before checks added * added parallel to test * logic check on BTCmarkets * removed unused param, used correct iterator * converted HitBTC to use time.Time * add iszero false check to candle times * updated resultlimit to 5000 * new line added * added comment to exported const * use configured ratelimit * fixed pair for test * panic fixed WIP on fixCasing * fixCasing rework, started work on readme docs * enable rate limiter for wrapper issues tool * docs updated * removed err from return and formatted currency * updated Yobit supported status * Updated HitBTC to use onehour candles due to test exeuction times * added further details to gctcli output * added link to docs * added link to tempalte * disable FTX websocket in config_example * fix poloneix * regenerated poloniex mock data * removed recording flag --- .gitignore | 3 +- README.md | 1 + .../root_templates/root_readme.tmpl | 1 + cmd/exchange_template/wrapper_file.tmpl | 8 +- cmd/exchange_wrapper_issues/main.go | 33 + cmd/gctcli/commands.go | 146 +- cmd/gctcli/main.go | 1 + common/convert/convert.go | 5 + common/convert/convert_test.go | 7 + config_example.json | 2 +- docs/OHLCV.md | 91 + engine/fake_exchange_test.go | 5 +- engine/rpcserver.go | 48 +- exchanges/binance/binance.go | 75 +- exchanges/binance/binance_test.go | 146 +- exchanges/binance/binance_types.go | 31 +- exchanges/binance/binance_wrapper.go | 113 +- exchanges/bitfinex/bitfinex.go | 10 +- exchanges/bitfinex/bitfinex_test.go | 112 +- exchanges/bitfinex/bitfinex_types.go | 9 +- exchanges/bitfinex/bitfinex_wrapper.go | 139 +- exchanges/bitfinex/ratelimit.go | 4 +- exchanges/bitflyer/bitflyer_wrapper.go | 9 +- exchanges/bithumb/bithumb.go | 8 + exchanges/bithumb/bithumb_test.go | 28 + exchanges/bithumb/bithumb_types.go | 6 + exchanges/bithumb/bithumb_wrapper.go | 112 +- exchanges/bitmex/bitmex_test.go | 6 +- exchanges/bitmex/bitmex_wrapper.go | 9 +- exchanges/bitstamp/bitstamp.go | 19 + exchanges/bitstamp/bitstamp_test.go | 33 + exchanges/bitstamp/bitstamp_types.go | 15 + exchanges/bitstamp/bitstamp_wrapper.go | 114 +- exchanges/bittrex/bittrex_wrapper.go | 9 +- exchanges/btcmarkets/btcmarkets.go | 82 +- exchanges/btcmarkets/btcmarkets_test.go | 45 +- exchanges/btcmarkets/btcmarkets_types.go | 4 + exchanges/btcmarkets/btcmarkets_websocket.go | 6 +- exchanges/btcmarkets/btcmarkets_wrapper.go | 147 +- exchanges/btse/btse_wrapper.go | 9 +- exchanges/coinbasepro/coinbasepro_test.go | 17 +- exchanges/coinbasepro/coinbasepro_wrapper.go | 112 +- exchanges/coinbene/coinbene.go | 94 +- exchanges/coinbene/coinbene_test.go | 92 +- exchanges/coinbene/coinbene_types.go | 7 + exchanges/coinbene/coinbene_wrapper.go | 133 +- exchanges/coinut/coinut_wrapper.go | 9 +- exchanges/exchange.go | 13 + exchanges/exchange_test.go | 33 + exchanges/exchange_types.go | 3 + exchanges/exmo/exmo_wrapper.go | 9 +- exchanges/ftx/ftx.go | 22 - exchanges/ftx/ftx_test.go | 11 + exchanges/ftx/ftx_wrapper.go | 101 +- exchanges/gateio/gateio.go | 52 +- exchanges/gateio/gateio_test.go | 58 +- exchanges/gateio/gateio_types.go | 2 +- exchanges/gateio/gateio_wrapper.go | 57 +- exchanges/gemini/gemini_wrapper.go | 7 +- exchanges/hitbtc/hitbtc.go | 16 +- exchanges/hitbtc/hitbtc_test.go | 74 +- exchanges/hitbtc/hitbtc_wrapper.go | 109 +- exchanges/huobi/huobi.go | 2 +- exchanges/huobi/huobi_test.go | 94 +- exchanges/huobi/huobi_types.go | 22 +- exchanges/huobi/huobi_wrapper.go | 87 +- exchanges/interfaces.go | 3 +- exchanges/itbit/itbit.go | 4 +- exchanges/itbit/itbit_wrapper.go | 9 +- exchanges/kline/kline.go | 173 +- exchanges/kline/kline_test.go | 190 +- exchanges/kline/kline_types.go | 96 + exchanges/kline/types.go | 45 - exchanges/kraken/kraken.go | 10 +- exchanges/kraken/kraken_test.go | 62 +- exchanges/kraken/kraken_wrapper.go | 105 +- exchanges/lakebtc/lakebtc.go | 10 +- exchanges/lakebtc/lakebtc_test.go | 3 +- exchanges/lakebtc/lakebtc_wrapper.go | 9 +- exchanges/lbank/lbank_test.go | 73 + exchanges/lbank/lbank_wrapper.go | 113 +- .../localbitcoins/localbitcoins_wrapper.go | 7 +- exchanges/okcoin/okcoin_test.go | 31 +- exchanges/okcoin/okcoin_wrapper.go | 164 +- exchanges/okex/okex.go | 12 - exchanges/okex/okex_test.go | 60 +- exchanges/okex/okex_wrapper.go | 164 +- exchanges/okgroup/okgroup.go | 25 +- exchanges/okgroup/okgroup_types.go | 14 +- exchanges/poloniex/poloniex.go | 30 +- exchanges/poloniex/poloniex_test.go | 42 +- exchanges/poloniex/poloniex_wrapper.go | 54 +- exchanges/yobit/yobit.go | 15 +- exchanges/yobit/yobit_test.go | 2 +- exchanges/yobit/yobit_wrapper.go | 9 +- exchanges/zb/ratelimit.go | 49 + exchanges/zb/zb.go | 39 +- exchanges/zb/zb_test.go | 82 +- exchanges/zb/zb_types.go | 28 +- exchanges/zb/zb_wrapper.go | 91 +- gctrpc/rpc.pb.go | 14008 ++++++++----- gctrpc/rpc.pb.gw.go | 55 +- gctrpc/rpc.proto | 8 +- gctrpc/rpc.swagger.json | 142 +- gctscript/modules/gct/exchange.go | 3 +- gctscript/modules/wrapper_types.go | 2 +- gctscript/wrappers/gct/exchange/exchange.go | 2 +- gctscript/wrappers/validator/validator.go | 4 +- go.mod | 1 + testdata/http_mock/binance/binance.json | 16697 +++++++++++++++- testdata/http_mock/bitstamp/bitstamp.json | 16132 +++++++++++++++ testdata/http_mock/poloniex/poloniex.json | 13073 ++++++------ 112 files changed, 52287 insertions(+), 12550 deletions(-) create mode 100644 docs/OHLCV.md create mode 100644 exchanges/kline/kline_types.go delete mode 100644 exchanges/kline/types.go create mode 100644 exchanges/zb/ratelimit.go diff --git a/.gitignore b/.gitignore index 81fab49c..71bf5972 100644 --- a/.gitignore +++ b/.gitignore @@ -31,4 +31,5 @@ sqlboiler.toml sqlboiler.json # GCT API Check -backup.json \ No newline at end of file +backup.json +.DS_STORE \ No newline at end of file diff --git a/README.md b/README.md index d558a0d0..f7eb9509 100644 --- a/README.md +++ b/README.md @@ -74,6 +74,7 @@ However, we welcome pull requests for any exchange which does not match this cri + Packages for handling currency pairs, tickers and orderbooks. + Portfolio management tool; fetches balances from supported exchanges and allows for custom address tracking. + Basic event trigger system. ++ OHLCV/Candle retrieval support. See [OHLCV](/docs/OHLCV.md). + Scripting support. See [gctscript](/gctscript/README.md). + WebGUI (discontinued). diff --git a/cmd/documentation/root_templates/root_readme.tmpl b/cmd/documentation/root_templates/root_readme.tmpl index e808237a..11cf2397 100644 --- a/cmd/documentation/root_templates/root_readme.tmpl +++ b/cmd/documentation/root_templates/root_readme.tmpl @@ -75,6 +75,7 @@ However, we welcome pull requests for any exchange which does not match this cri + Packages for handling currency pairs, tickers and orderbooks. + Portfolio management tool; fetches balances from supported exchanges and allows for custom address tracking. + Basic event trigger system. ++ OHLCV/Candle retrieval support. See [OHLCV](/docs/OHLCV.md). + Scripting support. See [gctscript](/gctscript/README.md). + WebGUI (discontinued). diff --git a/cmd/exchange_template/wrapper_file.tmpl b/cmd/exchange_template/wrapper_file.tmpl index 4fecf01f..80b24037 100644 --- a/cmd/exchange_template/wrapper_file.tmpl +++ b/cmd/exchange_template/wrapper_file.tmpl @@ -402,14 +402,18 @@ func ({{.Variable}} *{{.CapitalName}}) AuthenticateWebsocket() error { } // ValidateCredentials validates current credentials used for wrapper -// functionality func ({{.Variable}} *{{.CapitalName}}) ValidateCredentials() error { _, err := {{.Variable}}.UpdateAccountInfo() return {{.Variable}}.CheckTransientError(err) } // GetHistoricCandles returns candles between a time period for a set time interval -func ({{.Variable}} *{{.CapitalName}}) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval time.Duration) (kline.Item, error) { +func ({{.Variable}} *{{.CapitalName}}) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + return kline.Item{}, common.ErrNotYetImplemented +} + +// GetHistoricCandlesExtended returns candles between a time period for a set time interval +func ({{.Variable}} *{{.CapitalName}}) GetHistoricCandlesExtended(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { return kline.Item{}, common.ErrNotYetImplemented } diff --git a/cmd/exchange_wrapper_issues/main.go b/cmd/exchange_wrapper_issues/main.go index 34ebc111..62ae820d 100644 --- a/cmd/exchange_wrapper_issues/main.go +++ b/cmd/exchange_wrapper_issues/main.go @@ -21,6 +21,7 @@ import ( exchange "github.com/thrasher-corp/gocryptotrader/exchanges" "github.com/thrasher-corp/gocryptotrader/exchanges/account" "github.com/thrasher-corp/gocryptotrader/exchanges/asset" + "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/order" "github.com/thrasher-corp/gocryptotrader/exchanges/orderbook" "github.com/thrasher-corp/gocryptotrader/exchanges/ticker" @@ -41,6 +42,7 @@ func main() { engine.Bot.Settings = engine.Settings{ DisableExchangeAutoPairUpdates: true, Verbose: verboseOverride, + EnableExchangeHTTPRateLimiter: true, } log.Println("Loading config...") @@ -725,6 +727,37 @@ func testWrappers(e exchange.IBotExchange, base *exchange.Base, config *Config) Error: msg, Response: r23, }) + + if !authenticatedOnly { + var r24 kline.Item + startTime, endTime := time.Now().AddDate(0, -1, 0), time.Now() + r24, err = e.GetHistoricCandles(p, assetTypes[i], startTime, endTime, kline.OneDay) + msg = "" + if err != nil { + msg = err.Error() + responseContainer.ErrorCount++ + } + responseContainer.EndpointResponses = append(responseContainer.EndpointResponses, EndpointResponse{ + Function: "GetHistoricCandles", + Error: msg, + Response: r24, + SentParams: jsonifyInterface([]interface{}{p, assetTypes[i], startTime, endTime, kline.OneDay}), + }) + + var r25 kline.Item + r25, err = e.GetHistoricCandlesExtended(p, assetTypes[i], startTime, endTime, kline.OneDay) + msg = "" + if err != nil { + msg = err.Error() + responseContainer.ErrorCount++ + } + responseContainer.EndpointResponses = append(responseContainer.EndpointResponses, EndpointResponse{ + Function: "GetHistoricCandlesExtended", + Error: msg, + Response: r25, + SentParams: jsonifyInterface([]interface{}{p, assetTypes[i], startTime, endTime, kline.OneDay}), + }) + } response = append(response, responseContainer) } return response diff --git a/cmd/gctcli/commands.go b/cmd/gctcli/commands.go index 277f3821..02898379 100644 --- a/cmd/gctcli/commands.go +++ b/cmd/gctcli/commands.go @@ -3996,8 +3996,7 @@ var getHistoricCandlesCommand = cli.Command{ func getHistoricCandles(c *cli.Context) error { if c.NArg() == 0 && c.NumFlags() == 0 { - cli.ShowCommandHelp(c, "gethistoriccandles") - return nil + return cli.ShowCommandHelp(c, "gethistoriccandles") } var exchangeName string @@ -4084,3 +4083,146 @@ func getHistoricCandles(c *cli.Context) error { jsonOutput(result) return nil } + +var getHistoricCandlesExtendedCommand = cli.Command{ + Name: "gethistoriccandlesextended", + Usage: "gets historical candles extended for the specified granularity up to range size time from now", + ArgsUsage: " ", + Action: getHistoricCandlesExtended, + Flags: []cli.Flag{ + cli.StringFlag{ + Name: "exchange, e", + Usage: "the exchange to get the candles from", + }, + cli.StringFlag{ + Name: "pair", + Usage: "the currency pair to get the candles for", + }, + cli.StringFlag{ + Name: "asset", + Usage: "the asset type of the currency pair", + }, + cli.Int64Flag{ + Name: "granularity, g", + Usage: "example values are in seconds and can be one of the following {60 (1 Minute), 300 (5 Minute), 900 (15 Minute), 3600 (1 Hour), 21600 (6 Hour), 86400 (1 Day)}", + Value: 86400, + Destination: &candleGranularity, + }, + cli.StringFlag{ + Name: "start", + Usage: "", + Value: time.Now().AddDate(0, -1, 0).Format(common.SimpleTimeFormat), + Destination: &startTime, + }, + cli.StringFlag{ + Name: "end", + Usage: "", + Value: time.Now().Format(common.SimpleTimeFormat), + Destination: &endTime, + }, + }, +} + +func getHistoricCandlesExtended(c *cli.Context) error { + if c.NArg() == 0 && c.NumFlags() == 0 { + return cli.ShowCommandHelp(c, "gethistoriccandlesextended") + } + + var exchangeName string + if c.IsSet("exchange") { + exchangeName = c.String("exchange") + } else { + exchangeName = c.Args().First() + } + if !validExchange(exchangeName) { + return errInvalidExchange + } + + var currencyPair string + if c.IsSet("pair") { + currencyPair = c.String("pair") + } else { + currencyPair = c.Args().Get(1) + } + if !validPair(currencyPair) { + return errInvalidPair + } + p := currency.NewPairDelimiter(currencyPair, pairDelimiter) + + var assetType string + if c.IsSet("asset") { + assetType = c.String("asset") + } else { + assetType = c.Args().Get(2) + } + + if !validAsset(assetType) { + return errInvalidAsset + } + + if c.IsSet("granularity") { + candleGranularity = c.Int64("granularity") + } else if c.Args().Get(3) != "" { + var err error + candleGranularity, err = strconv.ParseInt(c.Args().Get(3), 10, 64) + if err != nil { + return err + } + } + + if !c.IsSet("start") { + if c.Args().Get(4) != "" { + startTime = c.Args().Get(4) + } + } + + if !c.IsSet("end") { + if c.Args().Get(5) != "" { + endTime = c.Args().Get(5) + } + } + + conn, err := setupClient() + if err != nil { + return err + } + defer conn.Close() + + candleInterval := time.Duration(candleGranularity) * time.Second + + s, err := time.Parse(common.SimpleTimeFormat, startTime) + if err != nil { + return fmt.Errorf("invalid time format for start: %v", err) + } + + e, err := time.Parse(common.SimpleTimeFormat, endTime) + if err != nil { + return fmt.Errorf("invalid time format for end: %v", err) + } + + if e.Before(s) { + return errors.New("start cannot be after before") + } + + client := gctrpc.NewGoCryptoTraderClient(conn) + result, err := client.GetHistoricCandles(context.Background(), + &gctrpc.GetHistoricCandlesRequest{ + Exchange: exchangeName, + Pair: &gctrpc.CurrencyPair{ + Delimiter: p.Delimiter, + Base: p.Base.String(), + Quote: p.Quote.String(), + }, + AssetType: assetType, + Start: s.Unix(), + End: e.Unix(), + TimeInterval: int64(candleInterval), + ExRequest: true, + }) + if err != nil { + return err + } + + jsonOutput(result) + return nil +} diff --git a/cmd/gctcli/main.go b/cmd/gctcli/main.go index f445da22..01f2b214 100644 --- a/cmd/gctcli/main.go +++ b/cmd/gctcli/main.go @@ -136,6 +136,7 @@ func main() { getExchangeTickerStreamCommand, getAuditEventCommand, getHistoricCandlesCommand, + getHistoricCandlesExtendedCommand, gctScriptCommand, } diff --git a/common/convert/convert.go b/common/convert/convert.go index 61d1c42d..760f522d 100644 --- a/common/convert/convert.go +++ b/common/convert/convert.go @@ -91,3 +91,8 @@ func BoolPtr(condition bool) *bool { b := condition return &b } + +// UnixMillisToNano converts Unix milli time to UnixNano +func UnixMillisToNano(milli int64) int64 { + return milli * int64(time.Millisecond) +} diff --git a/common/convert/convert_test.go b/common/convert/convert_test.go index 456a5796..28312d66 100644 --- a/common/convert/convert_test.go +++ b/common/convert/convert_test.go @@ -176,3 +176,10 @@ func TestBoolPtr(t *testing.T) { t.Fatal("false expected received true") } } + +func TestUnixMillisToNano(t *testing.T) { + v := UnixMillisToNano(1588653603424) + if v != 1588653603424000000 { + t.Fatalf("unexpected result received %v", v) + } +} diff --git a/config_example.json b/config_example.json index 6128d075..1b5216a2 100644 --- a/config_example.json +++ b/config_example.json @@ -1365,7 +1365,7 @@ }, "enabled": { "autoPairUpdates": true, - "websocketAPI": true + "websocketAPI": false } }, "bankAccounts": [ diff --git a/docs/OHLCV.md b/docs/OHLCV.md new file mode 100644 index 00000000..49f40d62 --- /dev/null +++ b/docs/OHLCV.md @@ -0,0 +1,91 @@ +# GoCryptoTrader OHLCV support + + + +[![Build Status](https://travis-ci.org/thrasher-corp/gocryptotrader.svg?branch=master)](https://travis-ci.org/thrasher-corp/gocryptotrader) +[![Software License](https://img.shields.io/badge/License-MIT-orange.svg?style=flat-square)](https://github.com/thrasher-corp/gocryptotrader/blob/master/LICENSE) +[![GoDoc](https://godoc.org/github.com/thrasher-corp/gocryptotrader?status.svg)](https://godoc.org/github.com/thrasher-corp/gocryptotrader/exchanges) +[![Coverage Status](http://codecov.io/github/thrasher-corp/gocryptotrader/coverage.svg?branch=master)](http://codecov.io/github/thrasher-corp/gocryptotrader?branch=master) +[![Go Report Card](https://goreportcard.com/badge/github.com/thrasher-corp/gocryptotrader)](https://goreportcard.com/report/github.com/thrasher-corp/gocryptotrader) + +This exchanges package is part of the GoCryptoTrader codebase. + +## This is still in active development + +You can track ideas, planned features and what's in progress on this Trello board: [https://trello.com/b/ZAhMhpOy/gocryptotrader](https://trello.com/b/ZAhMhpOy/gocryptotrader). + +Join our slack to discuss all things related to GoCryptoTrader! [GoCryptoTrader Slack](https://join.slack.com/t/gocryptotrader/shared_invite/enQtNTQ5NDAxMjA2Mjc5LTc5ZDE1ZTNiOGM3ZGMyMmY1NTAxYWZhODE0MWM5N2JlZDk1NDU0YTViYzk4NTk3OTRiMDQzNGQ1YTc4YmRlMTk) + +## Wrapper Methods + +Candle retrieval is handled by two methods + + +GetHistoricCandles which makes a single request to the exchange and follows all exchange limitations +```go +func (b *base) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + return kline.Item{}, common.ErrFunctionNotSupported +} +``` + +GetHistoricCandlesExtended that will make multiple requests to an exchange if the requested periods are outside exchange limits +```go +func (b *base) GetHistoricCandlesExtended(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + return kline.Item{}, common.ErrFunctionNotSupported +} +``` + +both methods return kline.Item{} + +```go +// Item holds all the relevant information for internal kline elements +type Item struct { + Exchange string + Pair currency.Pair + Asset asset.Item + Interval Interval + Candles []Candle +} + +// Candle holds historic rate information. +type Candle struct { + Time time.Time + Open float64 + High float64 + Low float64 + Close float64 + Volume float64 +} +``` + +## Exchange status +| Exchange | Supported | +|----------------|-------------| +| Binance | Y | +| Bitfinex | Y | +| Bitflyer | | +| Bithumb | Y | +| Bitmex | | +| Bitstamp | Y | +| BTC Markets | Y | +| Bittrex | | +| BTSE | | +| Coinbase Pro | Y | +| Coinbene | Y | +| Coinut | | +| Exmo | | +| GateIO | Y | +| Gemini | | +| HitBTC | Y | +| Huobi | Y | +| FTX | Y | +| itBIT | | +| Kraken | Y | +| LakeBTC | | +| lBank | Y | +| Localbitcoins | | +| Okcoin | Y | +| Okex | Y | +| Poloniex | Y | +| Yobit | | +| ZB | Y | diff --git a/engine/fake_exchange_test.go b/engine/fake_exchange_test.go index 343278b0..d7f00df6 100644 --- a/engine/fake_exchange_test.go +++ b/engine/fake_exchange_test.go @@ -177,7 +177,10 @@ func (h *FakePassingExchange) GetSubscriptions() ([]wshandler.WebsocketChannelSu func (h *FakePassingExchange) GetDefaultConfig() (*config.ExchangeConfig, error) { return nil, nil } func (h *FakePassingExchange) GetBase() *exchange.Base { return nil } func (h *FakePassingExchange) SupportsAsset(_ asset.Item) bool { return true } -func (h *FakePassingExchange) GetHistoricCandles(_ currency.Pair, _ asset.Item, _, _ time.Time, _ time.Duration) (kline.Item, error) { +func (h *FakePassingExchange) GetHistoricCandles(_ currency.Pair, _ asset.Item, _, _ time.Time, _ kline.Interval) (kline.Item, error) { + return kline.Item{}, nil +} +func (h *FakePassingExchange) GetHistoricCandlesExtended(_ currency.Pair, _ asset.Item, _, _ time.Time, _ kline.Interval) (kline.Item, error) { return kline.Item{}, nil } func (h *FakePassingExchange) DisableRateLimiter() error { return nil } diff --git a/engine/rpcserver.go b/engine/rpcserver.go index 750d6228..75d4787d 100644 --- a/engine/rpcserver.go +++ b/engine/rpcserver.go @@ -28,6 +28,7 @@ import ( "github.com/thrasher-corp/gocryptotrader/database/repository/audit" "github.com/thrasher-corp/gocryptotrader/exchanges/account" "github.com/thrasher-corp/gocryptotrader/exchanges/asset" + "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/order" "github.com/thrasher-corp/gocryptotrader/exchanges/orderbook" "github.com/thrasher-corp/gocryptotrader/exchanges/ticker" @@ -1526,19 +1527,42 @@ func (s *RPCServer) GetHistoricCandles(ctx context.Context, req *gctrpc.GetHisto return nil, errors.New("Exchange " + req.Exchange + " not found") } - candles, err := exchange.GetHistoricCandles(currency.Pair{ - Delimiter: req.Pair.Delimiter, - Base: currency.NewCode(req.Pair.Base), - Quote: currency.NewCode(req.Pair.Quote), - }, - asset.Item(req.AssetType), - time.Unix(req.Start, 0), - time.Unix(req.End, 0), - time.Duration(req.TimeInterval)) - if err != nil { - return nil, err + var candles kline.Item + var err error + if req.ExRequest { + candles, err = exchange.GetHistoricCandlesExtended(currency.Pair{ + Delimiter: req.Pair.Delimiter, + Base: currency.NewCode(req.Pair.Base), + Quote: currency.NewCode(req.Pair.Quote), + }, + asset.Item(strings.ToLower(req.AssetType)), + time.Unix(req.Start, 0), + time.Unix(req.End, 0), + kline.Interval(req.TimeInterval)) + if err != nil { + return nil, err + } + } else { + candles, err = exchange.GetHistoricCandles(currency.Pair{ + Delimiter: req.Pair.Delimiter, + Base: currency.NewCode(req.Pair.Base), + Quote: currency.NewCode(req.Pair.Quote), + }, + asset.Item(strings.ToLower(req.AssetType)), + time.Unix(req.Start, 0), + time.Unix(req.End, 0), + kline.Interval(req.TimeInterval)) + if err != nil { + return nil, err + } } - resp := gctrpc.GetHistoricCandlesResponse{} + resp := gctrpc.GetHistoricCandlesResponse{ + Exchange: exchange.GetName(), + Interval: kline.Interval(req.TimeInterval).Short(), + Start: req.Start, + End: req.End, + } + for i := range candles.Candles { resp.Candle = append(resp.Candle, &gctrpc.Candle{ Time: candles.Candles[i].Time.Unix(), diff --git a/exchanges/binance/binance.go b/exchanges/binance/binance.go index 1b77d635..66fcf280 100644 --- a/exchanges/binance/binance.go +++ b/exchanges/binance/binance.go @@ -18,7 +18,6 @@ import ( "github.com/thrasher-corp/gocryptotrader/currency" exchange "github.com/thrasher-corp/gocryptotrader/exchanges" "github.com/thrasher-corp/gocryptotrader/exchanges/asset" - "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/request" "github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler" "github.com/thrasher-corp/gocryptotrader/log" @@ -67,8 +66,7 @@ type Binance struct { WebsocketConn *wshandler.WebsocketConnection // Valid string list that is required by the exchange - validLimits []int - validIntervals []TimeInterval + validLimits []int } // GetExchangeInfo returns exchange information. Check binance_types for more @@ -178,10 +176,11 @@ func (b *Binance) GetAggregatedTrades(symbol string, limit int) ([]AggregatedTra params := url.Values{} params.Set("symbol", strings.ToUpper(symbol)) - params.Set("limit", strconv.Itoa(limit)) - - path := fmt.Sprintf("%s%s?%s", b.API.Endpoints.URL, aggregatedTrades, params.Encode()) + if limit > 0 { + params.Set("limit", strconv.Itoa(limit)) + } + path := b.API.Endpoints.URL + aggregatedTrades + "?" + params.Encode() return resp, b.SendHTTPRequest(path, limitDefault, &resp) } @@ -199,7 +198,7 @@ func (b *Binance) GetSpotKline(arg KlinesRequestParams) ([]CandleStick, error) { params := url.Values{} params.Set("symbol", arg.Symbol) - params.Set("interval", string(arg.Interval)) + params.Set("interval", arg.Interval) if arg.Limit != 0 { params.Set("limit", strconv.Itoa(arg.Limit)) } @@ -581,36 +580,9 @@ func (b *Binance) CheckSymbol(symbol string, assetType asset.Item) error { return errors.New("incorrect symbol values - please check available pairs in configuration") } -// CheckIntervals checks value against a variable list -func (b *Binance) CheckIntervals(interval string) error { - for x := range b.validIntervals { - if TimeInterval(interval) == b.validIntervals[x] { - return nil - } - } - return errors.New(`incorrect interval values - valid values are "1m","3m","5m","15m","30m","1h","2h","4h","6h","8h","12h","1d","3d","1w","1M"`) -} - // SetValues sets the default valid values func (b *Binance) SetValues() { b.validLimits = []int{5, 10, 20, 50, 100, 500, 1000, 5000} - b.validIntervals = []TimeInterval{ - TimeIntervalMinute, - TimeIntervalThreeMinutes, - TimeIntervalFiveMinutes, - TimeIntervalFifteenMinutes, - TimeIntervalThirtyMinutes, - TimeIntervalHour, - TimeIntervalTwoHours, - TimeIntervalFourHours, - TimeIntervalSixHours, - TimeIntervalEightHours, - TimeIntervalTwelveHours, - TimeIntervalDay, - TimeIntervalThreeDays, - TimeIntervalWeek, - TimeIntervalMonth, - } } // GetFee returns an estimate of fee based on type of transaction @@ -757,38 +729,3 @@ func (b *Binance) MaintainWsAuthStreamKey() error { HTTPRecording: b.HTTPRecording, }) } - -func parseInterval(in time.Duration) (TimeInterval, error) { - switch in { - case kline.OneMin: - return TimeIntervalMinute, nil - case kline.ThreeMin: - return TimeIntervalThreeMinutes, nil - case kline.FiveMin: - return TimeIntervalFiveMinutes, nil - case kline.FifteenMin: - return TimeIntervalFifteenMinutes, nil - case kline.ThirtyMin: - return TimeIntervalThirtyMinutes, nil - case kline.OneHour: - return TimeIntervalHour, nil - case kline.TwoHour: - return TimeIntervalTwoHours, nil - case kline.FourHour: - return TimeIntervalFourHours, nil - case kline.SixHour: - return TimeIntervalSixHours, nil - case kline.OneHour * 8: - return TimeIntervalEightHours, nil - case kline.TwelveHour: - return TimeIntervalTwelveHours, nil - case kline.OneDay: - return TimeIntervalDay, nil - case kline.ThreeDay: - return TimeIntervalThreeDays, nil - case kline.OneWeek: - return TimeIntervalWeek, nil - default: - return TimeIntervalMinute, errInvalidInterval - } -} diff --git a/exchanges/binance/binance_test.go b/exchanges/binance/binance_test.go index 754a9694..bfd2fb69 100644 --- a/exchanges/binance/binance_test.go +++ b/exchanges/binance/binance_test.go @@ -93,7 +93,6 @@ func TestGetHistoricalTrades(t *testing.T) { func TestGetAggregatedTrades(t *testing.T) { t.Parallel() - _, err := b.GetAggregatedTrades("BTCUSDT", 5) if err != nil { t.Error("Binance GetAggregatedTrades() error", err) @@ -102,11 +101,12 @@ func TestGetAggregatedTrades(t *testing.T) { func TestGetSpotKline(t *testing.T) { t.Parallel() - _, err := b.GetSpotKline(KlinesRequestParams{ - Symbol: "BTCUSDT", - Interval: TimeIntervalFiveMinutes, - Limit: 24, + Symbol: "BTCUSDT", + Interval: kline.FiveMin.Short(), + Limit: 24, + StartTime: time.Unix(1577836800, 0).Unix() * 1000, + EndTime: time.Unix(1580515200, 0).Unix() * 1000, }) if err != nil { t.Error("Binance GetSpotKline() error", err) @@ -501,7 +501,6 @@ func TestModifyOrder(t *testing.T) { func TestWithdraw(t *testing.T) { t.Parallel() - if areTestAPIKeysSet() && !canManipulateRealOrders && !mockTests { t.Skip("API keys set, canManipulateRealOrders false, skipping test") } @@ -905,130 +904,65 @@ func TestExecutionTypeToOrderStatus(t *testing.T) { } func TestGetHistoricCandles(t *testing.T) { - if mockTests { - t.Skip("skipping test under mock as its covered by GetSpotKlines()") - } currencyPair := currency.NewPairFromString("BTCUSDT") - start := time.Date(2017, 8, 18, 0, 0, 0, 0, time.UTC) - end := start.AddDate(0, 6, 0) - - _, err := b.GetHistoricCandles(currencyPair, asset.Spot, start, end, kline.OneDay) + startTime := time.Unix(1546300800, 0) + end := time.Unix(1577836799, 0) + _, err := b.GetHistoricCandles(currencyPair, asset.Spot, startTime, end, kline.OneDay) if err != nil { t.Fatal(err) } + + _, err = b.GetHistoricCandles(currencyPair, asset.Spot, startTime, end, kline.Interval(time.Hour*7)) + if err == nil { + t.Fatal("unexpected result") + } } -func TestParseInterval(t *testing.T) { +func TestGetHistoricCandlesExtended(t *testing.T) { + currencyPair := currency.NewPairFromString("BTCUSDT") + startTime := time.Unix(1546300800, 0) + end := time.Unix(1577836799, 0) + _, err := b.GetHistoricCandlesExtended(currencyPair, asset.Spot, startTime, end, kline.OneDay) + if err != nil { + t.Fatal(err) + } + _, err = b.GetHistoricCandlesExtended(currencyPair, asset.Spot, startTime, end, kline.Interval(time.Hour*7)) + if err == nil { + t.Fatal("unexpected result") + } +} + +func TestBinance_FormatExchangeKlineInterval(t *testing.T) { testCases := []struct { name string - interval time.Duration - expected TimeInterval - err error + interval kline.Interval + output string }{ { "OneMin", kline.OneMin, - TimeIntervalMinute, - nil, - }, - { - "ThreeMin", - kline.ThreeMin, - TimeIntervalThreeMinutes, - nil, - }, - { - "FiveMin", - kline.FiveMin, - TimeIntervalFiveMinutes, - nil, - }, - { - "FifteenMin", - kline.FifteenMin, - TimeIntervalFifteenMinutes, - nil, - }, - { - "ThirtyMin", - kline.ThirtyMin, - TimeIntervalThirtyMinutes, - nil, - }, - { - "OneHour", - kline.OneHour, - TimeIntervalHour, - nil, - }, - { - "TwoHour", - kline.TwoHour, - TimeIntervalTwoHours, - nil, - }, - { - "FourHour", - kline.FourHour, - TimeIntervalFourHours, - nil, - }, - { - "SixHour", - kline.SixHour, - TimeIntervalSixHours, - nil, - }, - { - "EightHour", - kline.OneHour * 8, - TimeIntervalEightHours, - nil, - }, - { - "TwelveHour", - kline.TwelveHour, - TimeIntervalTwelveHours, - nil, + "1m", }, { "OneDay", kline.OneDay, - TimeIntervalDay, - nil, + "1d", }, { - "ThreeDay", - kline.ThreeDay, - TimeIntervalThreeDays, - nil, - }, - { - "OneWeek", - kline.OneWeek, - TimeIntervalWeek, - nil, - }, - { - "default", - time.Hour * 1337, - TimeIntervalHour, - errInvalidInterval, + "OneMonth", + kline.OneMonth, + "1M", }, } for x := range testCases { test := testCases[x] + t.Run(test.name, func(t *testing.T) { - v, err := parseInterval(test.interval) - if err != nil { - if err != test.err { - t.Fatal(err) - } - } else { - if v != test.expected { - t.Fatalf("%v: received %v expected %v", test.name, v, test.expected) - } + ret := b.FormatExchangeKlineInterval(test.interval) + + if ret != test.output { + t.Fatalf("unexpected result return expected: %v received: %v", test.output, ret) } }) } diff --git a/exchanges/binance/binance_types.go b/exchanges/binance/binance_types.go index 54d9a15b..9a9aff26 100644 --- a/exchanges/binance/binance_types.go +++ b/exchanges/binance/binance_types.go @@ -1,14 +1,11 @@ package binance import ( - "errors" "time" "github.com/thrasher-corp/gocryptotrader/currency" ) -var errInvalidInterval = errors.New("invalid interval") - // Response holds basic binance api response data type Response struct { Code int `json:"code"` @@ -407,35 +404,13 @@ var ( // KlinesRequestParams represents Klines request data. type KlinesRequestParams struct { - Symbol string // Required field; example LTCBTC, BTCUSDT - Interval TimeInterval // Time interval period - Limit int // Default 500; max 500. + Symbol string // Required field; example LTCBTC, BTCUSDT + Interval string // Time interval period + Limit int // Default 500; max 500. StartTime int64 EndTime int64 } -// TimeInterval represents interval enum. -type TimeInterval string - -// Vars related to time intervals -var ( - TimeIntervalMinute = TimeInterval("1m") - TimeIntervalThreeMinutes = TimeInterval("3m") - TimeIntervalFiveMinutes = TimeInterval("5m") - TimeIntervalFifteenMinutes = TimeInterval("15m") - TimeIntervalThirtyMinutes = TimeInterval("30m") - TimeIntervalHour = TimeInterval("1h") - TimeIntervalTwoHours = TimeInterval("2h") - TimeIntervalFourHours = TimeInterval("4h") - TimeIntervalSixHours = TimeInterval("6h") - TimeIntervalEightHours = TimeInterval("8h") - TimeIntervalTwelveHours = TimeInterval("12h") - TimeIntervalDay = TimeInterval("1d") - TimeIntervalThreeDays = TimeInterval("3d") - TimeIntervalWeek = TimeInterval("1w") - TimeIntervalMonth = TimeInterval("1M") -) - // WithdrawalFees the large list of predefined withdrawal fees // Prone to change var WithdrawalFees = map[currency.Code]float64{ diff --git a/exchanges/binance/binance_wrapper.go b/exchanges/binance/binance_wrapper.go index 1a507a5b..d29c9039 100644 --- a/exchanges/binance/binance_wrapper.go +++ b/exchanges/binance/binance_wrapper.go @@ -110,9 +110,32 @@ func (b *Binance) SetDefaults() { }, WithdrawPermissions: exchange.AutoWithdrawCrypto | exchange.NoFiatWithdrawals, + Kline: kline.ExchangeCapabilitiesSupported{ + DateRanges: true, + Intervals: true, + }, }, Enabled: exchange.FeaturesEnabled{ AutoPairUpdates: true, + Kline: kline.ExchangeCapabilitiesEnabled{ + Intervals: map[string]bool{ + kline.OneMin.Word(): true, + kline.ThreeMin.Word(): true, + kline.FiveMin.Word(): true, + kline.FifteenMin.Word(): true, + kline.ThirtyMin.Word(): true, + kline.OneHour.Word(): true, + kline.TwoHour.Word(): true, + kline.FourHour.Word(): true, + kline.SixHour.Word(): true, + kline.TwelveHour.Word(): true, + kline.OneDay.Word(): true, + kline.ThreeDay.Word(): true, + kline.OneWeek.Word(): true, + kline.OneMonth.Word(): true, + }, + ResultLimit: 1000, + }, }, } @@ -672,22 +695,35 @@ func (b *Binance) ValidateCredentials() error { return b.CheckTransientError(err) } -// GetHistoricCandles returns candles between a time period for a set time interval -func (b *Binance) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval time.Duration) (kline.Item, error) { - intervalToString, err := parseInterval(interval) - if err != nil { - return kline.Item{}, err +// FormatExchangeKlineInterval returns Interval to exchange formatted string +func (b *Binance) FormatExchangeKlineInterval(in kline.Interval) string { + if in == kline.OneDay { + return "1d" } - klineParams := KlinesRequestParams{ - Interval: intervalToString, + if in == kline.OneMonth { + return "1M" + } + return in.Short() +} + +// GetHistoricCandles returns candles between a time period for a set time interval +func (b *Binance) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + if !b.KlineIntervalEnabled(interval) { + return kline.Item{}, kline.ErrorKline{ + Interval: interval, + } + } + + if kline.TotalCandlesPerInterval(start, end, interval) > b.Features.Enabled.Kline.ResultLimit { + return kline.Item{}, errors.New(kline.ErrRequestExceedsExchangeLimits) + } + + req := KlinesRequestParams{ + Interval: b.FormatExchangeKlineInterval(interval), Symbol: b.FormatExchangeCurrency(pair, a).String(), StartTime: start.Unix() * 1000, EndTime: end.Unix() * 1000, - } - - candles, err := b.GetSpotKline(klineParams) - if err != nil { - return kline.Item{}, err + Limit: int(b.Features.Enabled.Kline.ResultLimit), } ret := kline.Item{ @@ -697,6 +733,11 @@ func (b *Binance) GetHistoricCandles(pair currency.Pair, a asset.Item, start, en Interval: interval, } + candles, err := b.GetSpotKline(req) + if err != nil { + return kline.Item{}, err + } + for x := range candles { ret.Candles = append(ret.Candles, kline.Candle{ Time: candles[x].OpenTime, @@ -707,5 +748,53 @@ func (b *Binance) GetHistoricCandles(pair currency.Pair, a asset.Item, start, en Volume: candles[x].Volume, }) } + + ret.SortCandlesByTimestamp(false) + return ret, nil +} + +// GetHistoricCandlesExtended returns candles between a time period for a set time interval +func (b *Binance) GetHistoricCandlesExtended(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + if !b.KlineIntervalEnabled(interval) { + return kline.Item{}, kline.ErrorKline{ + Interval: interval, + } + } + + ret := kline.Item{ + Exchange: b.Name, + Pair: pair, + Asset: a, + Interval: interval, + } + + dates := kline.CalcDateRanges(start, end, interval, b.Features.Enabled.Kline.ResultLimit) + for x := range dates { + req := KlinesRequestParams{ + Interval: b.FormatExchangeKlineInterval(interval), + Symbol: b.FormatExchangeCurrency(pair, a).String(), + StartTime: dates[x].Start.UTC().Unix() * 1000, + EndTime: dates[x].End.UTC().Unix() * 1000, + Limit: int(b.Features.Enabled.Kline.ResultLimit), + } + + candles, err := b.GetSpotKline(req) + if err != nil { + return kline.Item{}, err + } + + for i := range candles { + ret.Candles = append(ret.Candles, kline.Candle{ + Time: candles[i].OpenTime, + Open: candles[i].Open, + High: candles[i].Close, + Low: candles[i].Low, + Close: candles[i].Close, + Volume: candles[i].Volume, + }) + } + } + + ret.SortCandlesByTimestamp(false) return ret, nil } diff --git a/exchanges/bitfinex/bitfinex.go b/exchanges/bitfinex/bitfinex.go index 72fcc045..82cef9d4 100644 --- a/exchanges/bitfinex/bitfinex.go +++ b/exchanges/bitfinex/bitfinex.go @@ -240,7 +240,7 @@ func (b *Bitfinex) GetTrades(currencyPair string, limit, timestampStart, timesta v.Encode() var resp [][]interface{} - err := b.SendHTTPRequest(path, &resp, trade) + err := b.SendHTTPRequest(path, &resp, tradeRateLimit) if err != nil { return nil, err } @@ -408,7 +408,7 @@ func (b *Bitfinex) GetLends(symbol string, values url.Values) ([]Lends, error) { // timeFrame values: '1m', '5m', '15m', '30m', '1h', '3h', '6h', '12h', '1D', // '7D', '14D', '1M' // section values: last or hist -func (b *Bitfinex) GetCandles(symbol, timeFrame string, start, end, limit int64, historic, ascending bool) ([]Candle, error) { +func (b *Bitfinex) GetCandles(symbol, timeFrame string, start, end int64, limit uint32, historic bool) ([]Candle, error) { var fundingPeriod string if symbol[0] == 'f' { fundingPeriod = ":p30" @@ -434,7 +434,7 @@ func (b *Bitfinex) GetCandles(symbol, timeFrame string, start, end, limit int64, } if limit > 0 { - v.Set("limit", strconv.FormatInt(limit, 10)) + v.Set("limit", strconv.FormatInt(int64(limit), 10)) } path += "/hist" @@ -451,7 +451,7 @@ func (b *Bitfinex) GetCandles(symbol, timeFrame string, start, end, limit int64, var c []Candle for i := range response { c = append(c, Candle{ - Timestamp: int64(response[i][0].(float64)), + Timestamp: time.Unix(int64(response[i][0].(float64)/1000), 0), Open: response[i][1].(float64), Close: response[i][2].(float64), High: response[i][3].(float64), @@ -476,7 +476,7 @@ func (b *Bitfinex) GetCandles(symbol, timeFrame string, start, end, limit int64, } return []Candle{{ - Timestamp: int64(response[0].(float64)), + Timestamp: time.Unix(int64(response[0].(float64))/1000, 0), Open: response[1].(float64), Close: response[2].(float64), High: response[3].(float64), diff --git a/exchanges/bitfinex/bitfinex_test.go b/exchanges/bitfinex/bitfinex_test.go index d5bb9e78..0efd5788 100644 --- a/exchanges/bitfinex/bitfinex_test.go +++ b/exchanges/bitfinex/bitfinex_test.go @@ -13,6 +13,7 @@ import ( "github.com/thrasher-corp/gocryptotrader/currency" exchange "github.com/thrasher-corp/gocryptotrader/exchanges" "github.com/thrasher-corp/gocryptotrader/exchanges/asset" + "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/order" "github.com/thrasher-corp/gocryptotrader/exchanges/sharedtestvalues" "github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler" @@ -153,7 +154,7 @@ func TestGetLends(t *testing.T) { func TestGetCandles(t *testing.T) { t.Parallel() - _, err := b.GetCandles("fUSD", "1m", 0, 0, 10, true, false) + _, err := b.GetCandles("fUSD", "1m", 0, 0, 10, true) if err != nil { t.Fatal(err) } @@ -1210,3 +1211,112 @@ func TestWsNotifications(t *testing.T) { t.Error(err) } } + +func TestGetHistoricCandles(t *testing.T) { + currencyPair := currency.NewPairFromString("BTCUSD") + startTime := time.Now().Add(-time.Hour * 24) + _, err := b.GetHistoricCandles(currencyPair, asset.Spot, startTime, time.Now(), kline.OneMin) + if err != nil { + t.Fatal(err) + } + + _, err = b.GetHistoricCandles(currencyPair, asset.Spot, startTime, time.Now(), kline.OneMin*1337) + if err == nil { + t.Fatal(err) + } +} + +func TestGetHistoricCandlesExtended(t *testing.T) { + currencyPair := currency.NewPairFromString("TBTCUSD") + startTime := time.Now().Add(-time.Hour * 24) + _, err := b.GetHistoricCandlesExtended(currencyPair, asset.Spot, startTime, time.Now(), kline.OneHour) + if err != nil { + t.Fatal(err) + } + + _, err = b.GetHistoricCandlesExtended(currencyPair, asset.Spot, startTime, time.Now(), kline.OneMin*1337) + if err == nil { + t.Fatal(err) + } +} + +func TestFixCasing(t *testing.T) { + ret := b.fixCasing(currency.NewPairFromString("BTCUSD"), asset.Spot) + if ret != "tBTCUSD" { + t.Errorf("unexpected result: %v", ret) + } + + ret = b.fixCasing(currency.NewPairFromString("TBTCUSD"), asset.Spot) + if ret != "tBTCUSD" { + t.Errorf("unexpected result: %v", ret) + } + + ret = b.fixCasing(currency.NewPairFromString("tBTCUSD"), asset.Spot) + if ret != "tBTCUSD" { + t.Errorf("unexpected result: %v", ret) + } + + ret = b.fixCasing(currency.NewPairFromString("BTCUSD"), asset.Margin) + if ret != "fBTCUSD" { + t.Errorf("unexpected result: %v", ret) + } + + ret = b.fixCasing(currency.NewPairFromString("BTCUSD"), asset.Spot) + if ret != "tBTCUSD" { + t.Errorf("unexpected result: %v", ret) + } + + ret = b.fixCasing(currency.NewPairFromString("FUNETH"), asset.Spot) + if ret != "tFUNETH" { + t.Errorf("unexpected result: %v", ret) + } + + ret = b.fixCasing(currency.NewPairFromString("TNBUSD"), asset.Spot) + if ret != "tTNBUSD" { + t.Errorf("unexpected result: %v", ret) + } + + ret = b.fixCasing(currency.NewPairFromString("tTNBUSD"), asset.Spot) + if ret != "tTNBUSD" { + t.Errorf("unexpected result: %v", ret) + } +} + +func Test_FormatExchangeKlineInterval(t *testing.T) { + testCases := []struct { + name string + interval kline.Interval + output string + }{ + { + "OneMin", + kline.OneMin, + "1m", + }, + { + "OneDay", + kline.OneDay, + "1D", + }, + { + "OneWeek", + kline.OneWeek, + "7D", + }, + { + "TwoWeeks", + kline.OneWeek * 2, + "14D", + }, + } + + for x := range testCases { + test := testCases[x] + t.Run(test.name, func(t *testing.T) { + ret := b.FormatExchangeKlineInterval(test.interval) + if ret != test.output { + t.Fatalf("unexpected result return expected: %v received: %v", test.output, ret) + } + }) + } +} diff --git a/exchanges/bitfinex/bitfinex_types.go b/exchanges/bitfinex/bitfinex_types.go index 2b4fe10f..6752c973 100644 --- a/exchanges/bitfinex/bitfinex_types.go +++ b/exchanges/bitfinex/bitfinex_types.go @@ -1,6 +1,10 @@ package bitfinex -import "time" +import ( + "time" + + "github.com/thrasher-corp/gocryptotrader/exchanges/order" +) // AcceptedOrderType defines the accepted market types, exchange strings denote // non-contract order types. @@ -71,6 +75,7 @@ type Trade struct { Rate float64 Period int64 Type string + Side order.Side } // Lendbook holds most recent funding data for a relevant currency @@ -388,7 +393,7 @@ type WebsocketTrade struct { // Candle holds OHLC data type Candle struct { - Timestamp int64 + Timestamp time.Time Open float64 Close float64 High float64 diff --git a/exchanges/bitfinex/bitfinex_wrapper.go b/exchanges/bitfinex/bitfinex_wrapper.go index 7b6951f8..7b94995b 100644 --- a/exchanges/bitfinex/bitfinex_wrapper.go +++ b/exchanges/bitfinex/bitfinex_wrapper.go @@ -6,6 +6,7 @@ import ( "strings" "sync" "time" + "unicode" "github.com/thrasher-corp/gocryptotrader/common" "github.com/thrasher-corp/gocryptotrader/config" @@ -119,9 +120,31 @@ func (b *Bitfinex) SetDefaults() { }, WithdrawPermissions: exchange.AutoWithdrawCryptoWithAPIPermission | exchange.AutoWithdrawFiatWithAPIPermission, + Kline: kline.ExchangeCapabilitiesSupported{ + DateRanges: true, + Intervals: true, + }, }, Enabled: exchange.FeaturesEnabled{ AutoPairUpdates: true, + Kline: kline.ExchangeCapabilitiesEnabled{ + Intervals: map[string]bool{ + kline.OneMin.Word(): true, + kline.ThreeMin.Word(): true, + kline.FiveMin.Word(): true, + kline.FifteenMin.Word(): true, + kline.ThirtyMin.Word(): true, + kline.OneHour.Word(): true, + kline.TwoHour.Word(): true, + kline.FourHour.Word(): true, + kline.SixHour.Word(): true, + kline.TwelveHour.Word(): true, + kline.OneDay.Word(): true, + kline.OneWeek.Word(): true, + kline.TwoWeek.Word(): true, + }, + ResultLimit: 10000, + }, }, } @@ -773,7 +796,117 @@ func (b *Bitfinex) ValidateCredentials() error { return b.CheckTransientError(err) } -// GetHistoricCandles returns candles between a time period for a set time interval -func (b *Bitfinex) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval time.Duration) (kline.Item, error) { - return kline.Item{}, common.ErrNotYetImplemented +// FormatExchangeKlineInterval returns Interval to exchange formatted string +func (b *Bitfinex) FormatExchangeKlineInterval(in kline.Interval) string { + switch in { + case kline.OneDay: + return "1D" + case kline.OneWeek: + return "7D" + case kline.OneWeek * 2: + return "14D" + default: + return in.Short() + } +} + +// GetHistoricCandles returns candles between a time period for a set time interval +func (b *Bitfinex) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + if !b.KlineIntervalEnabled(interval) { + return kline.Item{}, kline.ErrorKline{ + Interval: interval, + } + } + + if kline.TotalCandlesPerInterval(start, end, interval) > b.Features.Enabled.Kline.ResultLimit { + return kline.Item{}, errors.New(kline.ErrRequestExceedsExchangeLimits) + } + + candles, err := b.GetCandles(b.fixCasing(pair, a), b.FormatExchangeKlineInterval(interval), + start.Unix()*1000, end.Unix()*1000, + b.Features.Enabled.Kline.ResultLimit, true) + if err != nil { + return kline.Item{}, err + } + ret := kline.Item{ + Exchange: b.Name, + Pair: pair, + Asset: a, + Interval: interval, + } + + for x := range candles { + ret.Candles = append(ret.Candles, kline.Candle{ + Time: candles[x].Timestamp, + Open: candles[x].Open, + High: candles[x].Close, + Low: candles[x].Low, + Close: candles[x].Close, + Volume: candles[x].Volume, + }) + } + + ret.SortCandlesByTimestamp(false) + return ret, nil +} + +// GetHistoricCandlesExtended returns candles between a time period for a set time interval +func (b *Bitfinex) GetHistoricCandlesExtended(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + if !b.KlineIntervalEnabled(interval) { + return kline.Item{}, kline.ErrorKline{ + Interval: interval, + } + } + + ret := kline.Item{ + Exchange: b.Name, + Pair: pair, + Asset: a, + Interval: interval, + } + + dates := kline.CalcDateRanges(start, end, interval, b.Features.Enabled.Kline.ResultLimit) + for x := range dates { + candles, err := b.GetCandles(b.fixCasing(pair, a), b.FormatExchangeKlineInterval(interval), + dates[x].Start.Unix()*1000, dates[x].End.Unix()*1000, + b.Features.Enabled.Kline.ResultLimit, true) + if err != nil { + return kline.Item{}, err + } + + for i := range candles { + ret.Candles = append(ret.Candles, kline.Candle{ + Time: candles[i].Timestamp, + Open: candles[i].Open, + High: candles[i].Close, + Low: candles[i].Low, + Close: candles[i].Close, + Volume: candles[i].Volume, + }) + } + } + + ret.SortCandlesByTimestamp(false) + return ret, nil +} + +func (b *Bitfinex) fixCasing(in currency.Pair, a asset.Item) string { + var checkString [2]byte + if a == asset.Spot { + checkString[0] = 't' + checkString[1] = 'T' + } else if a == asset.Margin { + checkString[0] = 'f' + checkString[1] = 'F' + } + + y := in.Base.String() + if (y[0] != checkString[0] && y[0] != checkString[1]) || + (y[0] == checkString[1] && y[1] == checkString[1]) || in.Base == currency.TNB { + return string(checkString[0]) + b.FormatExchangeCurrency(in, a).Upper().String() + } + + runes := []rune(b.FormatExchangeCurrency(in, a).Upper().String()) + runes[0] = unicode.ToLower(runes[0]) + return string(runes) } diff --git a/exchanges/bitfinex/ratelimit.go b/exchanges/bitfinex/ratelimit.go index ee0d90e7..839d664c 100644 --- a/exchanges/bitfinex/ratelimit.go +++ b/exchanges/bitfinex/ratelimit.go @@ -95,7 +95,7 @@ const ( platformStatus request.EndpointLimit = iota tickerBatch tickerFunction - trade + tradeRateLimit orderbookFunction stats candle @@ -262,7 +262,7 @@ func (r *RateLimit) Limit(f request.EndpointLimit) error { time.Sleep(r.TickerBatch.Reserve().Delay()) case tickerFunction: time.Sleep(r.Ticker.Reserve().Delay()) - case trade: + case tradeRateLimit: time.Sleep(r.Trade.Reserve().Delay()) case orderbookFunction: time.Sleep(r.Orderbook.Reserve().Delay()) diff --git a/exchanges/bitflyer/bitflyer_wrapper.go b/exchanges/bitflyer/bitflyer_wrapper.go index f954fc6c..aff31ac4 100644 --- a/exchanges/bitflyer/bitflyer_wrapper.go +++ b/exchanges/bitflyer/bitflyer_wrapper.go @@ -392,6 +392,11 @@ func (b *Bitflyer) ValidateCredentials() error { } // GetHistoricCandles returns candles between a time period for a set time interval -func (b *Bitflyer) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval time.Duration) (kline.Item, error) { - return kline.Item{}, common.ErrNotYetImplemented +func (b *Bitflyer) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + return kline.Item{}, common.ErrFunctionNotSupported +} + +// GetHistoricCandlesExtended returns candles between a time period for a set time interval +func (b *Bitflyer) GetHistoricCandlesExtended(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + return kline.Item{}, common.ErrFunctionNotSupported } diff --git a/exchanges/bithumb/bithumb.go b/exchanges/bithumb/bithumb.go index 61bd4b4d..bd0b1272 100644 --- a/exchanges/bithumb/bithumb.go +++ b/exchanges/bithumb/bithumb.go @@ -26,6 +26,7 @@ const ( publicTicker = "/public/ticker/" publicOrderBook = "/public/orderbook/" publicTransactionHistory = "/public/transaction_history/" + publicCandleStick = "/public/candlestick/" privateAccInfo = "/info/account" privateAccBalance = "/info/balance" @@ -599,3 +600,10 @@ var errCode = map[string]string{ "5600": "CUSTOM NOTICE (상황별 에러 메시지 출력) usually means transaction not allowed", "5900": "Unknown Error", } + +// GetCandleStick returns candle stick data for requested pair +func (b *Bithumb) GetCandleStick(symbol, interval string) (resp OHLCVResponse, err error) { + path := b.API.Endpoints.URL + publicCandleStick + symbol + "/" + interval + err = b.SendHTTPRequest(path, &resp) + return +} diff --git a/exchanges/bithumb/bithumb_test.go b/exchanges/bithumb/bithumb_test.go index 8a88d8d5..c27e3755 100644 --- a/exchanges/bithumb/bithumb_test.go +++ b/exchanges/bithumb/bithumb_test.go @@ -4,12 +4,15 @@ import ( "log" "os" "testing" + "time" "github.com/thrasher-corp/gocryptotrader/common" "github.com/thrasher-corp/gocryptotrader/config" "github.com/thrasher-corp/gocryptotrader/core" "github.com/thrasher-corp/gocryptotrader/currency" exchange "github.com/thrasher-corp/gocryptotrader/exchanges" + "github.com/thrasher-corp/gocryptotrader/exchanges/asset" + "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/order" "github.com/thrasher-corp/gocryptotrader/portfolio/banking" "github.com/thrasher-corp/gocryptotrader/portfolio/withdraw" @@ -523,3 +526,28 @@ func TestGetDepositAddress(t *testing.T) { } } } + +func TestGetCandleStick(t *testing.T) { + _, err := b.GetCandleStick("BTC_KRW", "1m") + if err != nil { + t.Fatal(err) + } +} + +func TestGetHistoricCandles(t *testing.T) { + currencyPair := currency.NewPairFromString("BTC_KRW") + startTime := time.Now().Add(-time.Hour * 24) + _, err := b.GetHistoricCandles(currencyPair, asset.Spot, startTime, time.Now(), kline.OneDay) + if err != nil { + t.Fatal(err) + } +} + +func TestGetHistoricCandlesExtended(t *testing.T) { + currencyPair := currency.NewPairFromString("BTC_KRW") + startTime := time.Now().Add(-time.Hour * 24) + _, err := b.GetHistoricCandlesExtended(currencyPair, asset.Spot, startTime, time.Now(), kline.OneDay) + if err != nil { + t.Fatal(err) + } +} diff --git a/exchanges/bithumb/bithumb_types.go b/exchanges/bithumb/bithumb_types.go index c483c333..f9179fbd 100644 --- a/exchanges/bithumb/bithumb_types.go +++ b/exchanges/bithumb/bithumb_types.go @@ -284,3 +284,9 @@ type FullBalance struct { Xcoin map[string]float64 Available map[string]float64 } + +// OHLCVResponse holds returned kline data +type OHLCVResponse struct { + Status string `json:"status"` + Data [][6]interface{} `json:"data"` +} diff --git a/exchanges/bithumb/bithumb_wrapper.go b/exchanges/bithumb/bithumb_wrapper.go index bc059c62..3baeab20 100644 --- a/exchanges/bithumb/bithumb_wrapper.go +++ b/exchanges/bithumb/bithumb_wrapper.go @@ -64,6 +64,7 @@ func (b *Bithumb) SetDefaults() { UseGlobalFormat: true, RequestFormat: ¤cy.PairFormat{ Uppercase: true, + Delimiter: "_", }, ConfigFormat: ¤cy.PairFormat{ Uppercase: true, @@ -95,15 +96,31 @@ func (b *Bithumb) SetDefaults() { FiatWithdrawalFee: true, CryptoDepositFee: true, CryptoWithdrawalFee: true, + KlineFetching: true, }, WithdrawPermissions: exchange.AutoWithdrawCrypto | exchange.AutoWithdrawFiat, + Kline: kline.ExchangeCapabilitiesSupported{ + Intervals: true, + }, }, Enabled: exchange.FeaturesEnabled{ AutoPairUpdates: true, + Kline: kline.ExchangeCapabilitiesEnabled{ + Intervals: map[string]bool{ + kline.OneMin.Word(): true, + kline.ThreeMin.Word(): true, + kline.FiveMin.Word(): true, + kline.TenMin.Word(): true, + kline.ThirtyMin.Word(): true, + kline.OneHour.Word(): true, + kline.SixHour.Word(): true, + kline.TwelveHour.Word(): true, + kline.OneDay.Word(): true, + }, + }, }, } - b.Requester = request.New(b.Name, common.NewHTTPClientWithTimeout(exchange.DefaultHTTPTimeout), request.WithLimiter(SetRateLimit())) @@ -594,7 +611,94 @@ func (b *Bithumb) ValidateCredentials() error { return b.CheckTransientError(err) } -// GetHistoricCandles returns candles between a time period for a set time interval -func (b *Bithumb) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval time.Duration) (kline.Item, error) { - return kline.Item{}, common.ErrNotYetImplemented +// FormatExchangeKlineInterval returns Interval to exchange formatted string +func (b *Bithumb) FormatExchangeKlineInterval(in kline.Interval) string { + return in.Short() +} + +// GetHistoricCandles returns candles between a time period for a set time interval +func (b *Bithumb) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + if !b.KlineIntervalEnabled(interval) { + return kline.Item{}, kline.ErrorKline{ + Interval: interval, + } + } + + candle, err := b.GetCandleStick(b.FormatExchangeCurrency(pair, a).String(), b.FormatExchangeKlineInterval(interval)) + if err != nil { + return kline.Item{}, err + } + + ret := kline.Item{ + Exchange: b.Name, + Pair: pair, + Interval: interval, + } + + for x := range candle.Data { + var tempCandle kline.Candle + + tempTime := candle.Data[x][0].(float64) + timestamp := time.Unix(0, int64(tempTime)*int64(time.Millisecond)) + if timestamp.Before(start) { + continue + } + if timestamp.After(end) { + break + } + tempCandle.Time = timestamp + + open, ok := candle.Data[x][1].(string) + if !ok { + return kline.Item{}, errors.New("open conversion failed") + } + tempCandle.Open, err = strconv.ParseFloat(open, 64) + if err != nil { + return kline.Item{}, err + } + high, ok := candle.Data[x][2].(string) + if !ok { + return kline.Item{}, errors.New("high conversion failed") + } + tempCandle.High, err = strconv.ParseFloat(high, 64) + if err != nil { + return kline.Item{}, err + } + + low, ok := candle.Data[x][3].(string) + if !ok { + return kline.Item{}, errors.New("low conversion failed") + } + tempCandle.Low, err = strconv.ParseFloat(low, 64) + if err != nil { + return kline.Item{}, err + } + + closeTemp, ok := candle.Data[x][4].(string) + if !ok { + return kline.Item{}, errors.New("close conversion failed") + } + tempCandle.Close, err = strconv.ParseFloat(closeTemp, 64) + if err != nil { + return kline.Item{}, err + } + + vol, ok := candle.Data[x][5].(string) + if !ok { + return kline.Item{}, errors.New("vol conversion failed") + } + tempCandle.Volume, err = strconv.ParseFloat(vol, 64) + if err != nil { + return kline.Item{}, err + } + ret.Candles = append(ret.Candles, tempCandle) + } + + ret.SortCandlesByTimestamp(false) + return ret, nil +} + +// GetHistoricCandlesExtended returns candles between a time period for a set time interval +func (b *Bithumb) GetHistoricCandlesExtended(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + return b.GetHistoricCandles(pair, a, start, end, interval) } diff --git a/exchanges/bitmex/bitmex_test.go b/exchanges/bitmex/bitmex_test.go index 8a5b8a18..82baab39 100644 --- a/exchanges/bitmex/bitmex_test.go +++ b/exchanges/bitmex/bitmex_test.go @@ -371,7 +371,11 @@ func TestGetTrade(t *testing.T) { } func TestGetPreviousTrades(t *testing.T) { - _, err := b.GetPreviousTrades(&TradeGetBucketedParams{}) + _, err := b.GetPreviousTrades(&TradeGetBucketedParams{ + Symbol: "XBTBTC", + Start: int32(time.Now().Add(-time.Hour * 24).Unix()), + Columns: "open,high,low,close,volume", + }) if err == nil { t.Error("GetPreviousTrades() Expected error") } diff --git a/exchanges/bitmex/bitmex_wrapper.go b/exchanges/bitmex/bitmex_wrapper.go index a23bcfe6..68a38f93 100644 --- a/exchanges/bitmex/bitmex_wrapper.go +++ b/exchanges/bitmex/bitmex_wrapper.go @@ -690,6 +690,11 @@ func (b *Bitmex) ValidateCredentials() error { } // GetHistoricCandles returns candles between a time period for a set time interval -func (b *Bitmex) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval time.Duration) (kline.Item, error) { - return kline.Item{}, common.ErrNotYetImplemented +func (b *Bitmex) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + return kline.Item{}, common.ErrFunctionNotSupported +} + +// GetHistoricCandlesExtended returns candles between a time period for a set time interval +func (b *Bitmex) GetHistoricCandlesExtended(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + return kline.Item{}, common.ErrFunctionNotSupported } diff --git a/exchanges/bitstamp/bitstamp.go b/exchanges/bitstamp/bitstamp.go index b71ac538..384a61f1 100644 --- a/exchanges/bitstamp/bitstamp.go +++ b/exchanges/bitstamp/bitstamp.go @@ -54,6 +54,7 @@ const ( bitstampAPIXrpDeposit = "xrp_address" bitstampAPIReturnType = "string" bitstampAPITradingPairsInfo = "trading-pairs-info" + bitstampOHLC = "ohlc" bitstampRateInterval = time.Minute * 10 bitstampRequestRate = 8000 @@ -579,6 +580,24 @@ func (b *Bitstamp) GetUnconfirmedBitcoinDeposits() ([]UnconfirmedBTCTransactions b.SendAuthenticatedHTTPRequest(bitstampAPIUnconfirmedBitcoin, false, nil, &response) } +// OHLC returns OHLCV data for step (interval) +func (b *Bitstamp) OHLC(currency string, start, end time.Time, step, limit string) (resp OHLCResponse, err error) { + var v = url.Values{} + v.Add("limit", limit) + v.Add("step", step) + + if start.After(end) && !end.IsZero() { + return resp, errors.New("start time cannot be after end time") + } + if !start.IsZero() { + v.Add("start", strconv.FormatInt(start.Unix(), 10)) + } + if !end.IsZero() { + v.Add("end", strconv.FormatInt(end.Unix(), 10)) + } + return resp, b.SendHTTPRequest(common.EncodeURLValues(b.API.Endpoints.URL+"/v"+bitstampAPIVersion+"/"+bitstampOHLC+"/"+currency, v), &resp) +} + // TransferAccountBalance transfers funds from either a main or sub account // amount - to transfers // currency - which currency to transfer diff --git a/exchanges/bitstamp/bitstamp_test.go b/exchanges/bitstamp/bitstamp_test.go index fc8b8b68..7824c752 100644 --- a/exchanges/bitstamp/bitstamp_test.go +++ b/exchanges/bitstamp/bitstamp_test.go @@ -3,10 +3,13 @@ package bitstamp import ( "net/url" "testing" + "time" "github.com/thrasher-corp/gocryptotrader/core" "github.com/thrasher-corp/gocryptotrader/currency" exchange "github.com/thrasher-corp/gocryptotrader/exchanges" + "github.com/thrasher-corp/gocryptotrader/exchanges/asset" + "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/order" "github.com/thrasher-corp/gocryptotrader/portfolio/banking" "github.com/thrasher-corp/gocryptotrader/portfolio/withdraw" @@ -664,3 +667,33 @@ func TestWsRequestReconnect(t *testing.T) { t.Error(err) } } + +func TestBitstamp_OHLC(t *testing.T) { + start := time.Unix(1546300800, 0) + end := time.Unix(1577836799, 0) + _, err := b.OHLC("btcusd", start, end, "60", "10") + if err != nil { + t.Fatal(err) + } +} + +func TestBitstamp_GetHistoricCandles(t *testing.T) { + currencyPair := currency.NewPairFromString("btcusd") + start := time.Unix(1546300800, 0) + end := time.Unix(1577836799, 0) + + _, err := b.GetHistoricCandles(currencyPair, asset.Spot, start, end, kline.OneDay) + if err != nil { + t.Fatal(err) + } +} + +func TestBitstamp_GetHistoricCandlesExtended(t *testing.T) { + currencyPair := currency.NewPairFromString("btcusd") + start := time.Unix(1546300800, 0) + end := time.Unix(1577836799, 0) + _, err := b.GetHistoricCandlesExtended(currencyPair, asset.Spot, start, end, kline.OneDay) + if err != nil { + t.Fatal(err) + } +} diff --git a/exchanges/bitstamp/bitstamp_types.go b/exchanges/bitstamp/bitstamp_types.go index e5e42d5e..dfe6982e 100644 --- a/exchanges/bitstamp/bitstamp_types.go +++ b/exchanges/bitstamp/bitstamp_types.go @@ -219,3 +219,18 @@ type websocketOrderBook struct { Timestamp int64 `json:"timestamp,string"` Microtimestamp string `json:"microtimestamp"` } + +// OHLCResponse holds returned candle data +type OHLCResponse struct { + Data struct { + Pair string `json:"pair"` + OHLCV []struct { + Timestamp int64 `json:"timestamp,string"` + Open float64 `json:"open,string"` + High float64 `json:"high,string"` + Low float64 `json:"low,string"` + Close float64 `json:"close,string"` + Volume float64 `json:"volume,string"` + } `json:"ohlc"` + } `json:"data"` +} diff --git a/exchanges/bitstamp/bitstamp_wrapper.go b/exchanges/bitstamp/bitstamp_wrapper.go index 5235168c..79b2d1ca 100644 --- a/exchanges/bitstamp/bitstamp_wrapper.go +++ b/exchanges/bitstamp/bitstamp_wrapper.go @@ -103,9 +103,30 @@ func (b *Bitstamp) SetDefaults() { }, WithdrawPermissions: exchange.AutoWithdrawCrypto | exchange.AutoWithdrawFiat, + Kline: kline.ExchangeCapabilitiesSupported{ + Intervals: true, + DateRanges: true, + }, }, Enabled: exchange.FeaturesEnabled{ AutoPairUpdates: true, + Kline: kline.ExchangeCapabilitiesEnabled{ + Intervals: map[string]bool{ + kline.OneMin.Word(): true, + kline.ThreeMin.Word(): true, + kline.FiveMin.Word(): true, + kline.FifteenMin.Word(): true, + kline.ThirtyMin.Word(): true, + kline.OneHour.Word(): true, + kline.TwoHour.Word(): true, + kline.FourHour.Word(): true, + kline.SixHour.Word(): true, + kline.TwelveHour.Word(): true, + kline.OneDay.Word(): true, + kline.ThreeDay.Word(): true, + }, + ResultLimit: 1000, + }, }, } @@ -677,6 +698,95 @@ func (b *Bitstamp) ValidateCredentials() error { } // GetHistoricCandles returns candles between a time period for a set time interval -func (b *Bitstamp) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval time.Duration) (kline.Item, error) { - return kline.Item{}, common.ErrNotYetImplemented +func (b *Bitstamp) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + if !b.KlineIntervalEnabled(interval) { + return kline.Item{}, kline.ErrorKline{ + Interval: interval, + } + } + + ret := kline.Item{ + Exchange: b.Name, + Pair: pair, + Asset: a, + Interval: interval, + } + + candles, err := b.OHLC( + b.FormatExchangeCurrency(pair, a).Lower().String(), + start, + end, + b.FormatExchangeKlineInterval(interval), + strconv.FormatInt(int64(b.Features.Enabled.Kline.ResultLimit), 10), + ) + + if err != nil { + return kline.Item{}, err + } + + for x := range candles.Data.OHLCV { + if time.Unix(candles.Data.OHLCV[x].Timestamp, 0).Before(start) || + time.Unix(candles.Data.OHLCV[x].Timestamp, 0).After(end) { + continue + } + ret.Candles = append(ret.Candles, kline.Candle{ + Time: time.Unix(candles.Data.OHLCV[x].Timestamp, 0), + Open: candles.Data.OHLCV[x].Open, + High: candles.Data.OHLCV[x].High, + Low: candles.Data.OHLCV[x].Low, + Close: candles.Data.OHLCV[x].Close, + Volume: candles.Data.OHLCV[x].Volume, + }) + } + + ret.SortCandlesByTimestamp(false) + return ret, nil +} + +// GetHistoricCandlesExtended returns candles between a time period for a set time interval +func (b *Bitstamp) GetHistoricCandlesExtended(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + if !b.KlineIntervalEnabled(interval) { + return kline.Item{}, kline.ErrorKline{ + Interval: interval, + } + } + + ret := kline.Item{ + Exchange: b.Name, + Pair: pair, + Asset: a, + Interval: interval, + } + + dates := kline.CalcDateRanges(start, end, interval, b.Features.Enabled.Kline.ResultLimit) + for x := range dates { + candles, err := b.OHLC( + b.FormatExchangeCurrency(pair, a).Lower().String(), + dates[x].Start, + dates[x].End, + b.FormatExchangeKlineInterval(interval), + strconv.FormatInt(int64(b.Features.Enabled.Kline.ResultLimit), 10), + ) + if err != nil { + return kline.Item{}, err + } + + for i := range candles.Data.OHLCV { + if time.Unix(candles.Data.OHLCV[i].Timestamp, 0).Before(start) || + time.Unix(candles.Data.OHLCV[i].Timestamp, 0).After(end) { + continue + } + ret.Candles = append(ret.Candles, kline.Candle{ + Time: time.Unix(candles.Data.OHLCV[i].Timestamp, 0), + Open: candles.Data.OHLCV[i].Open, + High: candles.Data.OHLCV[i].High, + Low: candles.Data.OHLCV[i].Low, + Close: candles.Data.OHLCV[i].Close, + Volume: candles.Data.OHLCV[i].Volume, + }) + } + } + + ret.SortCandlesByTimestamp(false) + return ret, nil } diff --git a/exchanges/bittrex/bittrex_wrapper.go b/exchanges/bittrex/bittrex_wrapper.go index 83263bea..032aa1f7 100644 --- a/exchanges/bittrex/bittrex_wrapper.go +++ b/exchanges/bittrex/bittrex_wrapper.go @@ -591,6 +591,11 @@ func (b *Bittrex) ValidateCredentials() error { } // GetHistoricCandles returns candles between a time period for a set time interval -func (b *Bittrex) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval time.Duration) (kline.Item, error) { - return kline.Item{}, common.ErrNotYetImplemented +func (b *Bittrex) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + return kline.Item{}, common.ErrFunctionNotSupported +} + +// GetHistoricCandlesExtended returns candles between a time period for a set time interval +func (b *Bittrex) GetHistoricCandlesExtended(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + return kline.Item{}, common.ErrFunctionNotSupported } diff --git a/exchanges/btcmarkets/btcmarkets.go b/exchanges/btcmarkets/btcmarkets.go index 291ba135..870dc56c 100644 --- a/exchanges/btcmarkets/btcmarkets.go +++ b/exchanges/btcmarkets/btcmarkets.go @@ -17,8 +17,6 @@ import ( "github.com/thrasher-corp/gocryptotrader/common/crypto" "github.com/thrasher-corp/gocryptotrader/currency" exchange "github.com/thrasher-corp/gocryptotrader/exchanges" - "github.com/thrasher-corp/gocryptotrader/exchanges/asset" - "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/request" "github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler" ) @@ -68,13 +66,13 @@ const ( stop = "Stop" takeProfit = "Take Profit" - subscribe = "subscribe" - fundChange = "fundChange" - orderChange = "orderChange" - heartbeat = "heartbeat" - tick = "tick" - wsOB = "orderbookUpdate" - trade = "trade" + subscribe = "subscribe" + fundChange = "fundChange" + orderChange = "orderChange" + heartbeat = "heartbeat" + tick = "tick" + wsOB = "orderbookUpdate" + tradeEndPoint = "tradeEndPoint" ) // BTCMarkets is the overarching type across the BTCMarkets package @@ -164,27 +162,15 @@ func (b *BTCMarkets) GetOrderbook(marketID string, level int64) (Orderbook, erro } // GetMarketCandles gets candles for specified currency pair -func (b *BTCMarkets) GetMarketCandles(marketID string, timeWindow time.Duration, from, to time.Time, before, after, limit int64) (kline.Item, error) { +func (b *BTCMarkets) GetMarketCandles(marketID, timeWindow string, from, to time.Time, before, after, limit int64) (out CandleResponse, err error) { if (before > 0) && (after >= 0) { - return kline.Item{}, errors.New("BTCMarkets only supports either before or after, not both") + return out, errors.New("BTCMarkets only supports either before or after, not both") } - var temp [][]string params := url.Values{} + params.Set("timeWindow", timeWindow) - var intervalStr string - switch timeWindow { - case kline.OneMin: - intervalStr = "1m" - case kline.OneHour: - intervalStr = "1h" - case kline.OneDay: - intervalStr = "1d" - default: - return kline.Item{}, errInvalidTimeInterval - } - - if timeWindow != 0 { - params.Set("timeWindow", intervalStr) + if from.After(to) && !to.IsZero() { + return out, errors.New("start time cannot be after end time") } if !from.IsZero() { params.Set("from", from.UTC().Format(time.RFC3339)) @@ -201,49 +187,7 @@ func (b *BTCMarkets) GetMarketCandles(marketID string, timeWindow time.Duration, if limit > 0 { params.Set("limit", strconv.FormatInt(limit, 10)) } - err := b.SendHTTPRequest(btcMarketsUnauthPath+marketID+btcMarketsCandles+params.Encode(), - &temp) - if err != nil { - return kline.Item{}, err - } - ret := kline.Item{ - Exchange: b.Name, - Pair: currency.NewPairFromString(marketID), - Asset: asset.Spot, - Interval: timeWindow, - } - - var tempData kline.Candle - var tempTime time.Time - for x := range temp { - tempTime, err = time.Parse(time.RFC3339, temp[x][0]) - if err != nil { - return kline.Item{}, err - } - tempData.Time = tempTime - tempData.Open, err = strconv.ParseFloat(temp[x][1], 64) - if err != nil { - return kline.Item{}, err - } - tempData.High, err = strconv.ParseFloat(temp[x][2], 64) - if err != nil { - return kline.Item{}, err - } - tempData.Low, err = strconv.ParseFloat(temp[x][3], 64) - if err != nil { - return kline.Item{}, err - } - tempData.Close, err = strconv.ParseFloat(temp[x][4], 64) - if err != nil { - return kline.Item{}, err - } - tempData.Volume, err = strconv.ParseFloat(temp[x][5], 64) - if err != nil { - return kline.Item{}, err - } - ret.Candles = append(ret.Candles, tempData) - } - return ret, nil + return out, b.SendHTTPRequest(btcMarketsUnauthPath+marketID+btcMarketsCandles+params.Encode(), &out) } // GetTickers gets multiple tickers diff --git a/exchanges/btcmarkets/btcmarkets_test.go b/exchanges/btcmarkets/btcmarkets_test.go index c5c3be6f..b0df0e52 100644 --- a/exchanges/btcmarkets/btcmarkets_test.go +++ b/exchanges/btcmarkets/btcmarkets_test.go @@ -100,7 +100,7 @@ func TestGetOrderbook(t *testing.T) { func TestGetMarketCandles(t *testing.T) { t.Parallel() - _, err := b.GetMarketCandles(BTCAUD, kline.OneHour, time.Now().UTC().Add(-time.Hour*24), time.Now().UTC(), -1, -1, -1) + _, err := b.GetMarketCandles(BTCAUD, "1h", time.Now().UTC().Add(-time.Hour*24), time.Now().UTC(), -1, -1, -1) if err != nil { t.Error(err) } @@ -727,8 +727,49 @@ func TestBTCMarkets_GetHistoricCandles(t *testing.T) { } _, err = b.GetHistoricCandles(p, asset.Spot, time.Now().Add(-time.Hour*24).UTC(), time.Now().UTC(), kline.FifteenMin) if err != nil { - if !errors.Is(err, errInvalidTimeInterval) { + if !errors.As(err, &kline.ErrorKline{}) { t.Fatal(err) } } } + +func TestBTCMarkets_GetHistoricCandlesExtended(t *testing.T) { + start := time.Now().AddDate(0, 0, -1001) + end := time.Now() + p := currency.NewPairFromString(BTCAUD) + _, err := b.GetHistoricCandlesExtended(p, asset.Spot, start, end, kline.OneDay) + if err != nil { + t.Fatal(err) + } +} + +func Test_FormatExchangeKlineInterval(t *testing.T) { + testCases := []struct { + name string + interval kline.Interval + output string + }{ + { + "OneMin", + kline.OneMin, + "1m", + }, + { + "OneDay", + kline.OneDay, + "1d", + }, + } + + for x := range testCases { + test := testCases[x] + + t.Run(test.name, func(t *testing.T) { + ret := b.FormatExchangeKlineInterval(test.interval) + + if ret != test.output { + t.Fatalf("unexpected result return expected: %v received: %v", test.output, ret) + } + }) + } +} diff --git a/exchanges/btcmarkets/btcmarkets_types.go b/exchanges/btcmarkets/btcmarkets_types.go index d79f3b4a..0592296f 100644 --- a/exchanges/btcmarkets/btcmarkets_types.go +++ b/exchanges/btcmarkets/btcmarkets_types.go @@ -37,6 +37,7 @@ type Trade struct { Amount float64 `json:"amount,string"` Price float64 `json:"price,string"` Timestamp time.Time `json:"timestamp"` + Side string `json:"side"` } // tempOrderbook stores orderbook data @@ -433,3 +434,6 @@ type WsError struct { Code int64 `json:"code"` Message string `json:"message"` } + +// CandleResponse holds OHLCV data for exchange +type CandleResponse [][6]string diff --git a/exchanges/btcmarkets/btcmarkets_websocket.go b/exchanges/btcmarkets/btcmarkets_websocket.go index 75d7352e..a5f187a5 100644 --- a/exchanges/btcmarkets/btcmarkets_websocket.go +++ b/exchanges/btcmarkets/btcmarkets_websocket.go @@ -152,7 +152,7 @@ func (b *BTCMarkets) wsHandleData(respRaw []byte) error { Asset: asset.Spot, Exchange: b.Name, } - case trade: + case tradeEndPoint: var trade WsTrade err := json.Unmarshal(respRaw, &trade) if err != nil { @@ -283,7 +283,7 @@ func (b *BTCMarkets) wsHandleData(respRaw []byte) error { } func (b *BTCMarkets) generateDefaultSubscriptions() { - var channels = []string{tick, trade, wsOB} + var channels = []string{tick, tradeEndPoint, wsOB} enabledCurrencies := b.GetEnabledPairs(asset.Spot) var subscriptions []wshandler.WebsocketChannelSubscription for i := range channels { @@ -299,7 +299,7 @@ func (b *BTCMarkets) generateDefaultSubscriptions() { // Subscribe sends a websocket message to receive data from the channel func (b *BTCMarkets) Subscribe(channelToSubscribe wshandler.WebsocketChannelSubscription) error { - unauthChannels := []string{tick, trade, wsOB} + unauthChannels := []string{tick, tradeEndPoint, wsOB} authChannels := []string{fundChange, heartbeat, orderChange} switch { case common.StringDataCompare(unauthChannels, channelToSubscribe.Channel): diff --git a/exchanges/btcmarkets/btcmarkets_wrapper.go b/exchanges/btcmarkets/btcmarkets_wrapper.go index f356a9ff..20abdf82 100644 --- a/exchanges/btcmarkets/btcmarkets_wrapper.go +++ b/exchanges/btcmarkets/btcmarkets_wrapper.go @@ -3,6 +3,7 @@ package btcmarkets import ( "errors" "fmt" + "strconv" "strings" "sync" "time" @@ -107,9 +108,21 @@ func (b *BTCMarkets) SetDefaults() { }, WithdrawPermissions: exchange.AutoWithdrawCrypto | exchange.AutoWithdrawFiat, + Kline: kline.ExchangeCapabilitiesSupported{ + DateRanges: true, + Intervals: true, + }, }, Enabled: exchange.FeaturesEnabled{ AutoPairUpdates: true, + Kline: kline.ExchangeCapabilitiesEnabled{ + Intervals: map[string]bool{ + kline.OneMin.Word(): true, + kline.OneHour.Word(): true, + kline.OneDay.Word(): true, + }, + ResultLimit: 1000, + }, }, } @@ -743,7 +756,135 @@ func (b *BTCMarkets) ValidateCredentials() error { return nil } -// GetHistoricCandles returns candles between a time period for a set time interval -func (b *BTCMarkets) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval time.Duration) (kline.Item, error) { - return b.GetMarketCandles(pair.String(), interval, start, end, -1, -1, 0) +// FormatExchangeKlineInterval returns Interval to exchange formatted string +func (b *BTCMarkets) FormatExchangeKlineInterval(in kline.Interval) string { + if in == kline.OneDay { + return "1d" + } + return in.Short() +} + +// GetHistoricCandles returns candles between a time period for a set time interval +func (b *BTCMarkets) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + if !b.KlineIntervalEnabled(interval) { + return kline.Item{}, kline.ErrorKline{ + Interval: interval, + } + } + + if kline.TotalCandlesPerInterval(start, end, interval) > b.Features.Enabled.Kline.ResultLimit { + return kline.Item{}, errors.New(kline.ErrRequestExceedsExchangeLimits) + } + + candles, err := b.GetMarketCandles(b.FormatExchangeCurrency(pair, a).String(), + b.FormatExchangeKlineInterval(interval), + start, + end, + -1, + -1, + -1) + + if err != nil { + return kline.Item{}, err + } + ret := kline.Item{ + Exchange: b.Name, + Pair: b.FormatExchangeCurrency(pair, a), + Asset: asset.Spot, + Interval: interval, + } + + for x := range candles { + var tempTime time.Time + var tempData kline.Candle + tempTime, err = time.Parse(time.RFC3339, candles[x][0]) + if err != nil { + return kline.Item{}, err + } + tempData.Time = tempTime + tempData.Open, err = strconv.ParseFloat(candles[x][1], 64) + if err != nil { + return kline.Item{}, err + } + tempData.High, err = strconv.ParseFloat(candles[x][2], 64) + if err != nil { + return kline.Item{}, err + } + tempData.Low, err = strconv.ParseFloat(candles[x][3], 64) + if err != nil { + return kline.Item{}, err + } + tempData.Close, err = strconv.ParseFloat(candles[x][4], 64) + if err != nil { + return kline.Item{}, err + } + tempData.Volume, err = strconv.ParseFloat(candles[x][5], 64) + if err != nil { + return kline.Item{}, err + } + ret.Candles = append(ret.Candles, tempData) + } + + ret.SortCandlesByTimestamp(false) + return ret, nil +} + +// GetHistoricCandlesExtended returns candles between a time period for a set time interval +func (b *BTCMarkets) GetHistoricCandlesExtended(p currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + if !b.KlineIntervalEnabled(interval) { + return kline.Item{}, kline.ErrorKline{ + Interval: interval, + } + } + + ret := kline.Item{ + Exchange: b.Name, + Pair: p, + Asset: a, + Interval: interval, + } + + dates := kline.CalcDateRanges(start, end, interval, b.Features.Enabled.Kline.ResultLimit) + for x := range dates { + candles, err := b.GetMarketCandles(p.String(), + b.FormatExchangeKlineInterval(interval), + dates[x].Start, dates[x].End, -1, -1, -1) + if err != nil { + return kline.Item{}, err + } + + for i := range candles { + var tempTime time.Time + var tempData kline.Candle + tempTime, err = time.Parse(time.RFC3339, candles[i][0]) + if err != nil { + return kline.Item{}, err + } + tempData.Time = tempTime + tempData.Open, err = strconv.ParseFloat(candles[i][1], 64) + if err != nil { + return kline.Item{}, err + } + tempData.High, err = strconv.ParseFloat(candles[i][2], 64) + if err != nil { + return kline.Item{}, err + } + tempData.Low, err = strconv.ParseFloat(candles[i][3], 64) + if err != nil { + return kline.Item{}, err + } + tempData.Close, err = strconv.ParseFloat(candles[i][4], 64) + if err != nil { + return kline.Item{}, err + } + tempData.Volume, err = strconv.ParseFloat(candles[i][5], 64) + if err != nil { + return kline.Item{}, err + } + ret.Candles = append(ret.Candles, tempData) + } + } + + ret.SortCandlesByTimestamp(false) + return ret, nil } diff --git a/exchanges/btse/btse_wrapper.go b/exchanges/btse/btse_wrapper.go index 2b246fa8..9efd9ca3 100644 --- a/exchanges/btse/btse_wrapper.go +++ b/exchanges/btse/btse_wrapper.go @@ -653,6 +653,11 @@ func (b *BTSE) ValidateCredentials() error { } // GetHistoricCandles returns candles between a time period for a set time interval -func (b *BTSE) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval time.Duration) (kline.Item, error) { - return kline.Item{}, common.ErrNotYetImplemented +func (b *BTSE) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + return kline.Item{}, common.ErrFunctionNotSupported +} + +// GetHistoricCandlesExtended returns candles between a time period for a set time interval +func (b *BTSE) GetHistoricCandlesExtended(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + return kline.Item{}, common.ErrFunctionNotSupported } diff --git a/exchanges/coinbasepro/coinbasepro_test.go b/exchanges/coinbasepro/coinbasepro_test.go index 27629591..0237027f 100644 --- a/exchanges/coinbasepro/coinbasepro_test.go +++ b/exchanges/coinbasepro/coinbasepro_test.go @@ -14,6 +14,7 @@ import ( "github.com/thrasher-corp/gocryptotrader/currency" exchange "github.com/thrasher-corp/gocryptotrader/exchanges" "github.com/thrasher-corp/gocryptotrader/exchanges/asset" + "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/order" "github.com/thrasher-corp/gocryptotrader/exchanges/sharedtestvalues" "github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler" @@ -79,11 +80,21 @@ func TestGetTrades(t *testing.T) { } func TestGetHistoricRatesGranularityCheck(t *testing.T) { - end := time.Now().UTC() - start := end.Add(-time.Hour * 24) + end := time.Now() + start := end.Add(-time.Hour * 2) p := currency.NewPair(currency.BTC, currency.USD) + _, err := c.GetHistoricCandles(p, asset.Spot, start, end, kline.OneHour) + if err != nil { + t.Fatal(err) + } +} - _, err := c.GetHistoricCandles(p, asset.Spot, start, end, time.Hour) +func TestCoinbasePro_GetHistoricCandlesExtended(t *testing.T) { + start := time.Unix(1546300800, 0) + end := time.Unix(1577836799, 0) + + p := currency.NewPair(currency.BTC, currency.USD) + _, err := c.GetHistoricCandlesExtended(p, asset.Spot, start, end, kline.OneDay) if err != nil { t.Fatal(err) } diff --git a/exchanges/coinbasepro/coinbasepro_wrapper.go b/exchanges/coinbasepro/coinbasepro_wrapper.go index 8a186625..868cd5ea 100644 --- a/exchanges/coinbasepro/coinbasepro_wrapper.go +++ b/exchanges/coinbasepro/coinbasepro_wrapper.go @@ -3,6 +3,7 @@ package coinbasepro import ( "errors" "fmt" + "strconv" "strings" "sync" "time" @@ -112,9 +113,24 @@ func (c *CoinbasePro) SetDefaults() { }, WithdrawPermissions: exchange.AutoWithdrawCryptoWithAPIPermission | exchange.AutoWithdrawFiatWithAPIPermission, + Kline: kline.ExchangeCapabilitiesSupported{ + DateRanges: true, + Intervals: true, + }, }, Enabled: exchange.FeaturesEnabled{ AutoPairUpdates: true, + Kline: kline.ExchangeCapabilitiesEnabled{ + Intervals: map[string]bool{ + kline.OneMin.Word(): true, + kline.FiveMin.Word(): true, + kline.FifteenMin.Word(): true, + kline.OneHour.Word(): true, + kline.SixHour.Word(): true, + kline.OneDay.Word(): true, + }, + ResultLimit: 300, + }, }, } @@ -682,47 +698,38 @@ func (c *CoinbasePro) AuthenticateWebsocket() error { return common.ErrFunctionNotSupported } -// checkInterval checks allowable interval -func checkInterval(i time.Duration) (int64, error) { - switch i.Seconds() { - case 60: - return 60, nil - case 300: - return 300, nil - case 900: - return 900, nil - case 3600: - return 3600, nil - case 21600: - return 21600, nil - case 86400: - return 86400, nil - } - return 0, fmt.Errorf("interval not allowed %v", i.Seconds()) -} - // GetHistoricCandles returns a set of candle between two time periods for a // designated time period -func (c *CoinbasePro) GetHistoricCandles(p currency.Pair, a asset.Item, start, end time.Time, interval time.Duration) (kline.Item, error) { - i, err := checkInterval(interval) +func (c *CoinbasePro) GetHistoricCandles(p currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + if !c.KlineIntervalEnabled(interval) { + return kline.Item{}, kline.ErrorKline{ + Interval: interval, + } + } + + if kline.TotalCandlesPerInterval(start, end, interval) > c.Features.Enabled.Kline.ResultLimit { + return kline.Item{}, errors.New(kline.ErrRequestExceedsExchangeLimits) + } + + candles := kline.Item{ + Exchange: c.Name, + Pair: p, + Asset: a, + Interval: interval, + } + + gran, err := strconv.ParseInt(c.FormatExchangeKlineInterval(interval), 10, 64) if err != nil { return kline.Item{}, err } - history, err := c.GetHistoricRates(c.FormatExchangeCurrency(p, a).String(), start.Format(time.RFC3339), end.Format(time.RFC3339), - i) + gran) if err != nil { return kline.Item{}, err } - var candles kline.Item - candles.Asset = a - candles.Exchange = c.Name - candles.Interval = interval - candles.Pair = p - for x := range history { candles.Candles = append(candles.Candles, kline.Candle{ Time: time.Unix(history[x].Time, 0), @@ -733,9 +740,56 @@ func (c *CoinbasePro) GetHistoricCandles(p currency.Pair, a asset.Item, start, e Volume: history[x].Volume, }) } + + candles.SortCandlesByTimestamp(false) return candles, nil } +// GetHistoricCandlesExtended returns candles between a time period for a set time interval +func (c *CoinbasePro) GetHistoricCandlesExtended(p currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + if !c.KlineIntervalEnabled(interval) { + return kline.Item{}, kline.ErrorKline{ + Interval: interval, + } + } + + ret := kline.Item{ + Exchange: c.Name, + Pair: p, + Asset: a, + Interval: interval, + } + + gran, err := strconv.ParseInt(c.FormatExchangeKlineInterval(interval), 10, 64) + if err != nil { + return kline.Item{}, err + } + dates := kline.CalcDateRanges(start, end, interval, c.Features.Enabled.Kline.ResultLimit) + for x := range dates { + history, err := c.GetHistoricRates(c.FormatExchangeCurrency(p, a).String(), + dates[x].Start.Format(time.RFC3339), + dates[x].End.Format(time.RFC3339), + gran) + if err != nil { + return kline.Item{}, err + } + + for i := range history { + ret.Candles = append(ret.Candles, kline.Candle{ + Time: time.Unix(history[i].Time, 0), + Low: history[i].Low, + High: history[i].High, + Open: history[i].Open, + Close: history[i].Close, + Volume: history[i].Volume, + }) + } + } + + ret.SortCandlesByTimestamp(false) + return ret, nil +} + // ValidateCredentials validates current credentials used for wrapper // functionality func (c *CoinbasePro) ValidateCredentials() error { diff --git a/exchanges/coinbene/coinbene.go b/exchanges/coinbene/coinbene.go index a6efcac5..ffc4d028 100644 --- a/exchanges/coinbene/coinbene.go +++ b/exchanges/coinbene/coinbene.go @@ -613,74 +613,48 @@ func (c *Coinbene) GetSwapOrderbook(symbol string, size int64) (Orderbook, error return s, nil } +// GetKlines data returns the kline data for a specific symbol +func (c *Coinbene) GetKlines(pair string, start, end time.Time, period string) (resp CandleResponse, err error) { + v := url.Values{} + v.Add("symbol", pair) + if !start.IsZero() { + v.Add("start", strconv.FormatInt(start.Unix(), 10)) + } + if !end.IsZero() { + v.Add("end", strconv.FormatInt(end.Unix(), 10)) + } + v.Add("period", period) + + path := common.EncodeURLValues(coinbeneAPIURL+coinbeneAPIVersion+coinbeneSpotKlines, v) + if err = c.SendHTTPRequest(path, contractKline, &resp); err != nil { + return + } + + if resp.Code != 200 { + return resp, errors.New(resp.Message) + } + + return +} + // GetSwapKlines data returns the kline data for a specific symbol -func (c *Coinbene) GetSwapKlines(symbol, startTime, endTime, resolution string) (SwapKlines, error) { - var s SwapKlines +func (c *Coinbene) GetSwapKlines(symbol string, start, end time.Time, resolution string) (resp CandleResponse, err error) { v := url.Values{} v.Set("symbol", symbol) - v.Set("startTime", startTime) - v.Set("endTime", endTime) + if !start.IsZero() { + v.Add("startTime", strconv.FormatInt(start.Unix(), 10)) + } + if !end.IsZero() { + v.Add("endTime", strconv.FormatInt(end.Unix(), 10)) + } v.Set("resolution", resolution) - type resp struct { - Data [][]string `json:"data"` - } - var r resp path := common.EncodeURLValues(coinbeneSwapAPIURL+coinbeneAPIVersion+coinbeneGetKlines, v) - if err := c.SendHTTPRequest(path, contractKline, &r); err != nil { - return nil, err + if err = c.SendHTTPRequest(path, contractKline, &resp); err != nil { + return } - for x := range r.Data { - buyTurnover, err := strconv.ParseFloat(r.Data[x][8], 64) - if err != nil { - return nil, err - } - tm, err := strconv.ParseInt(r.Data[x][0], 10, 64) - if err != nil { - return nil, err - } - open, err := strconv.ParseFloat(r.Data[x][1], 64) - if err != nil { - return nil, err - } - closePrice, err := strconv.ParseFloat(r.Data[x][2], 64) - if err != nil { - return nil, err - } - high, err := strconv.ParseFloat(r.Data[x][3], 64) - if err != nil { - return nil, err - } - low, err := strconv.ParseFloat(r.Data[x][4], 64) - if err != nil { - return nil, err - } - volume, err := strconv.ParseFloat(r.Data[x][5], 64) - if err != nil { - return nil, err - } - turnover, err := strconv.ParseFloat(r.Data[x][6], 64) - if err != nil { - return nil, err - } - buyVolume, err := strconv.ParseFloat(r.Data[x][7], 64) - if err != nil { - return nil, err - } - s = append(s, SwapKlineItem{ - Time: time.Unix(tm, 0), - Open: open, - Close: closePrice, - High: high, - Low: low, - Volume: volume, - Turnover: turnover, - BuyVolume: buyVolume, - BuyTurnover: buyTurnover, - }) - } - return s, nil + return } // GetSwapTrades returns a list of trades for a swap symbol diff --git a/exchanges/coinbene/coinbene_test.go b/exchanges/coinbene/coinbene_test.go index c03a3382..d2ffb463 100644 --- a/exchanges/coinbene/coinbene_test.go +++ b/exchanges/coinbene/coinbene_test.go @@ -4,10 +4,12 @@ import ( "log" "os" "testing" + "time" "github.com/thrasher-corp/gocryptotrader/config" "github.com/thrasher-corp/gocryptotrader/currency" "github.com/thrasher-corp/gocryptotrader/exchanges/asset" + "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/order" "github.com/thrasher-corp/gocryptotrader/exchanges/sharedtestvalues" ) @@ -284,12 +286,19 @@ func TestGetSwapOrderbook(t *testing.T) { } } +func TestGetKlines(t *testing.T) { + t.Parallel() + _, err := c.GetKlines(currency.NewPairFromString(spotTestPair).String(), + time.Now().Add(-time.Hour*1), time.Now(), "1") + if err != nil { + t.Fatal(err) + } +} + func TestGetSwapKlines(t *testing.T) { t.Parallel() - _, err := c.GetSwapKlines(swapTestPair, - "1573184608", - "1573184808", - "1") + _, err := c.GetSwapKlines(currency.NewPairFromString(swapTestPair).String(), + time.Now().Add(-time.Hour*1), time.Now(), "1") if err != nil { t.Error(err) } @@ -681,3 +690,78 @@ func TestWsUserOrder(t *testing.T) { t.Error(err) } } + +func TestGetHistoricCandles(t *testing.T) { + currencyPair := currency.NewPairFromString(spotTestPair) + startTime := time.Now().Add(-time.Hour * 24) + _, err := c.GetHistoricCandles(currencyPair, asset.Spot, startTime, time.Now(), kline.OneHour) + if err != nil { + t.Fatal(err) + } + + currencyPairSwap := currency.NewPairFromString(swapTestPair) + _, err = c.GetHistoricCandles(currencyPairSwap, asset.PerpetualSwap, startTime, time.Now(), kline.OneHour) + if err != nil { + t.Fatal(err) + } +} + +func TestGetHistoricCandlesExtended(t *testing.T) { + currencyPair := currency.NewPairFromString(spotTestPair) + startTime := time.Now().Add(-time.Hour * 24) + _, err := c.GetHistoricCandlesExtended(currencyPair, asset.Spot, startTime, time.Now(), kline.OneHour) + if err != nil { + t.Fatal(err) + } +} + +func Test_FormatExchangeKlineInterval(t *testing.T) { + testCases := []struct { + name string + interval kline.Interval + output string + }{ + { + "OneMin", + kline.OneMin, + "1", + }, + { + "OneHour", + kline.OneHour, + "60", + }, + { + "OneDay", + kline.OneDay, + "D", + }, + { + "OneWeek", + kline.OneWeek, + "W", + }, + { + "OneMonth", + kline.OneMonth, + "M", + }, + { + "AllOther", + kline.TwoWeek, + "", + }, + } + + for x := range testCases { + test := testCases[x] + + t.Run(test.name, func(t *testing.T) { + ret := c.FormatExchangeKlineInterval(test.interval) + + if ret != test.output { + t.Fatalf("unexpected result return expected: %v received: %v", test.output, ret) + } + }) + } +} diff --git a/exchanges/coinbene/coinbene_types.go b/exchanges/coinbene/coinbene_types.go index fc979b27..2fd684de 100644 --- a/exchanges/coinbene/coinbene_types.go +++ b/exchanges/coinbene/coinbene_types.go @@ -354,3 +354,10 @@ type SwapFundingRate struct { FeeRate float64 `json:"feeRate,string"` Leverage int64 `json:"leverage"` } + +// CandleResponse stores returned kline data +type CandleResponse struct { + Code int64 `json:"code"` + Message string `json:"message"` + Data [][]interface{} `json:"data"` +} diff --git a/exchanges/coinbene/coinbene_wrapper.go b/exchanges/coinbene/coinbene_wrapper.go index d9cf506c..9e1d0fa0 100644 --- a/exchanges/coinbene/coinbene_wrapper.go +++ b/exchanges/coinbene/coinbene_wrapper.go @@ -1,7 +1,9 @@ package coinbene import ( + "errors" "fmt" + "strconv" "strings" "sync" "time" @@ -114,9 +116,30 @@ func (c *Coinbene) SetDefaults() { }, WithdrawPermissions: exchange.NoFiatWithdrawals | exchange.WithdrawCryptoViaWebsiteOnly, + Kline: kline.ExchangeCapabilitiesSupported{ + DateRanges: true, + Intervals: true, + }, }, Enabled: exchange.FeaturesEnabled{ AutoPairUpdates: true, + Kline: kline.ExchangeCapabilitiesEnabled{ + Intervals: map[string]bool{ + kline.OneMin.Word(): true, + kline.ThreeMin.Word(): true, + kline.FiveMin.Word(): true, + kline.FifteenMin.Word(): true, + kline.ThirtyMin.Word(): true, + kline.OneHour.Word(): true, + kline.TwoHour.Word(): true, + kline.FourHour.Word(): true, + kline.SixHour.Word(): true, + kline.TwelveHour.Word(): true, + kline.OneDay.Word(): true, + kline.ThreeDay.Word(): true, + kline.OneWeek.Word(): true, + }, + }, }, } c.Requester = request.New(c.Name, @@ -727,7 +750,111 @@ func (c *Coinbene) ValidateCredentials() error { return c.CheckTransientError(err) } -// GetHistoricCandles returns candles between a time period for a set time interval -func (c *Coinbene) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval time.Duration) (kline.Item, error) { - return kline.Item{}, common.ErrFunctionNotSupported +// FormatExchangeKlineInterval returns Interval to string +func (c *Coinbene) FormatExchangeKlineInterval(in kline.Interval) string { + switch in { + case kline.OneMin, kline.ThreeMin, kline.FiveMin, kline.FifteenMin, + kline.ThirtyMin, kline.OneHour, kline.TwoHour, kline.FourHour, kline.SixHour, kline.TwelveHour: + return strconv.FormatFloat(in.Duration().Minutes(), 'f', 0, 64) + case kline.OneDay: + return "D" + case kline.OneWeek: + return "W" + case kline.OneMonth: + return "M" + } + return "" +} + +// GetHistoricCandles returns candles between a time period for a set time interval +func (c *Coinbene) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + if !c.KlineIntervalEnabled(interval) { + return kline.Item{}, kline.ErrorKline{ + Interval: interval, + } + } + + var candles CandleResponse + var err error + if a == asset.PerpetualSwap { + candles, err = c.GetSwapKlines(c.FormatExchangeCurrency(pair, asset.PerpetualSwap).String(), + start, end, + c.FormatExchangeKlineInterval(interval)) + } else { + candles, err = c.GetKlines(c.FormatExchangeCurrency(pair, asset.Spot).String(), + start, end, + c.FormatExchangeKlineInterval(interval)) + } + if err != nil { + return kline.Item{}, err + } + + ret := kline.Item{ + Exchange: c.Name, + Pair: pair, + Interval: interval, + } + + for x := range candles.Data { + var tempCandle kline.Candle + tempTime := candles.Data[x][0].(string) + timestamp, err := time.Parse(time.RFC3339, tempTime) + if err != nil { + continue + } + tempCandle.Time = timestamp + open, ok := candles.Data[x][1].(string) + if !ok { + return kline.Item{}, errors.New("open conversion failed") + } + tempCandle.Open, err = strconv.ParseFloat(open, 64) + if err != nil { + return kline.Item{}, err + } + high, ok := candles.Data[x][2].(string) + if !ok { + return kline.Item{}, errors.New("high conversion failed") + } + tempCandle.High, err = strconv.ParseFloat(high, 64) + if err != nil { + return kline.Item{}, err + } + + low, ok := candles.Data[x][3].(string) + if !ok { + return kline.Item{}, errors.New("low conversion failed") + } + tempCandle.Low, err = strconv.ParseFloat(low, 64) + if err != nil { + return kline.Item{}, err + } + + closeTemp, ok := candles.Data[x][4].(string) + if !ok { + return kline.Item{}, errors.New("close conversion failed") + } + tempCandle.Close, err = strconv.ParseFloat(closeTemp, 64) + if err != nil { + return kline.Item{}, err + } + + vol, ok := candles.Data[x][5].(string) + if !ok { + return kline.Item{}, errors.New("vol conversion failed") + } + tempCandle.Volume, err = strconv.ParseFloat(vol, 64) + if err != nil { + return kline.Item{}, err + } + + ret.Candles = append(ret.Candles, tempCandle) + } + + ret.SortCandlesByTimestamp(false) + return ret, nil +} + +// GetHistoricCandlesExtended returns candles between a time period for a set time interval +func (c *Coinbene) GetHistoricCandlesExtended(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + return c.GetHistoricCandles(pair, a, start, end, interval) } diff --git a/exchanges/coinut/coinut_wrapper.go b/exchanges/coinut/coinut_wrapper.go index bf84e38d..fed59a71 100644 --- a/exchanges/coinut/coinut_wrapper.go +++ b/exchanges/coinut/coinut_wrapper.go @@ -903,6 +903,11 @@ func (c *COINUT) ValidateCredentials() error { } // GetHistoricCandles returns candles between a time period for a set time interval -func (c *COINUT) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval time.Duration) (kline.Item, error) { - return kline.Item{}, common.ErrNotYetImplemented +func (c *COINUT) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + return kline.Item{}, common.ErrFunctionNotSupported +} + +// GetHistoricCandlesExtended returns candles between a time period for a set time interval +func (c *COINUT) GetHistoricCandlesExtended(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + return kline.Item{}, common.ErrFunctionNotSupported } diff --git a/exchanges/exchange.go b/exchanges/exchange.go index 2cddbe29..e22de1b2 100644 --- a/exchanges/exchange.go +++ b/exchanges/exchange.go @@ -6,6 +6,7 @@ import ( "net" "net/http" "net/url" + "strconv" "strings" "time" @@ -13,6 +14,7 @@ import ( "github.com/thrasher-corp/gocryptotrader/config" "github.com/thrasher-corp/gocryptotrader/currency" "github.com/thrasher-corp/gocryptotrader/exchanges/asset" + "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/protocol" "github.com/thrasher-corp/gocryptotrader/exchanges/request" "github.com/thrasher-corp/gocryptotrader/log" @@ -801,3 +803,14 @@ func (e *Base) DisableRateLimiter() error { func (e *Base) EnableRateLimiter() error { return e.Requester.EnableRateLimiter() } + +// KlineIntervalEnabled returns if requested interval is enabled on exchange +func (e *Base) KlineIntervalEnabled(in kline.Interval) bool { + return e.Features.Enabled.Kline.Intervals[in.Word()] +} + +// FormatExchangeKlineInterval returns Interval to string +// Exchanges can override this if they require custom formatting +func (e *Base) FormatExchangeKlineInterval(in kline.Interval) string { + return strconv.FormatFloat(in.Duration().Seconds(), 'f', 0, 64) +} diff --git a/exchanges/exchange_test.go b/exchanges/exchange_test.go index 93b9501a..e61a4d28 100644 --- a/exchanges/exchange_test.go +++ b/exchanges/exchange_test.go @@ -9,6 +9,7 @@ import ( "github.com/thrasher-corp/gocryptotrader/config" "github.com/thrasher-corp/gocryptotrader/currency" "github.com/thrasher-corp/gocryptotrader/exchanges/asset" + "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/protocol" "github.com/thrasher-corp/gocryptotrader/exchanges/request" "github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler" @@ -1479,3 +1480,35 @@ func TestGetFormattedPairAndAssetType(t *testing.T) { t.Error("Expected error") } } + +func Test_FormatExchangeKlineInterval(t *testing.T) { + testCases := []struct { + name string + interval kline.Interval + output string + }{ + { + "OneMin", + kline.OneMin, + "60", + }, + { + "OneDay", + kline.OneDay, + "86400", + }, + } + + b := Base{} + for x := range testCases { + test := testCases[x] + + t.Run(test.name, func(t *testing.T) { + ret := b.FormatExchangeKlineInterval(test.interval) + + if ret != test.output { + t.Fatalf("unexpected result return expected: %v received: %v", test.output, ret) + } + }) + } +} diff --git a/exchanges/exchange_types.go b/exchanges/exchange_types.go index 3e53fe6d..15f5d253 100644 --- a/exchanges/exchange_types.go +++ b/exchanges/exchange_types.go @@ -5,6 +5,7 @@ import ( "github.com/thrasher-corp/gocryptotrader/config" "github.com/thrasher-corp/gocryptotrader/currency" + "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/protocol" "github.com/thrasher-corp/gocryptotrader/exchanges/request" "github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler" @@ -148,6 +149,7 @@ type Features struct { // FeaturesEnabled stores the exchange enabled features type FeaturesEnabled struct { AutoPairUpdates bool + Kline kline.ExchangeCapabilitiesEnabled } // FeaturesSupported stores the exchanges supported features @@ -157,6 +159,7 @@ type FeaturesSupported struct { Websocket bool WebsocketCapabilities protocol.Features WithdrawPermissions uint32 + Kline kline.ExchangeCapabilitiesSupported } // API stores the exchange API settings diff --git a/exchanges/exmo/exmo_wrapper.go b/exchanges/exmo/exmo_wrapper.go index 85c6830a..16d9f474 100644 --- a/exchanges/exmo/exmo_wrapper.go +++ b/exchanges/exmo/exmo_wrapper.go @@ -584,6 +584,11 @@ func (e *EXMO) ValidateCredentials() error { } // GetHistoricCandles returns candles between a time period for a set time interval -func (e *EXMO) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval time.Duration) (kline.Item, error) { - return kline.Item{}, common.ErrNotYetImplemented +func (e *EXMO) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + return kline.Item{}, common.ErrFunctionNotSupported +} + +// GetHistoricCandlesExtended returns candles between a time period for a set time interval +func (e *EXMO) GetHistoricCandlesExtended(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + return kline.Item{}, common.ErrFunctionNotSupported } diff --git a/exchanges/ftx/ftx.go b/exchanges/ftx/ftx.go index 55395096..a86d0f0f 100644 --- a/exchanges/ftx/ftx.go +++ b/exchanges/ftx/ftx.go @@ -15,7 +15,6 @@ import ( "github.com/thrasher-corp/gocryptotrader/common/crypto" exchange "github.com/thrasher-corp/gocryptotrader/exchanges" - "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/order" "github.com/thrasher-corp/gocryptotrader/exchanges/request" "github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler" @@ -870,27 +869,6 @@ func getOfflineTradeFee(feeBuilder *exchange.FeeBuilder) float64 { return 0.0007 * feeBuilder.PurchasePrice * feeBuilder.Amount } -func parseInterval(in time.Duration) (TimeInterval, error) { - switch in { - case kline.FifteenSecond: - return TimeIntervalFifteenSeconds, nil - case kline.OneMin: - return TimeIntervalMinute, nil - case kline.FiveMin: - return TimeIntervalFiveMinutes, nil - case kline.FifteenMin: - return TimeIntervalFifteenMinutes, nil - case kline.OneHour: - return TimeIntervalHour, nil - case kline.FourHour: - return TimeIntervalFourHours, nil - case kline.OneDay: - return TimeIntervalDay, nil - default: - return TimeIntervalMinute, errInvalidInterval - } -} - func (f *FTX) compatibleOrderVars(orderSide, orderStatus, orderType string, amount, filledAmount, avgFillPrice float64) (OrderVars, error) { var resp OrderVars switch orderSide { diff --git a/exchanges/ftx/ftx_test.go b/exchanges/ftx/ftx_test.go index 1eabcf8f..d1753249 100644 --- a/exchanges/ftx/ftx_test.go +++ b/exchanges/ftx/ftx_test.go @@ -864,6 +864,17 @@ func TestGetHistoricCandles(t *testing.T) { } } +func TestGetHistoricCandlesExtended(t *testing.T) { + t.Parallel() + currencyPair := currency.NewPairFromString(spotPair) + start := time.Date(2019, 11, 12, 0, 0, 0, 0, time.UTC) + end := start.AddDate(0, 0, 5) + _, err := f.GetHistoricCandlesExtended(currencyPair, asset.Spot, start, end, kline.OneMin) + if err != nil { + t.Fatal(err) + } +} + func TestParsingWSFillData(t *testing.T) { t.Parallel() data := []byte(`{ diff --git a/exchanges/ftx/ftx_wrapper.go b/exchanges/ftx/ftx_wrapper.go index 3243ce81..7dcdfed2 100644 --- a/exchanges/ftx/ftx_wrapper.go +++ b/exchanges/ftx/ftx_wrapper.go @@ -111,9 +111,25 @@ func (f *FTX) SetDefaults() { GetOrder: true, }, WithdrawPermissions: exchange.NoAPIWithdrawalMethods, + Kline: kline.ExchangeCapabilitiesSupported{ + DateRanges: true, + Intervals: true, + }, }, Enabled: exchange.FeaturesEnabled{ AutoPairUpdates: true, + Kline: kline.ExchangeCapabilitiesEnabled{ + Intervals: map[string]bool{ + kline.FifteenSecond.Word(): true, + kline.OneMin.Word(): true, + kline.FiveMin.Word(): true, + kline.FifteenMin.Word(): true, + kline.OneHour.Word(): true, + kline.FourHour.Word(): true, + kline.OneDay.Word(): true, + }, + ResultLimit: 5000, + }, }, } @@ -845,29 +861,76 @@ func (f *FTX) ValidateCredentials() error { } // GetHistoricCandles returns candles between a time period for a set time interval -func (f *FTX) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval time.Duration) (kline.Item, error) { - intervalToString, err := parseInterval(interval) +func (f *FTX) GetHistoricCandles(p currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + if !f.KlineIntervalEnabled(interval) { + return kline.Item{}, kline.ErrorKline{ + Interval: interval, + } + } + + ohlcData, err := f.GetHistoricalData(f.FormatExchangeCurrency(p, a).String(), + f.FormatExchangeKlineInterval(interval), + strconv.FormatInt(int64(f.Features.Enabled.Kline.ResultLimit), 10), + start, end) if err != nil { return kline.Item{}, err } - var resp kline.Item - ohlcData, err := f.GetHistoricalData(f.FormatExchangeCurrency(pair, a).String(), - string(intervalToString), "", start, end) - if err != nil { - return resp, err + + ret := kline.Item{ + Exchange: f.Name, + Pair: p, + Asset: a, + Interval: interval, } - resp.Exchange = f.Name - resp.Asset = a - resp.Pair = pair + for x := range ohlcData { - var tempData kline.Candle - tempData.Open = ohlcData[x].Open - tempData.High = ohlcData[x].High - tempData.Low = ohlcData[x].Low - tempData.Close = ohlcData[x].Close - tempData.Volume = ohlcData[x].Volume - tempData.Time = ohlcData[x].StartTime - resp.Candles = append(resp.Candles, tempData) + ret.Candles = append(ret.Candles, kline.Candle{ + Time: ohlcData[x].StartTime, + Open: ohlcData[x].Open, + High: ohlcData[x].High, + Low: ohlcData[x].Low, + Close: ohlcData[x].Close, + Volume: ohlcData[x].Volume, + }) } - return resp, nil + return ret, nil +} + +// GetHistoricCandlesExtended returns candles between a time period for a set time interval +func (f *FTX) GetHistoricCandlesExtended(p currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + if !f.KlineIntervalEnabled(interval) { + return kline.Item{}, kline.ErrorKline{ + Interval: interval, + } + } + + ret := kline.Item{ + Exchange: f.Name, + Pair: p, + Asset: a, + Interval: interval, + } + + dates := kline.CalcDateRanges(start, end, interval, f.Features.Enabled.Kline.ResultLimit) + for x := range dates { + ohlcData, err := f.GetHistoricalData(f.FormatExchangeCurrency(p, a).String(), + f.FormatExchangeKlineInterval(interval), + strconv.FormatInt(int64(f.Features.Enabled.Kline.ResultLimit), 10), + dates[x].Start, dates[x].End) + if err != nil { + return kline.Item{}, err + } + + for i := range ohlcData { + ret.Candles = append(ret.Candles, kline.Candle{ + Time: ohlcData[i].StartTime, + Open: ohlcData[i].Open, + High: ohlcData[i].High, + Low: ohlcData[i].Low, + Close: ohlcData[i].Close, + Volume: ohlcData[i].Volume, + }) + } + } + return ret, nil } diff --git a/exchanges/gateio/gateio.go b/exchanges/gateio/gateio.go index 78ac8c52..ba22b045 100644 --- a/exchanges/gateio/gateio.go +++ b/exchanges/gateio/gateio.go @@ -13,6 +13,7 @@ import ( "github.com/thrasher-corp/gocryptotrader/common/crypto" "github.com/thrasher-corp/gocryptotrader/currency" exchange "github.com/thrasher-corp/gocryptotrader/exchanges" + "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/request" "github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler" "github.com/thrasher-corp/gocryptotrader/portfolio/withdraw" @@ -184,8 +185,8 @@ func (g *Gateio) GetOrderbook(symbol string) (Orderbook, error) { } // GetSpotKline returns kline data for the most recent time period -func (g *Gateio) GetSpotKline(arg KlinesRequestParams) ([]*KLineResponse, error) { - urlPath := fmt.Sprintf("%s/%s/%s/%s?group_sec=%d&range_hour=%d", +func (g *Gateio) GetSpotKline(arg KlinesRequestParams) (kline.Item, error) { + urlPath := fmt.Sprintf("%s/%s/%s/%s?group_sec=%s&range_hour=%d", g.API.Endpoints.URLSecondary, gateioAPIVersion, gateioKline, @@ -196,58 +197,59 @@ func (g *Gateio) GetSpotKline(arg KlinesRequestParams) ([]*KLineResponse, error) var rawKlines map[string]interface{} err := g.SendHTTPRequest(urlPath, &rawKlines) if err != nil { - return nil, err + return kline.Item{}, err + } + + result := kline.Item{ + Exchange: g.Name, } - var result []*KLineResponse if rawKlines == nil || rawKlines["data"] == nil { - return nil, fmt.Errorf("rawKlines is nil. Err: %s", err) + return kline.Item{}, errors.New("rawKlines is nil") } rawKlineDatasString, _ := json.Marshal(rawKlines["data"].([]interface{})) var rawKlineDatas [][]interface{} if err := json.Unmarshal(rawKlineDatasString, &rawKlineDatas); err != nil { - return nil, fmt.Errorf("rawKlines unmarshal failed. Err: %s", err) + return kline.Item{}, fmt.Errorf("rawKlines unmarshal failed. Err: %s", err) } for _, k := range rawKlineDatas { - otString, _ := strconv.ParseFloat(k[0].(string), 64) + otString, err := strconv.ParseFloat(k[0].(string), 64) + if err != nil { + return kline.Item{}, err + } ot, err := convert.TimeFromUnixTimestampFloat(otString) if err != nil { - return nil, fmt.Errorf("cannot parse Kline.OpenTime. Err: %s", err) + return kline.Item{}, fmt.Errorf("cannot parse Kline.OpenTime. Err: %s", err) } _vol, err := convert.FloatFromString(k[1]) if err != nil { - return nil, fmt.Errorf("cannot parse Kline.Volume. Err: %s", err) - } - _id, err := convert.FloatFromString(k[0]) - if err != nil { - return nil, fmt.Errorf("cannot parse Kline.Id. Err: %s", err) + return kline.Item{}, fmt.Errorf("cannot parse Kline.Volume. Err: %s", err) } _close, err := convert.FloatFromString(k[2]) if err != nil { - return nil, fmt.Errorf("cannot parse Kline.Close. Err: %s", err) + return kline.Item{}, fmt.Errorf("cannot parse Kline.Close. Err: %s", err) } _high, err := convert.FloatFromString(k[3]) if err != nil { - return nil, fmt.Errorf("cannot parse Kline.High. Err: %s", err) + return kline.Item{}, fmt.Errorf("cannot parse Kline.High. Err: %s", err) } _low, err := convert.FloatFromString(k[4]) if err != nil { - return nil, fmt.Errorf("cannot parse Kline.Low. Err: %s", err) + return kline.Item{}, fmt.Errorf("cannot parse Kline.Low. Err: %s", err) } _open, err := convert.FloatFromString(k[5]) if err != nil { - return nil, fmt.Errorf("cannot parse Kline.Open. Err: %s", err) + return kline.Item{}, fmt.Errorf("cannot parse Kline.Open. Err: %s", err) } - result = append(result, &KLineResponse{ - ID: _id, - KlineTime: ot, - Volume: _vol, - Close: _close, - High: _high, - Low: _low, - Open: _open, + result.Candles = append(result.Candles, kline.Candle{ + Time: ot, + Volume: _vol, + Close: _close, + High: _high, + Low: _low, + Open: _open, }) } return result, nil diff --git a/exchanges/gateio/gateio_test.go b/exchanges/gateio/gateio_test.go index ca4e3a36..394c3139 100644 --- a/exchanges/gateio/gateio_test.go +++ b/exchanges/gateio/gateio_test.go @@ -5,6 +5,7 @@ import ( "net/http" "os" "testing" + "time" "github.com/gorilla/websocket" "github.com/thrasher-corp/gocryptotrader/common" @@ -13,6 +14,8 @@ import ( "github.com/thrasher-corp/gocryptotrader/core" "github.com/thrasher-corp/gocryptotrader/currency" exchange "github.com/thrasher-corp/gocryptotrader/exchanges" + "github.com/thrasher-corp/gocryptotrader/exchanges/asset" + "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/order" "github.com/thrasher-corp/gocryptotrader/exchanges/sharedtestvalues" "github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler" @@ -148,11 +151,10 @@ func TestGetOrderbook(t *testing.T) { func TestGetSpotKline(t *testing.T) { t.Parallel() - _, err := g.GetSpotKline(KlinesRequestParams{ Symbol: "btc_usdt", - GroupSec: TimeIntervalFiveMinutes, // 5 minutes or less - HourSize: 1, // 1 hour data + GroupSec: "5", // 5 minutes or less + HourSize: 1, // 1 hour data }) if err != nil { @@ -578,7 +580,6 @@ func setupWSTestAuth(t *testing.T) { // TestWsUnsubscribe dials websocket, sends an unsubscribe request. func TestWsUnsubscribe(t *testing.T) { setupWSTestAuth(t) - g.Verbose = true err := g.Unsubscribe(wshandler.WebsocketChannelSubscription{ Channel: "ticker.subscribe", Currency: currency.NewPairWithDelimiter(currency.BTC.String(), currency.USDT.String(), "_"), @@ -762,3 +763,52 @@ func TestParseTime(t *testing.T) { t.Error("unexpected result") } } + +func TestGetHistoricCandles(t *testing.T) { + currencyPair := currency.NewPairFromString("BTC_USDT") + startTime := time.Now().Add(-time.Hour * 6) + _, err := g.GetHistoricCandles(currencyPair, asset.Spot, startTime, time.Now(), kline.OneMin) + if err != nil { + t.Fatal(err) + } +} + +func TestGetHistoricCandlesExtended(t *testing.T) { + currencyPair := currency.NewPairFromString("BTC_USDT") + startTime := time.Now().Add(-time.Hour * 6) + _, err := g.GetHistoricCandlesExtended(currencyPair, asset.Spot, startTime, time.Now(), kline.OneMin) + if err != nil { + t.Fatal(err) + } +} + +func Test_FormatExchangeKlineInterval(t *testing.T) { + testCases := []struct { + name string + interval kline.Interval + output string + }{ + { + "OneMin", + kline.OneMin, + "60", + }, + { + "OneDay", + kline.OneDay, + "86400", + }, + } + + for x := range testCases { + test := testCases[x] + + t.Run(test.name, func(t *testing.T) { + ret := g.FormatExchangeKlineInterval(test.interval) + + if ret != test.output { + t.Fatalf("unexpected result return expected: %v received: %v", test.output, ret) + } + }) + } +} diff --git a/exchanges/gateio/gateio_types.go b/exchanges/gateio/gateio_types.go index e23cca47..a8483a73 100644 --- a/exchanges/gateio/gateio_types.go +++ b/exchanges/gateio/gateio_types.go @@ -52,7 +52,7 @@ type BalancesResponse struct { type KlinesRequestParams struct { Symbol string // Required field; example LTCBTC,BTCUSDT HourSize int // How many hours of data - GroupSec TimeInterval + GroupSec string } // KLineResponse holds the kline response data diff --git a/exchanges/gateio/gateio_wrapper.go b/exchanges/gateio/gateio_wrapper.go index ea91b94c..d240aa05 100644 --- a/exchanges/gateio/gateio_wrapper.go +++ b/exchanges/gateio/gateio_wrapper.go @@ -108,12 +108,29 @@ func (g *Gateio) SetDefaults() { }, WithdrawPermissions: exchange.AutoWithdrawCrypto | exchange.NoFiatWithdrawals, + Kline: kline.ExchangeCapabilitiesSupported{ + Intervals: true, + }, }, Enabled: exchange.FeaturesEnabled{ AutoPairUpdates: true, + Kline: kline.ExchangeCapabilitiesEnabled{ + Intervals: map[string]bool{ + kline.OneMin.Word(): true, + kline.ThreeMin.Word(): true, + kline.FiveMin.Word(): true, + kline.FifteenMin.Word(): true, + kline.ThirtyMin.Word(): true, + kline.OneHour.Word(): true, + kline.TwoHour.Word(): true, + kline.FourHour.Word(): true, + kline.SixHour.Word(): true, + kline.TwelveHour.Word(): true, + kline.OneDay.Word(): true, + }, + }, }, } - g.Requester = request.New(g.Name, common.NewHTTPClientWithTimeout(exchange.DefaultHTTPTimeout)) @@ -710,7 +727,39 @@ func (g *Gateio) ValidateCredentials() error { return g.CheckTransientError(err) } -// GetHistoricCandles returns candles between a time period for a set time interval -func (g *Gateio) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval time.Duration) (kline.Item, error) { - return kline.Item{}, common.ErrNotYetImplemented +// FormatExchangeKlineInterval returns Interval to exchange formatted string +func (g *Gateio) FormatExchangeKlineInterval(in kline.Interval) string { + return strconv.FormatFloat(in.Duration().Seconds(), 'f', 0, 64) +} + +// GetHistoricCandles returns candles between a time period for a set time interval +func (g *Gateio) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + if !g.KlineIntervalEnabled(interval) { + return kline.Item{}, kline.ErrorKline{ + Interval: interval, + } + } + + hours := end.Sub(start).Hours() + params := KlinesRequestParams{ + Symbol: g.FormatExchangeCurrency(pair, a).String(), + GroupSec: g.FormatExchangeKlineInterval(interval), + HourSize: int(hours), + } + + klineData, err := g.GetSpotKline(params) + if err != nil { + return kline.Item{}, err + } + klineData.Interval = interval + klineData.Pair = pair + klineData.Asset = a + + klineData.SortCandlesByTimestamp(false) + return klineData, nil +} + +// GetHistoricCandlesExtended returns candles between a time period for a set time interval +func (g *Gateio) GetHistoricCandlesExtended(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + return g.GetHistoricCandles(pair, a, start, end, interval) } diff --git a/exchanges/gemini/gemini_wrapper.go b/exchanges/gemini/gemini_wrapper.go index 0a236954..4af50c81 100644 --- a/exchanges/gemini/gemini_wrapper.go +++ b/exchanges/gemini/gemini_wrapper.go @@ -575,6 +575,11 @@ func (g *Gemini) ValidateCredentials() error { } // GetHistoricCandles returns candles between a time period for a set time interval -func (g *Gemini) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval time.Duration) (kline.Item, error) { +func (g *Gemini) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + return kline.Item{}, common.ErrFunctionNotSupported +} + +// GetHistoricCandlesExtended returns candles between a time period for a set time interval +func (g *Gemini) GetHistoricCandlesExtended(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { return kline.Item{}, common.ErrFunctionNotSupported } diff --git a/exchanges/hitbtc/hitbtc.go b/exchanges/hitbtc/hitbtc.go index a8e8733b..1141ea1d 100644 --- a/exchanges/hitbtc/hitbtc.go +++ b/exchanges/hitbtc/hitbtc.go @@ -8,6 +8,7 @@ import ( "net/http" "net/url" "strconv" + "time" "github.com/thrasher-corp/gocryptotrader/common/crypto" "github.com/thrasher-corp/gocryptotrader/currency" @@ -201,11 +202,10 @@ func (h *HitBTC) GetOrderbook(currencyPair string, limit int) (Orderbook, error) // GetCandles returns candles which is used for OHLC a specific currency. // Note: Result contain candles only with non zero volume. -func (h *HitBTC) GetCandles(currencyPair, limit, period string) ([]ChartData, error) { +func (h *HitBTC) GetCandles(currencyPair, limit, period string, start, end time.Time) ([]ChartData, error) { // limit Limit of candles, default 100. // period One of: M1 (one minute), M3, M5, M15, M30, H1, H4, D1, D7, 1M (one month). Default is M30 (30 minutes). vals := url.Values{} - if limit != "" { vals.Set("limit", limit) } @@ -214,6 +214,18 @@ func (h *HitBTC) GetCandles(currencyPair, limit, period string) ([]ChartData, er vals.Set("period", period) } + if !end.IsZero() && start.After(end) { + return nil, errors.New("start time cannot be after end time") + } + + if !start.IsZero() { + vals.Set("from", start.Format(time.RFC3339)) + } + + if !end.IsZero() { + vals.Set("till", end.Format(time.RFC3339)) + } + var resp []ChartData path := fmt.Sprintf("%s/%s/%s?%s", h.API.Endpoints.URL, apiV2Candles, currencyPair, vals.Encode()) return resp, h.SendHTTPRequest(path, &resp) diff --git a/exchanges/hitbtc/hitbtc_test.go b/exchanges/hitbtc/hitbtc_test.go index 10073462..aaaf7b2b 100644 --- a/exchanges/hitbtc/hitbtc_test.go +++ b/exchanges/hitbtc/hitbtc_test.go @@ -14,6 +14,7 @@ import ( "github.com/thrasher-corp/gocryptotrader/currency" exchange "github.com/thrasher-corp/gocryptotrader/exchanges" "github.com/thrasher-corp/gocryptotrader/exchanges/asset" + "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/order" "github.com/thrasher-corp/gocryptotrader/exchanges/sharedtestvalues" "github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler" @@ -71,12 +72,42 @@ func TestGetTrades(t *testing.T) { } func TestGetChartCandles(t *testing.T) { - _, err := h.GetCandles("BTCUSD", "", "") + _, err := h.GetCandles("BTCUSD", "", "D1", time.Now().Add(-24*time.Hour), time.Now()) if err != nil { t.Error("Test faild - HitBTC GetChartData() error", err) } } +func TestGetHistoricCandles(t *testing.T) { + currencyPair := currency.NewPairFromString("BTCUSD") + startTime := time.Now().Add(-time.Hour * 24) + end := time.Now() + _, err := h.GetHistoricCandles(currencyPair, asset.Spot, startTime, end, kline.OneMin) + if err != nil { + t.Fatal(err) + } + + _, err = h.GetHistoricCandles(currencyPair, asset.Spot, startTime, end, kline.Interval(time.Hour*7)) + if err == nil { + t.Fatal("unexpected result") + } +} + +func TestGetHistoricCandlesExtended(t *testing.T) { + currencyPair := currency.NewPairFromString("BTCUSD") + startTime := time.Unix(1546300800, 0) + end := time.Unix(1577836799, 0) + _, err := h.GetHistoricCandlesExtended(currencyPair, asset.Spot, startTime, end, kline.OneHour) + if err != nil { + t.Fatal(err) + } + + _, err = h.GetHistoricCandlesExtended(currencyPair, asset.Spot, startTime, end, kline.Interval(time.Hour*7)) + if err == nil { + t.Fatal("unexpected result") + } +} + func TestGetCurrencies(t *testing.T) { _, err := h.GetCurrencies() if err != nil { @@ -918,3 +949,44 @@ func TestWsTrades(t *testing.T) { t.Error(err) } } + +func Test_FormatExchangeKlineInterval(t *testing.T) { + testCases := []struct { + name string + interval kline.Interval + output string + }{ + { + "OneMin", + kline.OneMin, + "M1", + }, + { + "OneDay", + kline.OneDay, + "D1", + }, + { + "SevenDay", + kline.SevenDay, + "D7", + }, + { + "AllOther", + kline.OneMonth, + "", + }, + } + + for x := range testCases { + test := testCases[x] + + t.Run(test.name, func(t *testing.T) { + ret := h.FormatExchangeKlineInterval(test.interval) + + if ret != test.output { + t.Fatalf("unexpected result return expected: %v received: %v", test.output, ret) + } + }) + } +} diff --git a/exchanges/hitbtc/hitbtc_wrapper.go b/exchanges/hitbtc/hitbtc_wrapper.go index ee5bf8c3..cfbdcb32 100644 --- a/exchanges/hitbtc/hitbtc_wrapper.go +++ b/exchanges/hitbtc/hitbtc_wrapper.go @@ -109,9 +109,26 @@ func (h *HitBTC) SetDefaults() { }, WithdrawPermissions: exchange.AutoWithdrawCrypto | exchange.NoFiatWithdrawals, + Kline: kline.ExchangeCapabilitiesSupported{ + Intervals: true, + DateRanges: true, + }, }, Enabled: exchange.FeaturesEnabled{ AutoPairUpdates: true, + Kline: kline.ExchangeCapabilitiesEnabled{ + Intervals: map[string]bool{ + kline.OneMin.Word(): true, + kline.ThreeMin.Word(): true, + kline.FiveMin.Word(): true, + kline.ThirtyMin.Word(): true, + kline.OneHour.Word(): true, + kline.FourHour.Word(): true, + kline.OneDay.Word(): true, + kline.SevenDay.Word(): true, + }, + ResultLimit: 1000, + }, }, } @@ -628,7 +645,93 @@ func (h *HitBTC) ValidateCredentials() error { return h.CheckTransientError(err) } -// GetHistoricCandles returns candles between a time period for a set time interval -func (h *HitBTC) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval time.Duration) (kline.Item, error) { - return kline.Item{}, common.ErrNotYetImplemented +// FormatExchangeKlineInterval returns Interval to exchange formatted string +func (h *HitBTC) FormatExchangeKlineInterval(in kline.Interval) string { + switch in { + case kline.OneMin, kline.ThreeMin, + kline.FiveMin, kline.FifteenMin, kline.ThirtyMin: + return "M" + in.Short()[:len(in.Short())-1] + case kline.OneDay: + return "D1" + case kline.SevenDay: + return "D7" + } + return "" +} + +// GetHistoricCandles returns candles between a time period for a set time interval +func (h *HitBTC) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + if !h.KlineIntervalEnabled(interval) { + return kline.Item{}, kline.ErrorKline{ + Interval: interval, + } + } + data, err := h.GetCandles(h.FormatExchangeCurrency(pair, a).String(), + strconv.FormatInt(int64(h.Features.Enabled.Kline.ResultLimit), 10), + h.FormatExchangeKlineInterval(interval), + start, end) + if err != nil { + return kline.Item{}, err + } + + ret := kline.Item{ + Exchange: h.Name, + Pair: pair, + Asset: a, + Interval: interval, + } + for x := range data { + ret.Candles = append(ret.Candles, kline.Candle{ + Time: data[x].Timestamp, + Open: data[x].Open, + High: data[x].Max, + Low: data[x].Min, + Close: data[x].Close, + Volume: data[x].Volume, + }) + } + + ret.SortCandlesByTimestamp(false) + return ret, nil +} + +// GetHistoricCandlesExtended returns candles between a time period for a set time interval +func (h *HitBTC) GetHistoricCandlesExtended(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + if !h.KlineIntervalEnabled(interval) { + return kline.Item{}, kline.ErrorKline{ + Interval: interval, + } + } + + ret := kline.Item{ + Exchange: h.Name, + Pair: pair, + Asset: a, + Interval: interval, + } + + dates := kline.CalcDateRanges(start, end, interval, h.Features.Enabled.Kline.ResultLimit) + for y := range dates { + data, err := h.GetCandles(h.FormatExchangeCurrency(pair, a).String(), + strconv.FormatInt(int64(h.Features.Enabled.Kline.ResultLimit), 10), + h.FormatExchangeKlineInterval(interval), + dates[y].Start, dates[y].End) + if err != nil { + return kline.Item{}, err + } + + for i := range data { + ret.Candles = append(ret.Candles, kline.Candle{ + Time: data[i].Timestamp, + Open: data[i].Open, + High: data[i].Max, + Low: data[i].Min, + Close: data[i].Close, + Volume: data[i].Volume, + }) + } + } + + ret.SortCandlesByTimestamp(false) + return ret, nil } diff --git a/exchanges/huobi/huobi.go b/exchanges/huobi/huobi.go index 14a0aca7..3f543fae 100644 --- a/exchanges/huobi/huobi.go +++ b/exchanges/huobi/huobi.go @@ -72,7 +72,7 @@ type HUOBI struct { func (h *HUOBI) GetSpotKline(arg KlinesRequestParams) ([]KlineItem, error) { vals := url.Values{} vals.Set("symbol", arg.Symbol) - vals.Set("period", string(arg.Period)) + vals.Set("period", arg.Period) if arg.Size != 0 { vals.Set("size", strconv.Itoa(arg.Size)) diff --git a/exchanges/huobi/huobi_test.go b/exchanges/huobi/huobi_test.go index 7d7377b0..6bf3148b 100644 --- a/exchanges/huobi/huobi_test.go +++ b/exchanges/huobi/huobi_test.go @@ -5,6 +5,7 @@ import ( "os" "strconv" "testing" + "time" "github.com/gorilla/websocket" "github.com/thrasher-corp/gocryptotrader/common" @@ -12,6 +13,8 @@ import ( "github.com/thrasher-corp/gocryptotrader/core" "github.com/thrasher-corp/gocryptotrader/currency" exchange "github.com/thrasher-corp/gocryptotrader/exchanges" + "github.com/thrasher-corp/gocryptotrader/exchanges/asset" + "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/order" "github.com/thrasher-corp/gocryptotrader/exchanges/sharedtestvalues" "github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler" @@ -96,7 +99,7 @@ func TestGetSpotKline(t *testing.T) { t.Parallel() _, err := h.GetSpotKline(KlinesRequestParams{ Symbol: testSymbol, - Period: TimeIntervalHour, + Period: "1min", Size: 0, }) if err != nil { @@ -104,6 +107,39 @@ func TestGetSpotKline(t *testing.T) { } } +func TestGetHistoricCandles(t *testing.T) { + currencyPair := currency.NewPairFromString("BTCUSDT") + startTime := time.Now().Add(-time.Hour * 1) + _, err := h.GetHistoricCandles(currencyPair, asset.Spot, startTime, time.Now(), kline.OneMin) + if err != nil { + t.Fatal(err) + } + + _, err = h.GetHistoricCandles(currencyPair, asset.Spot, startTime.AddDate(0, 0, -7), time.Now(), kline.OneDay) + if err != nil { + t.Fatal(err) + } + + _, err = h.GetHistoricCandles(currencyPair, asset.Spot, startTime, time.Now(), kline.Interval(time.Hour*7)) + if err == nil { + t.Fatal("unexpected result") + } +} + +func TestGetHistoricCandlesExtended(t *testing.T) { + currencyPair := currency.NewPairFromString("BTCUSDT") + startTime := time.Now().Add(-time.Hour * 1) + _, err := h.GetHistoricCandlesExtended(currencyPair, asset.Spot, startTime, time.Now(), kline.OneMin) + if err != nil { + t.Fatal(err) + } + + _, err = h.GetHistoricCandlesExtended(currencyPair, asset.Spot, startTime, time.Now(), kline.Interval(time.Hour*7)) + if err == nil { + t.Fatal("unexpected result") + } +} + func TestGetMarketDetailMerged(t *testing.T) { t.Parallel() _, err := h.GetMarketDetailMerged(testSymbol) @@ -1032,3 +1068,59 @@ func TestStringToOrderType(t *testing.T) { } } } + +func Test_FormatExchangeKlineInterval(t *testing.T) { + testCases := []struct { + name string + interval kline.Interval + output string + }{ + { + "OneMin", + kline.OneMin, + "1min", + }, + { + "FourHour", + kline.FourHour, + "4hour", + }, + { + "OneDay", + kline.OneDay, + "1day", + }, + { + "OneWeek", + kline.OneWeek, + "1week", + }, + { + "OneMonth", + kline.OneMonth, + "1mon", + }, + { + "OneYear", + kline.OneYear, + "1year", + }, + { + "AllOthers", + kline.TwoWeek, + "", + }, + } + + for x := range testCases { + test := testCases[x] + + t.Run(test.name, func(t *testing.T) { + ret := h.FormatExchangeKlineInterval(test.interval) + + if ret != test.output { + t.Fatalf("unexpected result return expected: %v received: %v", test.output, ret) + } + }) + } +} diff --git a/exchanges/huobi/huobi_types.go b/exchanges/huobi/huobi_types.go index 1ced0b7f..b2e6cdb6 100644 --- a/exchanges/huobi/huobi_types.go +++ b/exchanges/huobi/huobi_types.go @@ -299,27 +299,11 @@ var ( // KlinesRequestParams represents Klines request data. type KlinesRequestParams struct { - Symbol string // Symbol to be used; example btcusdt, bccbtc...... - Period TimeInterval // Kline time interval; 1min, 5min, 15min...... - Size int // Size; [1-2000] + Symbol string // Symbol to be used; example btcusdt, bccbtc...... + Period string // Kline time interval; 1min, 5min, 15min...... + Size int // Size; [1-2000] } -// TimeInterval base type -type TimeInterval string - -// TimeInterval vars -var ( - TimeIntervalMinute = TimeInterval("1min") - TimeIntervalFiveMinutes = TimeInterval("5min") - TimeIntervalFifteenMinutes = TimeInterval("15min") - TimeIntervalThirtyMinutes = TimeInterval("30min") - TimeIntervalHour = TimeInterval("60min") - TimeIntervalDay = TimeInterval("1day") - TimeIntervalWeek = TimeInterval("1week") - TimeIntervalMohth = TimeInterval("1mon") - TimeIntervalYear = TimeInterval("1year") -) - // WsRequest defines a request data structure type WsRequest struct { Topic string `json:"req,omitempty"` diff --git a/exchanges/huobi/huobi_wrapper.go b/exchanges/huobi/huobi_wrapper.go index 9078799e..7d9f2889 100644 --- a/exchanges/huobi/huobi_wrapper.go +++ b/exchanges/huobi/huobi_wrapper.go @@ -107,9 +107,27 @@ func (h *HUOBI) SetDefaults() { }, WithdrawPermissions: exchange.AutoWithdrawCryptoWithSetup | exchange.NoFiatWithdrawals, + Kline: kline.ExchangeCapabilitiesSupported{ + Intervals: true, + }, }, Enabled: exchange.FeaturesEnabled{ AutoPairUpdates: true, + Kline: kline.ExchangeCapabilitiesEnabled{ + Intervals: map[string]bool{ + kline.OneMin.Word(): true, + kline.FiveMin.Word(): true, + kline.FifteenMin.Word(): true, + kline.ThirtyMin.Word(): true, + kline.OneHour.Word(): true, + kline.FourHour.Word(): true, + kline.OneDay.Word(): true, + kline.OneWeek.Word(): true, + kline.OneMonth.Word(): true, + kline.OneYear.Word(): true, + }, + ResultLimit: 2000, + }, }, } @@ -924,7 +942,70 @@ func (h *HUOBI) ValidateCredentials() error { return h.CheckTransientError(err) } -// GetHistoricCandles returns candles between a time period for a set time interval -func (h *HUOBI) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval time.Duration) (kline.Item, error) { - return kline.Item{}, common.ErrNotYetImplemented +// FormatExchangeKlineInterval returns Interval to exchange formatted string +func (h *HUOBI) FormatExchangeKlineInterval(in kline.Interval) string { + switch in { + case kline.OneMin, kline.FiveMin, kline.FifteenMin, kline.ThirtyMin: + return in.Short() + "in" + case kline.FourHour: + return "4hour" + case kline.OneDay: + return "1day" + case kline.OneMonth: + return "1mon" + case kline.OneWeek: + return "1week" + case kline.OneYear: + return "1year" + } + return "" +} + +// GetHistoricCandles returns candles between a time period for a set time interval +func (h *HUOBI) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + if !h.KlineIntervalEnabled(interval) { + return kline.Item{}, kline.ErrorKline{ + Interval: interval, + } + } + + klineParams := KlinesRequestParams{ + Period: h.FormatExchangeKlineInterval(interval), + Symbol: h.FormatExchangeCurrency(pair, a).String(), + } + + candles, err := h.GetSpotKline(klineParams) + if err != nil { + return kline.Item{}, err + } + + ret := kline.Item{ + Exchange: h.Name, + Pair: pair, + Asset: a, + Interval: interval, + } + + for x := range candles { + if time.Unix(candles[x].ID, 0).Before(start) || + time.Unix(candles[x].ID, 0).After(end) { + continue + } + ret.Candles = append(ret.Candles, kline.Candle{ + Time: time.Unix(candles[x].ID, 0), + Open: candles[x].Open, + High: candles[x].Close, + Low: candles[x].Low, + Close: candles[x].Close, + Volume: candles[x].Volume, + }) + } + + ret.SortCandlesByTimestamp(false) + return ret, nil +} + +// GetHistoricCandlesExtended returns candles between a time period for a set time interval +func (h *HUOBI) GetHistoricCandlesExtended(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + return h.GetHistoricCandles(pair, a, start, end, interval) } diff --git a/exchanges/interfaces.go b/exchanges/interfaces.go index ae0ae9ba..b0acce07 100644 --- a/exchanges/interfaces.go +++ b/exchanges/interfaces.go @@ -73,7 +73,8 @@ type IBotExchange interface { GetDefaultConfig() (*config.ExchangeConfig, error) GetBase() *Base SupportsAsset(assetType asset.Item) bool - GetHistoricCandles(p currency.Pair, a asset.Item, timeStart, timeEnd time.Time, interval time.Duration) (kline.Item, error) + GetHistoricCandles(p currency.Pair, a asset.Item, timeStart, timeEnd time.Time, interval kline.Interval) (kline.Item, error) + GetHistoricCandlesExtended(p currency.Pair, a asset.Item, timeStart, timeEnd time.Time, interval kline.Interval) (kline.Item, error) DisableRateLimiter() error EnableRateLimiter() error } diff --git a/exchanges/itbit/itbit.go b/exchanges/itbit/itbit.go index 40cb72c0..cb4180ce 100644 --- a/exchanges/itbit/itbit.go +++ b/exchanges/itbit/itbit.go @@ -61,9 +61,9 @@ func (i *ItBit) GetOrderbook(currencyPair string) (OrderbookResponse, error) { // // currencyPair - example "XBTUSD" "XBTSGD" "XBTEUR" // timestamp - matchNumber, only executions after this will be returned -func (i *ItBit) GetTradeHistory(currencyPair, timestamp string) (Trades, error) { +func (i *ItBit) GetTradeHistory(currencyPair, tradeID string) (Trades, error) { response := Trades{} - req := "trades?since=" + timestamp + req := "trades?since=" + tradeID path := fmt.Sprintf("%s/%s/%s/%s", i.API.Endpoints.URL, itbitMarkets, currencyPair, req) return response, i.SendHTTPRequest(path, &response) diff --git a/exchanges/itbit/itbit_wrapper.go b/exchanges/itbit/itbit_wrapper.go index d5f54e03..59a6871b 100644 --- a/exchanges/itbit/itbit_wrapper.go +++ b/exchanges/itbit/itbit_wrapper.go @@ -571,6 +571,11 @@ func (i *ItBit) ValidateCredentials() error { } // GetHistoricCandles returns candles between a time period for a set time interval -func (i *ItBit) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval time.Duration) (kline.Item, error) { - return kline.Item{}, common.ErrNotYetImplemented +func (i *ItBit) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + return kline.Item{}, common.ErrFunctionNotSupported +} + +// GetHistoricCandlesExtended returns candles between a time period for a set time interval +func (i *ItBit) GetHistoricCandlesExtended(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + return kline.Item{}, common.ErrFunctionNotSupported } diff --git a/exchanges/kline/kline.go b/exchanges/kline/kline.go index dc5726e7..58aaa7d7 100644 --- a/exchanges/kline/kline.go +++ b/exchanges/kline/kline.go @@ -4,6 +4,7 @@ import ( "errors" "fmt" "sort" + "strings" "time" "github.com/thrasher-corp/gocryptotrader/currency" @@ -12,8 +13,8 @@ import ( ) // CreateKline creates candles out of trade history data for a set time interval -func CreateKline(trades []order.TradeHistory, interval time.Duration, p currency.Pair, a asset.Item, exchange string) (Item, error) { - if interval < time.Minute { +func CreateKline(trades []order.TradeHistory, interval Interval, p currency.Pair, a asset.Item, exchange string) (Item, error) { + if interval.Duration() < time.Minute { return Item{}, fmt.Errorf("invalid time interval: [%s]", interval) } @@ -22,15 +23,15 @@ func CreateKline(trades []order.TradeHistory, interval time.Duration, p currency return Item{}, err } - timeIntervalStart := trades[0].Timestamp.Truncate(interval) + timeIntervalStart := trades[0].Timestamp.Truncate(interval.Duration()) timeIntervalEnd := trades[len(trades)-1].Timestamp // Adds time interval buffer zones var timeIntervalCache [][]order.TradeHistory var candleStart []time.Time - for t := timeIntervalStart; t.Before(timeIntervalEnd); t = t.Add(interval) { - timeBufferEnd := t.Add(interval) + for t := timeIntervalStart; t.Before(timeIntervalEnd); t = t.Add(interval.Duration()) { + timeBufferEnd := t.Add(interval.Duration()) insertionCount := 0 var zonedTradeHistory []order.TradeHistory @@ -130,3 +131,165 @@ func validateData(trades []order.TradeHistory) error { }) return nil } + +// String returns numeric string +func (i Interval) String() string { + return i.Duration().String() +} + +// Word returns text version of Interval +func (i Interval) Word() string { + return durationToWord(i) +} + +// Duration returns interval casted as time.Duration for compatibility +func (i Interval) Duration() time.Duration { + return time.Duration(i) +} + +// Short returns short string version of interval +func (i Interval) Short() string { + s := i.String() + if strings.HasSuffix(s, "m0s") { + s = s[:len(s)-2] + } + if strings.HasSuffix(s, "h0m") { + s = s[:len(s)-2] + } + return s +} + +// durationToWord returns english version of interval +func durationToWord(in Interval) string { + switch in { + case OneMin: + return "onemin" + case ThreeMin: + return "threemin" + case FiveMin: + return "fivemin" + case TenMin: + return "tenmin" + case FifteenMin: + return "fifteenmin" + case ThirtyMin: + return "thirtymin" + case OneHour: + return "onehour" + case TwoHour: + return "twohour" + case FourHour: + return "fourhour" + case SixHour: + return "sixhour" + case EightHour: + return "eighthour" + case TwelveHour: + return "twelvehour" + case OneDay: + return "oneday" + case ThreeDay: + return "threeday" + case FifteenDay: + return "fifteenday" + case OneWeek: + return "oneweek" + case TwoWeek: + return "twoweek" + case OneMonth: + return "onemonth" + case OneYear: + return "oneyear" + default: + return "notfound" + } +} + +// TotalCandlesPerInterval turns total candles per period for interval +func TotalCandlesPerInterval(start, end time.Time, interval Interval) (out uint32) { + switch interval { + case OneMin: + out = uint32(end.Sub(start).Minutes()) + case ThreeMin: + out = uint32(end.Sub(start).Minutes() / 3) + case FiveMin: + out = uint32(end.Sub(start).Minutes() / 5) + case TenMin: + out = uint32(end.Sub(start).Minutes() / 10) + case FifteenMin: + out = uint32(end.Sub(start).Minutes() / 15) + case ThirtyMin: + out = uint32(end.Sub(start).Minutes() / 30) + case OneHour: + out = uint32(end.Sub(start).Hours()) + case TwoHour: + out = uint32(end.Sub(start).Hours() / 2) + case FourHour: + out = uint32(end.Sub(start).Hours() / 4) + case SixHour: + out = uint32(end.Sub(start).Hours() / 6) + case EightHour: + out = uint32(end.Sub(start).Hours() / 8) + case TwelveHour: + out = uint32(end.Sub(start).Hours() / 12) + case OneDay: + out = uint32(end.Sub(start).Hours() / 24) + case ThreeDay: + out = uint32(end.Sub(start).Hours() / 72) + case FifteenDay: + out = uint32(end.Sub(start).Hours() / (24 * 15)) + case OneWeek: + out = uint32(end.Sub(start).Hours()) / (24 * 7) + case TwoWeek: + out = uint32(end.Sub(start).Hours() / (24 * 14)) + case OneYear: + out = uint32(end.Sub(start).Hours() / 8760) + } + return out +} + +// CalcDateRanges returns slice of start/end times based on start & end date +func CalcDateRanges(start, end time.Time, interval Interval, limit uint32) (out []DateRange) { + total := TotalCandlesPerInterval(start, end, interval) + if total < limit { + return []DateRange{{ + Start: start, + End: end, + }, + } + } + var allDateIntervals []time.Time + var y uint32 + var lastNum int + for d := start; !d.After(end); d = d.Add(interval.Duration()) { + allDateIntervals = append(allDateIntervals, d) + } + for x := range allDateIntervals { + if y == limit { + out = append(out, DateRange{ + allDateIntervals[x-int(limit)], + allDateIntervals[x], + }) + y = 0 + lastNum = x + } + y++ + } + if allDateIntervals != nil { + out = append(out, DateRange{ + Start: allDateIntervals[lastNum+1], + End: allDateIntervals[len(allDateIntervals)-1], + }) + } + return out +} + +// SortCandlesByTimestamp sorts candles by timestamp +func (k *Item) SortCandlesByTimestamp(asc bool) { + sort.Slice(k.Candles, func(i, j int) bool { + if asc { + return k.Candles[i].Time.After(k.Candles[j].Time) + } + return k.Candles[i].Time.Before(k.Candles[j].Time) + }) +} diff --git a/exchanges/kline/kline_test.go b/exchanges/kline/kline_test.go index bea87111..8dd21a4c 100644 --- a/exchanges/kline/kline_test.go +++ b/exchanges/kline/kline_test.go @@ -2,6 +2,7 @@ package kline import ( "math/rand" + "strings" "testing" "time" @@ -71,7 +72,7 @@ func TestValidateData(t *testing.T) { func TestCreateKline(t *testing.T) { c, err := CreateKline(nil, - time.Minute, + OneMin, currency.NewPair(currency.BTC, currency.USD), asset.Spot, "Binance") @@ -113,3 +114,190 @@ func TestCreateKline(t *testing.T) { t.Fatal("no data returned, expecting a lot.") } } + +func TestKlineWord(t *testing.T) { + if OneDay.Word() != "oneday" { + t.Fatalf("unexpected result: %v", OneDay.Word()) + } +} + +func TestKlineDuration(t *testing.T) { + if OneDay.Duration() != time.Hour*24 { + t.Fatalf("unexpected result: %v", OneDay.Duration()) + } +} + +func TestKlineShort(t *testing.T) { + if OneDay.Short() != "24h" { + t.Fatalf("unexpected result: %v", OneDay.Short()) + } +} + +func TestDurationToWord(t *testing.T) { + testCases := []struct { + name string + interval Interval + }{ + { + "OneMin", + OneMin, + }, + { + "ThreeMin", + ThreeMin, + }, + { + "FiveMin", + FiveMin, + }, + { + "TenMin", + TenMin, + }, + { + "FifteenMin", + FifteenMin, + }, + { + "ThirtyMin", + ThirtyMin, + }, + { + "OneHour", + OneHour, + }, + { + "TwoHour", + TwoHour, + }, + { + "FourHour", + FourHour, + }, + { + "SixHour", + SixHour, + }, + { + "EightHour", + OneHour * 8, + }, + { + "TwelveHour", + TwelveHour, + }, + { + "OneDay", + OneDay, + }, + { + "ThreeDay", + ThreeDay, + }, + { + "FifteenDay", + FifteenDay, + }, + { + "OneWeek", + OneWeek, + }, + { + "TwoWeek", + TwoWeek, + }, + { + "OneMonth", + OneMonth, + }, + { + "notfound", + Interval(time.Hour * 1337), + }, + } + for x := range testCases { + test := testCases[x] + t.Run(test.name, func(t *testing.T) { + v := durationToWord(test.interval) + if !strings.EqualFold(v, test.name) { + t.Fatalf("%v: received %v expected %v", test.name, v, test.name) + } + }) + } +} + +func TestKlineErrors(t *testing.T) { + v := ErrorKline{ + Interval: OneYear, + } + + if v.Error() != "oneyear interval unsupported by exchange" { + t.Fatal("unexpected error returned") + } + + if v.Unwrap().Error() != "8760h0m0s interval unsupported by exchange" { + t.Fatal("unexpected error returned") + } +} + +func TestTotalCandlesPerInterval(t *testing.T) { + end := time.Now() + start := end.AddDate(-1, 0, 0) + + v := TotalCandlesPerInterval(start, end, OneYear) + if v != 1 { + t.Fatalf("unexpected result expected 1 received %v", v) + } + v = TotalCandlesPerInterval(start, end, FifteenDay) + if v != 24 { + t.Fatalf("unexpected result expected 24 received %v", v) + } +} + +func TestCalcDateRanges(t *testing.T) { + start := time.Unix(1546300800, 0) + end := time.Unix(1577836799, 0) + + v := CalcDateRanges(start, end, OneMin, 300) + + if v[0].Start.Unix() != time.Unix(1546300800, 0).Unix() { + t.Fatalf("unexpected result received %v", v[0].Start.Unix()) + } + + v = CalcDateRanges(time.Now(), time.Now().AddDate(0, 0, 1), OneDay, 100) + if len(v) != 1 { + t.Fatal("expected CalcDateRanges() with a Candle count lower than limit to return 1 result") + } +} + +func TestItem_SortCandlesByTimestamp(t *testing.T) { + var tempKline = Item{ + Exchange: "testExchange", + Pair: currency.NewPair(currency.BTC, currency.USDT), + Asset: asset.Spot, + Interval: OneDay, + } + + for x := 0; x < 100; x++ { + y := rand.Float64() + tempKline.Candles = append(tempKline.Candles, + Candle{ + Time: time.Now().AddDate(0, 0, -x), + Open: y, + High: y + float64(x), + Low: y - float64(x), + Close: y, + Volume: y, + }) + } + + tempKline.SortCandlesByTimestamp(false) + if tempKline.Candles[0].Time.After(tempKline.Candles[1].Time) { + t.Fatal("expected kline.Candles to be in descending order") + } + + tempKline.SortCandlesByTimestamp(true) + if tempKline.Candles[0].Time.Before(tempKline.Candles[1].Time) { + t.Fatal("expected kline.Candles to be in ascending order") + } +} diff --git a/exchanges/kline/kline_types.go b/exchanges/kline/kline_types.go new file mode 100644 index 00000000..56783c06 --- /dev/null +++ b/exchanges/kline/kline_types.go @@ -0,0 +1,96 @@ +package kline + +import ( + "fmt" + "time" + + "github.com/thrasher-corp/gocryptotrader/currency" + "github.com/thrasher-corp/gocryptotrader/exchanges/asset" +) + +// Consts here define basic time intervals +const ( + FifteenSecond = Interval(15 * time.Second) + OneMin = Interval(time.Minute) + ThreeMin = 3 * OneMin + FiveMin = 5 * OneMin + TenMin = 10 * OneMin + FifteenMin = 15 * OneMin + ThirtyMin = 30 * OneMin + OneHour = Interval(time.Hour) + TwoHour = 2 * OneHour + FourHour = 4 * OneHour + SixHour = 6 * OneHour + EightHour = 8 * OneHour + TwelveHour = 12 * OneHour + OneDay = 24 * OneHour + ThreeDay = 3 * OneDay + SevenDay = 7 * OneDay + FifteenDay = 15 * OneDay + OneWeek = 7 * OneDay + TwoWeek = 2 * OneWeek + OneMonth = 31 * OneDay + OneYear = 365 * OneDay +) + +const ( + // ErrUnsupportedInterval locale for an unsupported interval + ErrUnsupportedInterval = "%s interval unsupported by exchange" + // ErrRequestExceedsExchangeLimits locale for exceeding rate limits message + ErrRequestExceedsExchangeLimits = "requested data would exceed exchange limits please lower range or use GetHistoricCandlesEx" +) + +// Item holds all the relevant information for internal kline elements +type Item struct { + Exchange string + Pair currency.Pair + Asset asset.Item + Interval Interval + Candles []Candle +} + +// Candle holds historic rate information. +type Candle struct { + Time time.Time + Open float64 + High float64 + Low float64 + Close float64 + Volume float64 +} + +// ExchangeCapabilitiesSupported all kline related exchange supported options +type ExchangeCapabilitiesSupported struct { + Intervals bool + DateRanges bool +} + +// ExchangeCapabilitiesEnabled all kline related exchange enabled options +type ExchangeCapabilitiesEnabled struct { + Intervals map[string]bool `json:"intervals,omitempty"` + ResultLimit uint32 +} + +// Interval type for kline Interval usage +type Interval time.Duration + +// ErrorKline struct to hold kline interval errors +type ErrorKline struct { + Interval Interval +} + +// Error returns short interval unsupported message +func (k ErrorKline) Error() string { + return fmt.Sprintf(ErrUnsupportedInterval, k.Interval.Word()) +} + +// Unwrap returns interval unsupported message +func (k *ErrorKline) Unwrap() error { + return fmt.Errorf(ErrUnsupportedInterval, k.Interval) +} + +// DateRange holds a start and end date for kline usage +type DateRange struct { + Start time.Time + End time.Time +} diff --git a/exchanges/kline/types.go b/exchanges/kline/types.go deleted file mode 100644 index b3957c89..00000000 --- a/exchanges/kline/types.go +++ /dev/null @@ -1,45 +0,0 @@ -package kline - -import ( - "time" - - "github.com/thrasher-corp/gocryptotrader/currency" - "github.com/thrasher-corp/gocryptotrader/exchanges/asset" -) - -// Consts here define basic time intervals -const ( - FifteenSecond = 15 * time.Second - OneMin = time.Minute - ThreeMin = 3 * time.Minute - FiveMin = 5 * time.Minute - FifteenMin = 15 * time.Minute - ThirtyMin = 30 * time.Minute - OneHour = 1 * time.Hour - TwoHour = 2 * time.Hour - FourHour = 4 * time.Hour - SixHour = 6 * time.Hour - TwelveHour = 12 * time.Hour - OneDay = 24 * time.Hour - ThreeDay = 72 * time.Hour - OneWeek = 168 * time.Hour -) - -// Item holds all the relevant information for internal kline elements -type Item struct { - Exchange string - Pair currency.Pair - Asset asset.Item - Interval time.Duration - Candles []Candle -} - -// Candle holds historic rate information. -type Candle struct { - Time time.Time - Open float64 - High float64 - Low float64 - Close float64 - Volume float64 -} diff --git a/exchanges/kraken/kraken.go b/exchanges/kraken/kraken.go index 2465a197..1398b141 100644 --- a/exchanges/kraken/kraken.go +++ b/exchanges/kraken/kraken.go @@ -216,10 +216,10 @@ func (k *Kraken) GetTickers(pairList string) (map[string]Ticker, error) { } // GetOHLC returns an array of open high low close values of a currency pair -func (k *Kraken) GetOHLC(symbol string) ([]OpenHighLowClose, error) { +func (k *Kraken) GetOHLC(symbol, interval string) ([]OpenHighLowClose, error) { values := url.Values{} values.Set("pair", symbol) - + values.Set("interval", interval) type Response struct { Error []interface{} `json:"error"` Data map[string]interface{} `json:"result"` @@ -239,6 +239,11 @@ func (k *Kraken) GetOHLC(symbol string) ([]OpenHighLowClose, error) { return OHLC, fmt.Errorf("getOHLC error: %s", result.Error) } + _, ok := result.Data[symbol].([]interface{}) + if !ok { + return nil, errors.New("invalid data returned") + } + for _, y := range result.Data[symbol].([]interface{}) { o := OpenHighLowClose{} for i, x := range y.([]interface{}) { @@ -275,7 +280,6 @@ func (k *Kraken) GetDepth(symbol string) (Orderbook, error) { var orderBook Orderbook path := fmt.Sprintf("%s/%s/public/%s?%s", k.API.Endpoints.URL, krakenAPIVersion, krakenDepth, values.Encode()) - err := k.SendHTTPRequest(path, &result) if err != nil { return orderBook, err diff --git a/exchanges/kraken/kraken_test.go b/exchanges/kraken/kraken_test.go index 931407bd..02ef59f1 100644 --- a/exchanges/kraken/kraken_test.go +++ b/exchanges/kraken/kraken_test.go @@ -6,6 +6,7 @@ import ( "os" "strings" "testing" + "time" "github.com/gorilla/websocket" "github.com/thrasher-corp/gocryptotrader/common/convert" @@ -13,6 +14,8 @@ import ( "github.com/thrasher-corp/gocryptotrader/core" "github.com/thrasher-corp/gocryptotrader/currency" exchange "github.com/thrasher-corp/gocryptotrader/exchanges" + "github.com/thrasher-corp/gocryptotrader/exchanges/asset" + "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/order" "github.com/thrasher-corp/gocryptotrader/exchanges/sharedtestvalues" "github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler" @@ -160,7 +163,7 @@ func TestGetTickers(t *testing.T) { // TestGetOHLC API endpoint test func TestGetOHLC(t *testing.T) { t.Parallel() - _, err := k.GetOHLC("BCHEUR") + _, err := k.GetOHLC("XXBTZUSD", "1440") if err != nil { t.Error("GetOHLC() error", err) } @@ -1421,3 +1424,60 @@ func TestParseTime(t *testing.T) { t.Error("unexpected result") } } + +func TestGetHistoricCandles(t *testing.T) { + currencyPair := currency.NewPairFromString("XBTUSD") + _, err := k.GetHistoricCandles(currencyPair, asset.Spot, time.Now().AddDate(0, 0, -1), time.Now(), kline.OneMin) + if err != nil { + t.Fatal(err) + } + + _, err = k.GetHistoricCandles(currencyPair, asset.Spot, time.Now(), time.Now(), kline.Interval(time.Hour*7)) + if err == nil { + t.Fatal("unexpected result") + } +} + +func TestGetHistoricCandlesExtended(t *testing.T) { + currencyPair := currency.NewPairFromString("XBTUSD") + _, err := k.GetHistoricCandlesExtended(currencyPair, asset.Spot, time.Now().AddDate(0, -6, 0), time.Now(), kline.OneDay) + if err != nil { + t.Fatal(err) + } + + _, err = k.GetHistoricCandlesExtended(currencyPair, asset.Spot, time.Now(), time.Now(), kline.Interval(time.Hour*7)) + if err == nil { + t.Fatal("unexpected result") + } +} + +func Test_FormatExchangeKlineInterval(t *testing.T) { + testCases := []struct { + name string + interval kline.Interval + output string + }{ + { + "OneMin", + kline.OneMin, + "1", + }, + { + "OneDay", + kline.OneDay, + "1440", + }, + } + + for x := range testCases { + test := testCases[x] + + t.Run(test.name, func(t *testing.T) { + ret := k.FormatExchangeKlineInterval(test.interval) + + if ret != test.output { + t.Fatalf("unexpected result return expected: %v received: %v", test.output, ret) + } + }) + } +} diff --git a/exchanges/kraken/kraken_wrapper.go b/exchanges/kraken/kraken_wrapper.go index 65e575e5..1e39c9e4 100644 --- a/exchanges/kraken/kraken_wrapper.go +++ b/exchanges/kraken/kraken_wrapper.go @@ -119,9 +119,27 @@ func (k *Kraken) SetDefaults() { exchange.WithdrawCryptoWith2FA | exchange.AutoWithdrawFiatWithSetup | exchange.WithdrawFiatWith2FA, + Kline: kline.ExchangeCapabilitiesSupported{ + DateRanges: true, + Intervals: true, + }, }, Enabled: exchange.FeaturesEnabled{ AutoPairUpdates: true, + Kline: kline.ExchangeCapabilitiesEnabled{ + Intervals: map[string]bool{ + kline.OneMin.Word(): true, + kline.ThreeMin.Word(): true, + kline.FiveMin.Word(): true, + kline.FifteenMin.Word(): true, + kline.ThirtyMin.Word(): true, + kline.OneHour.Word(): true, + kline.FourHour.Word(): true, + kline.OneDay.Word(): true, + kline.FifteenDay.Word(): true, + kline.OneWeek.Word(): true, + }, + }, }, } @@ -770,7 +788,88 @@ func (k *Kraken) ValidateCredentials() error { return k.CheckTransientError(err) } -// GetHistoricCandles returns candles between a time period for a set time interval -func (k *Kraken) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval time.Duration) (kline.Item, error) { - return kline.Item{}, common.ErrNotYetImplemented +// FormatExchangeKlineInterval returns Interval to exchange formatted string +func (k *Kraken) FormatExchangeKlineInterval(in kline.Interval) string { + return strconv.FormatFloat(in.Duration().Minutes(), 'f', -1, 64) +} + +// GetHistoricCandles returns candles between a time period for a set time interval +func (k *Kraken) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + if !k.KlineIntervalEnabled(interval) { + return kline.Item{}, kline.ErrorKline{ + Interval: interval, + } + } + + ret := kline.Item{ + Exchange: k.Name, + Pair: pair, + Asset: a, + Interval: interval, + } + candles, err := k.GetOHLC(assetTranslator.LookupCurrency(k.FormatExchangeCurrency(pair, a).Upper().String()), k.FormatExchangeKlineInterval(interval)) + if err != nil { + return kline.Item{}, err + } + for x := range candles { + timeValue, err := convert.TimeFromUnixTimestampFloat(candles[x].Time * 1000) + if err != nil { + return kline.Item{}, err + } + if timeValue.Before(start) || timeValue.After(end) { + continue + } + ret.Candles = append(ret.Candles, kline.Candle{ + Time: timeValue, + Open: candles[x].Open, + High: candles[x].Close, + Low: candles[x].Low, + Close: candles[x].Close, + Volume: candles[x].Volume, + }) + } + + ret.SortCandlesByTimestamp(false) + return ret, nil +} + +// GetHistoricCandlesExtended returns candles between a time period for a set time interval +func (k *Kraken) GetHistoricCandlesExtended(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + if !k.KlineIntervalEnabled(interval) { + return kline.Item{}, kline.ErrorKline{ + Interval: interval, + } + } + + ret := kline.Item{ + Exchange: k.Name, + Pair: pair, + Asset: a, + Interval: interval, + } + + candles, err := k.GetOHLC(assetTranslator.LookupCurrency(k.FormatExchangeCurrency(pair, a).Upper().String()), k.FormatExchangeKlineInterval(interval)) + if err != nil { + return kline.Item{}, err + } + for i := range candles { + timeValue, err := convert.TimeFromUnixTimestampFloat(candles[i].Time * 1000) + if err != nil { + return kline.Item{}, err + } + if timeValue.Before(start) || timeValue.After(end) { + continue + } + ret.Candles = append(ret.Candles, kline.Candle{ + Time: timeValue, + Open: candles[i].Open, + High: candles[i].Close, + Low: candles[i].Low, + Close: candles[i].Close, + Volume: candles[i].Volume, + }) + } + + ret.SortCandlesByTimestamp(false) + return ret, nil } diff --git a/exchanges/lakebtc/lakebtc.go b/exchanges/lakebtc/lakebtc.go index 484bef2d..6279d390 100644 --- a/exchanges/lakebtc/lakebtc.go +++ b/exchanges/lakebtc/lakebtc.go @@ -6,6 +6,7 @@ import ( "errors" "fmt" "net/http" + "net/url" "strconv" "strings" @@ -140,8 +141,13 @@ func (l *LakeBTC) GetOrderBook(currency string) (Orderbook, error) { } // GetTradeHistory returns the trade history for a given currency pair -func (l *LakeBTC) GetTradeHistory(currency string) ([]TradeHistory, error) { - path := fmt.Sprintf("%s/%s?symbol=%s", l.API.Endpoints.URL, lakeBTCTrades, strings.ToLower(currency)) +func (l *LakeBTC) GetTradeHistory(currency string, start int64) ([]TradeHistory, error) { + v := url.Values{} + v.Set("symbol", strings.ToLower(currency)) + if start != 0 { + v.Set("at", strconv.FormatInt(start, 10)) + } + path := fmt.Sprintf("%s/%s?%s", l.API.Endpoints.URL, lakeBTCTrades, v.Encode()) var resp []TradeHistory return resp, l.SendHTTPRequest(path, &resp) } diff --git a/exchanges/lakebtc/lakebtc_test.go b/exchanges/lakebtc/lakebtc_test.go index 9a83ff7d..460f35b9 100644 --- a/exchanges/lakebtc/lakebtc_test.go +++ b/exchanges/lakebtc/lakebtc_test.go @@ -4,6 +4,7 @@ import ( "log" "os" "testing" + "time" "github.com/thrasher-corp/gocryptotrader/common" "github.com/thrasher-corp/gocryptotrader/config" @@ -76,7 +77,7 @@ func TestGetOrderBook(t *testing.T) { func TestGetTradeHistory(t *testing.T) { t.Parallel() - _, err := l.GetTradeHistory("BTCUSD") + _, err := l.GetTradeHistory("BTCUSD", time.Now().Unix()) if err != nil { t.Error("GetTradeHistory() error", err) } diff --git a/exchanges/lakebtc/lakebtc_wrapper.go b/exchanges/lakebtc/lakebtc_wrapper.go index def38cc6..ec0007c7 100644 --- a/exchanges/lakebtc/lakebtc_wrapper.go +++ b/exchanges/lakebtc/lakebtc_wrapper.go @@ -560,6 +560,11 @@ func (l *LakeBTC) ValidateCredentials() error { } // GetHistoricCandles returns candles between a time period for a set time interval -func (l *LakeBTC) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval time.Duration) (kline.Item, error) { - return kline.Item{}, common.ErrNotYetImplemented +func (l *LakeBTC) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + return kline.Item{}, common.ErrFunctionNotSupported +} + +// GetHistoricCandlesExtended returns candles between a time period for a set time interval +func (l *LakeBTC) GetHistoricCandlesExtended(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + return kline.Item{}, common.ErrFunctionNotSupported } diff --git a/exchanges/lbank/lbank_test.go b/exchanges/lbank/lbank_test.go index a7db8c2e..2772c056 100644 --- a/exchanges/lbank/lbank_test.go +++ b/exchanges/lbank/lbank_test.go @@ -11,6 +11,7 @@ import ( "github.com/thrasher-corp/gocryptotrader/currency" exchange "github.com/thrasher-corp/gocryptotrader/exchanges" "github.com/thrasher-corp/gocryptotrader/exchanges/asset" + "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/order" ) @@ -406,3 +407,75 @@ func TestGetOrderHistory(t *testing.T) { t.Error(err) } } + +func TestGetHistoricCandles(t *testing.T) { + t.Parallel() + pair := currency.NewPairFromString(testCurrencyPair) + _, err := l.GetHistoricCandles(pair, asset.Spot, time.Now().Add(-24*time.Hour), time.Now(), kline.OneMin) + if err != nil { + t.Fatal(err) + } + + _, err = l.GetHistoricCandles(pair, asset.Spot, time.Now().Add(-24*time.Hour), time.Now(), kline.OneHour) + if err != nil { + t.Fatal(err) + } +} + +func TestGetHistoricCandlesExtended(t *testing.T) { + t.Parallel() + + startTime := time.Now().Add(-time.Hour) + end := time.Now() + pair := currency.NewPairFromString(testCurrencyPair) + _, err := l.GetHistoricCandlesExtended(pair, asset.Spot, startTime, end, kline.OneMin) + if err != nil { + t.Fatal(err) + } +} + +func Test_FormatExchangeKlineInterval(t *testing.T) { + testCases := []struct { + name string + interval kline.Interval + output string + }{ + { + "OneMin", + kline.OneMin, + "minute1", + }, + { + "OneHour", + kline.OneHour, + "hour1", + }, + { + "OneDay", + kline.OneDay, + "day1", + }, + { + "OneWeek", + kline.OneWeek, + "week1", + }, + { + "AllOther", + kline.FifteenDay, + "", + }, + } + + for x := range testCases { + test := testCases[x] + + t.Run(test.name, func(t *testing.T) { + ret := l.FormatExchangeKlineInterval(test.interval) + + if ret != test.output { + t.Fatalf("unexpected result return expected: %v received: %v", test.output, ret) + } + }) + } +} diff --git a/exchanges/lbank/lbank_wrapper.go b/exchanges/lbank/lbank_wrapper.go index 014a3f85..4653a872 100644 --- a/exchanges/lbank/lbank_wrapper.go +++ b/exchanges/lbank/lbank_wrapper.go @@ -95,6 +95,21 @@ func (l *Lbank) SetDefaults() { }, Enabled: exchange.FeaturesEnabled{ AutoPairUpdates: true, + Kline: kline.ExchangeCapabilitiesEnabled{ + Intervals: map[string]bool{ + kline.OneMin.Word(): true, + kline.FiveMin.Word(): true, + kline.FifteenMin.Word(): true, + kline.ThirtyMin.Word(): true, + kline.OneHour.Word(): true, + kline.FourHour.Word(): true, + kline.EightHour.Word(): true, + kline.TwelveHour.Word(): true, + kline.OneDay.Word(): true, + kline.OneWeek.Word(): true, + }, + ResultLimit: 2880, + }, }, } @@ -718,7 +733,99 @@ func (l *Lbank) ValidateCredentials() error { return l.CheckTransientError(err) } -// GetHistoricCandles returns candles between a time period for a set time interval -func (l *Lbank) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval time.Duration) (kline.Item, error) { - return kline.Item{}, common.ErrFunctionNotSupported +// FormatExchangeKlineInterval returns Interval to exchange formatted string +func (l *Lbank) FormatExchangeKlineInterval(in kline.Interval) string { + switch in { + case kline.OneMin, kline.ThreeMin, + kline.FiveMin, kline.FifteenMin, kline.ThirtyMin: + return "minute" + in.Short()[:len(in.Short())-1] + case kline.OneHour, kline.FourHour, + kline.EightHour, kline.TwelveHour: + return "hour" + in.Short()[:len(in.Short())-1] + case kline.OneDay: + return "day1" + case kline.OneWeek: + return "week1" + } + return "" +} + +// GetHistoricCandles returns candles between a time period for a set time interval +func (l *Lbank) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + if !l.KlineIntervalEnabled(interval) { + return kline.Item{}, kline.ErrorKline{ + Interval: interval, + } + } + + data, err := l.GetKlines(l.FormatExchangeCurrency(pair, a).String(), + strconv.FormatInt(int64(l.Features.Enabled.Kline.ResultLimit), 10), + l.FormatExchangeKlineInterval(interval), + strconv.FormatInt(start.Unix(), 10)) + if err != nil { + return kline.Item{}, err + } + + ret := kline.Item{ + Exchange: l.Name, + Pair: pair, + Asset: a, + Interval: interval, + } + + for x := range data { + ret.Candles = append(ret.Candles, kline.Candle{ + Time: time.Unix(data[x].TimeStamp, 0), + Open: data[x].OpenPrice, + High: data[x].HigestPrice, + Low: data[x].LowestPrice, + Close: data[x].ClosePrice, + Volume: data[x].TradingVolume, + }) + } + + ret.SortCandlesByTimestamp(false) + return ret, nil +} + +// GetHistoricCandlesExtended returns candles between a time period for a set time interval +func (l *Lbank) GetHistoricCandlesExtended(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + if !l.KlineIntervalEnabled(interval) { + return kline.Item{}, kline.ErrorKline{ + Interval: interval, + } + } + ret := kline.Item{ + Exchange: l.Name, + Pair: pair, + Asset: a, + Interval: interval, + } + + dates := kline.CalcDateRanges(start, end, interval, l.Features.Enabled.Kline.ResultLimit) + for x := range dates { + data, err := l.GetKlines(l.FormatExchangeCurrency(pair, a).String(), + strconv.FormatInt(int64(l.Features.Enabled.Kline.ResultLimit), 10), + l.FormatExchangeKlineInterval(interval), + strconv.FormatInt(dates[x].Start.UTC().Unix(), 10)) + if err != nil { + return kline.Item{}, err + } + for i := range data { + if time.Unix(data[i].TimeStamp, 0).UTC().Before(dates[x].Start.UTC()) || time.Unix(data[i].TimeStamp, 0).UTC().After(dates[x].End.UTC()) { + continue + } + ret.Candles = append(ret.Candles, kline.Candle{ + Time: time.Unix(data[i].TimeStamp, 0).UTC(), + Open: data[i].OpenPrice, + High: data[i].HigestPrice, + Low: data[i].LowestPrice, + Close: data[i].ClosePrice, + Volume: data[i].TradingVolume, + }) + } + } + + ret.SortCandlesByTimestamp(false) + return ret, nil } diff --git a/exchanges/localbitcoins/localbitcoins_wrapper.go b/exchanges/localbitcoins/localbitcoins_wrapper.go index 3ea0cfa6..bbd6c3d2 100644 --- a/exchanges/localbitcoins/localbitcoins_wrapper.go +++ b/exchanges/localbitcoins/localbitcoins_wrapper.go @@ -599,6 +599,11 @@ func (l *LocalBitcoins) ValidateCredentials() error { } // GetHistoricCandles returns candles between a time period for a set time interval -func (l *LocalBitcoins) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval time.Duration) (kline.Item, error) { +func (l *LocalBitcoins) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + return kline.Item{}, common.ErrFunctionNotSupported +} + +// GetHistoricCandlesExtended returns candles between a time period for a set time interval +func (l *LocalBitcoins) GetHistoricCandlesExtended(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { return kline.Item{}, common.ErrFunctionNotSupported } diff --git a/exchanges/okcoin/okcoin_test.go b/exchanges/okcoin/okcoin_test.go index 7e591909..35dc8a68 100644 --- a/exchanges/okcoin/okcoin_test.go +++ b/exchanges/okcoin/okcoin_test.go @@ -17,6 +17,7 @@ import ( "github.com/thrasher-corp/gocryptotrader/currency" exchange "github.com/thrasher-corp/gocryptotrader/exchanges" "github.com/thrasher-corp/gocryptotrader/exchanges/asset" + "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/okgroup" "github.com/thrasher-corp/gocryptotrader/exchanges/order" "github.com/thrasher-corp/gocryptotrader/exchanges/sharedtestvalues" @@ -483,11 +484,12 @@ func TestGetSpotFilledOrdersInformation(t *testing.T) { // TestGetSpotMarketData API endpoint test func TestGetSpotMarketData(t *testing.T) { - request := okgroup.GetSpotMarketDataRequest{ + request := &okgroup.GetMarketDataRequest{ + Asset: asset.Spot, InstrumentID: spotCurrency, - Granularity: 604800, + Granularity: "604800", } - _, err := o.GetSpotMarketData(request) + _, err := o.GetMarketData(request) if err != nil { t.Error(err) } @@ -1095,3 +1097,26 @@ func TestGetOrderbook(t *testing.T) { t.Error("error cannot be nil") } } + +func TestGetHistoricCandles(t *testing.T) { + currencyPair := currency.NewPairFromString("BTCUSDT") + startTime := time.Unix(1588636800, 0) + _, err := o.GetHistoricCandles(currencyPair, asset.Spot, startTime, time.Now(), kline.OneMin) + if err != nil { + t.Fatal(err) + } +} + +func TestGetHistoricCandlesExtended(t *testing.T) { + currencyPair := currency.NewPairFromString("BTCUSDT") + startTime := time.Unix(1588636800, 0) + _, err := o.GetHistoricCandlesExtended(currencyPair, asset.Spot, startTime, time.Now(), kline.OneMin) + if err != nil { + t.Fatal(err) + } + + _, err = o.GetHistoricCandles(currencyPair, asset.Spot, startTime, time.Now(), kline.Interval(time.Hour*7)) + if err == nil { + t.Fatal("unexpected result") + } +} diff --git a/exchanges/okcoin/okcoin_wrapper.go b/exchanges/okcoin/okcoin_wrapper.go index 1adc96ae..934493b0 100644 --- a/exchanges/okcoin/okcoin_wrapper.go +++ b/exchanges/okcoin/okcoin_wrapper.go @@ -1,15 +1,18 @@ package okcoin import ( + "errors" "sync" "time" "github.com/thrasher-corp/gocryptotrader/common" + "github.com/thrasher-corp/gocryptotrader/common/convert" "github.com/thrasher-corp/gocryptotrader/config" "github.com/thrasher-corp/gocryptotrader/currency" exchange "github.com/thrasher-corp/gocryptotrader/exchanges" "github.com/thrasher-corp/gocryptotrader/exchanges/asset" "github.com/thrasher-corp/gocryptotrader/exchanges/kline" + "github.com/thrasher-corp/gocryptotrader/exchanges/okgroup" "github.com/thrasher-corp/gocryptotrader/exchanges/protocol" "github.com/thrasher-corp/gocryptotrader/exchanges/request" "github.com/thrasher-corp/gocryptotrader/exchanges/ticker" @@ -111,9 +114,31 @@ func (o *OKCoin) SetDefaults() { }, WithdrawPermissions: exchange.AutoWithdrawCrypto | exchange.NoFiatWithdrawals, + Kline: kline.ExchangeCapabilitiesSupported{ + DateRanges: true, + Intervals: true, + }, }, Enabled: exchange.FeaturesEnabled{ AutoPairUpdates: true, + Kline: kline.ExchangeCapabilitiesEnabled{ + Intervals: map[string]bool{ + kline.OneMin.Word(): true, + kline.ThreeMin.Word(): true, + kline.FiveMin.Word(): true, + kline.FifteenMin.Word(): true, + kline.ThirtyMin.Word(): true, + kline.OneHour.Word(): true, + kline.TwoHour.Word(): true, + kline.FourHour.Word(): true, + kline.SixHour.Word(): true, + kline.TwelveHour.Word(): true, + kline.OneDay.Word(): true, + kline.ThreeDay.Word(): true, + kline.OneWeek.Word(): true, + }, + ResultLimit: 1440, + }, }, } @@ -263,6 +288,141 @@ func (o *OKCoin) FetchTicker(p currency.Pair, assetType asset.Item) (tickerData } // GetHistoricCandles returns candles between a time period for a set time interval -func (o *OKCoin) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval time.Duration) (kline.Item, error) { - return kline.Item{}, common.ErrFunctionNotSupported +func (o *OKCoin) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + if !o.KlineIntervalEnabled(interval) { + return kline.Item{}, kline.ErrorKline{ + Interval: interval, + } + } + + req := &okgroup.GetMarketDataRequest{ + Asset: a, + Start: start.UTC().Format(time.RFC3339), + End: end.UTC().Format(time.RFC3339), + Granularity: o.FormatExchangeKlineInterval(interval), + InstrumentID: o.FormatExchangeCurrency(pair, a).String(), + } + + candles, err := o.GetMarketData(req) + if err != nil { + return kline.Item{}, err + } + + ret := kline.Item{ + Exchange: o.Name, + Pair: pair, + Asset: a, + Interval: interval, + } + + for x := range candles { + t := candles[x].([]interface{}) + tempCandle := kline.Candle{} + v, ok := t[0].(string) + if !ok { + return kline.Item{}, errors.New("unexpected value received") + } + tempCandle.Time, err = time.Parse(time.RFC3339, v) + if err != nil { + return kline.Item{}, err + } + tempCandle.Open, err = convert.FloatFromString(t[1]) + if err != nil { + return kline.Item{}, err + } + tempCandle.High, err = convert.FloatFromString(t[2]) + if err != nil { + return kline.Item{}, err + } + + tempCandle.Low, err = convert.FloatFromString(t[3]) + if err != nil { + return kline.Item{}, err + } + + tempCandle.Close, err = convert.FloatFromString(t[4]) + if err != nil { + return kline.Item{}, err + } + + tempCandle.Volume, err = convert.FloatFromString(t[5]) + if err != nil { + return kline.Item{}, err + } + ret.Candles = append(ret.Candles, tempCandle) + } + ret.SortCandlesByTimestamp(false) + return ret, nil +} + +// GetHistoricCandlesExtended returns candles between a time period for a set time interval +func (o *OKCoin) GetHistoricCandlesExtended(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + if !o.KlineIntervalEnabled(interval) { + return kline.Item{}, kline.ErrorKline{ + Interval: interval, + } + } + + ret := kline.Item{ + Exchange: o.Name, + Pair: pair, + Asset: a, + Interval: interval, + } + + dates := kline.CalcDateRanges(start, end, interval, o.Features.Enabled.Kline.ResultLimit) + for x := range dates { + req := &okgroup.GetMarketDataRequest{ + Asset: a, + Start: dates[x].Start.UTC().Format(time.RFC3339), + End: dates[x].End.UTC().Format(time.RFC3339), + Granularity: o.FormatExchangeKlineInterval(interval), + InstrumentID: o.FormatExchangeCurrency(pair, a).String(), + } + + candles, err := o.GetMarketData(req) + if err != nil { + return kline.Item{}, err + } + + for i := range candles { + t := candles[i].([]interface{}) + tempCandle := kline.Candle{} + v, ok := t[0].(string) + if !ok { + return kline.Item{}, errors.New("unexpected value received") + } + tempCandle.Time, err = time.Parse(time.RFC3339, v) + if err != nil { + return kline.Item{}, err + } + tempCandle.Open, err = convert.FloatFromString(t[1]) + if err != nil { + return kline.Item{}, err + } + tempCandle.High, err = convert.FloatFromString(t[2]) + if err != nil { + return kline.Item{}, err + } + + tempCandle.Low, err = convert.FloatFromString(t[3]) + if err != nil { + return kline.Item{}, err + } + + tempCandle.Close, err = convert.FloatFromString(t[4]) + if err != nil { + return kline.Item{}, err + } + + tempCandle.Volume, err = convert.FloatFromString(t[5]) + if err != nil { + return kline.Item{}, err + } + ret.Candles = append(ret.Candles, tempCandle) + } + } + + ret.SortCandlesByTimestamp(false) + return ret, nil } diff --git a/exchanges/okex/okex.go b/exchanges/okex/okex.go index 10f5c778..ca94ce00 100644 --- a/exchanges/okex/okex.go +++ b/exchanges/okex/okex.go @@ -159,12 +159,6 @@ func (o *OKEX) GetFuturesFilledOrder(request okgroup.GetFuturesFilledOrderReques return resp, o.SendHTTPRequest(http.MethodGet, okGroupFuturesSubsection, requestURL, nil, &resp, true) } -// GetFuturesMarketData Get the charts of the trading pairs. Charts are returned in grouped buckets based on requested granularity. -func (o *OKEX) GetFuturesMarketData(request okgroup.GetFuturesMarketDateRequest) (resp okgroup.GetFuturesMarketDataResponse, _ error) { - requestURL := fmt.Sprintf("%v/%v/%v%v", okgroup.OKGroupInstruments, request.InstrumentID, okgroup.OKGroupGetSpotMarketData, okgroup.FormatParameters(request)) - return resp, o.SendHTTPRequest(http.MethodGet, okGroupFuturesSubsection, requestURL, nil, &resp, true) -} - // GetFuturesHoldAmount Get the number of futures with hold. func (o *OKEX) GetFuturesHoldAmount(instrumentID string) (resp okgroup.GetFuturesHoldAmountResponse, _ error) { requestURL := fmt.Sprintf("%v/%v/%v", okgroup.OKGroupAccounts, instrumentID, okGroupFutureHolds) @@ -327,12 +321,6 @@ func (o *OKEX) GetSwapFilledOrdersData(request *okgroup.GetSwapFilledOrdersDataR return resp, o.SendHTTPRequest(http.MethodGet, okGroupSwapSubsection, requestURL, nil, &resp, false) } -// GetSwapMarketData Get the charts of the trading pairs. -func (o *OKEX) GetSwapMarketData(request okgroup.GetSwapMarketDataRequest) (resp []okgroup.GetSwapMarketDataResponse, _ error) { - requestURL := fmt.Sprintf("%v/%v/%v%v", okgroup.OKGroupInstruments, request.InstrumentID, okgroup.OKGroupGetSpotMarketData, okgroup.FormatParameters(request)) - return resp, o.SendHTTPRequest(http.MethodGet, okGroupSwapSubsection, requestURL, nil, &resp, false) -} - // GetSwapIndices Get Indices of tokens. func (o *OKEX) GetSwapIndices(instrumentID string) (resp okgroup.GetSwapIndecesResponse, _ error) { requestURL := fmt.Sprintf("%v/%v/%v", okgroup.OKGroupInstruments, instrumentID, okGroupIndices) diff --git a/exchanges/okex/okex_test.go b/exchanges/okex/okex_test.go index 57fa4eb6..b617be77 100644 --- a/exchanges/okex/okex_test.go +++ b/exchanges/okex/okex_test.go @@ -19,6 +19,7 @@ import ( "github.com/thrasher-corp/gocryptotrader/currency" exchange "github.com/thrasher-corp/gocryptotrader/exchanges" "github.com/thrasher-corp/gocryptotrader/exchanges/asset" + "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/okgroup" "github.com/thrasher-corp/gocryptotrader/exchanges/order" "github.com/thrasher-corp/gocryptotrader/exchanges/sharedtestvalues" @@ -519,16 +520,56 @@ func TestGetSpotFilledOrdersInformation(t *testing.T) { // TestGetSpotMarketData API endpoint test func TestGetSpotMarketData(t *testing.T) { t.Parallel() - request := okgroup.GetSpotMarketDataRequest{ + request := &okgroup.GetMarketDataRequest{ + Asset: asset.Spot, InstrumentID: spotCurrency, - Granularity: 604800, + Granularity: "604800", } - _, err := o.GetSpotMarketData(request) + _, err := o.GetMarketData(request) if err != nil { t.Error(err) } } +func TestGetHistoricCandles(t *testing.T) { + currencyPair := currency.NewPairFromString("BTCUSDT") + startTime := time.Unix(1588636800, 0) + _, err := o.GetHistoricCandles(currencyPair, asset.Spot, startTime, time.Now(), kline.OneMin) + if err != nil { + t.Fatal(err) + } + + _, err = o.GetHistoricCandles(currencyPair, asset.Spot, startTime, time.Now(), kline.Interval(time.Hour*7)) + if err == nil { + t.Fatal("unexpected result") + } + + _, err = o.GetHistoricCandles(currencyPair, asset.Margin, startTime, time.Now(), kline.Interval(time.Hour*7)) + if err == nil { + t.Fatal("unexpected result") + } + + swapPair := currency.NewPairFromString("BTC-USD_SWAP") + _, err = o.GetHistoricCandles(swapPair, asset.PerpetualSwap, startTime, time.Now(), kline.OneDay) + if err != nil { + t.Fatal(err) + } +} + +func TestGetHistoricCandlesExtended(t *testing.T) { + currencyPair := currency.NewPairFromString("BTCUSDT") + startTime := time.Unix(1588636800, 0) + _, err := o.GetHistoricCandlesExtended(currencyPair, asset.Spot, startTime, time.Now(), kline.OneMin) + if err != nil { + t.Fatal(err) + } + + _, err = o.GetHistoricCandles(currencyPair, asset.Spot, startTime, time.Now(), kline.Interval(time.Hour*7)) + if err == nil { + t.Fatal("unexpected result") + } +} + // TestGetMarginTradingAccounts API endpoint test func TestGetMarginTradingAccounts(t *testing.T) { t.Parallel() @@ -1240,19 +1281,6 @@ func TestGetSwapFilledOrdersData(t *testing.T) { } } -// TestGetSwapMarketData API endpoint test -func TestGetSwapMarketData(t *testing.T) { - t.Parallel() - request := okgroup.GetSwapMarketDataRequest{ - InstrumentID: fmt.Sprintf("%v-%v-SWAP", currency.BTC, currency.USD), - Granularity: 604800, - } - _, err := o.GetSwapMarketData(request) - if err != nil { - t.Error(err) - } -} - // TestGetSwapIndeces API endpoint test func TestGetSwapIndeces(t *testing.T) { t.Parallel() diff --git a/exchanges/okex/okex_wrapper.go b/exchanges/okex/okex_wrapper.go index ecfe0938..2f83ac16 100644 --- a/exchanges/okex/okex_wrapper.go +++ b/exchanges/okex/okex_wrapper.go @@ -8,11 +8,13 @@ import ( "time" "github.com/thrasher-corp/gocryptotrader/common" + "github.com/thrasher-corp/gocryptotrader/common/convert" "github.com/thrasher-corp/gocryptotrader/config" "github.com/thrasher-corp/gocryptotrader/currency" exchange "github.com/thrasher-corp/gocryptotrader/exchanges" "github.com/thrasher-corp/gocryptotrader/exchanges/asset" "github.com/thrasher-corp/gocryptotrader/exchanges/kline" + "github.com/thrasher-corp/gocryptotrader/exchanges/okgroup" "github.com/thrasher-corp/gocryptotrader/exchanges/protocol" "github.com/thrasher-corp/gocryptotrader/exchanges/request" "github.com/thrasher-corp/gocryptotrader/exchanges/ticker" @@ -145,9 +147,31 @@ func (o *OKEX) SetDefaults() { }, WithdrawPermissions: exchange.AutoWithdrawCrypto | exchange.NoFiatWithdrawals, + Kline: kline.ExchangeCapabilitiesSupported{ + DateRanges: true, + Intervals: true, + }, }, Enabled: exchange.FeaturesEnabled{ AutoPairUpdates: true, + Kline: kline.ExchangeCapabilitiesEnabled{ + Intervals: map[string]bool{ + kline.OneMin.Word(): true, + kline.ThreeMin.Word(): true, + kline.FiveMin.Word(): true, + kline.FifteenMin.Word(): true, + kline.ThirtyMin.Word(): true, + kline.OneHour.Word(): true, + kline.TwoHour.Word(): true, + kline.FourHour.Word(): true, + kline.SixHour.Word(): true, + kline.TwelveHour.Word(): true, + kline.OneDay.Word(): true, + kline.ThreeDay.Word(): true, + kline.OneWeek.Word(): true, + }, + ResultLimit: 1440, + }, }, } @@ -419,6 +443,142 @@ func (o *OKEX) FetchTicker(p currency.Pair, assetType asset.Item) (tickerData *t } // GetHistoricCandles returns candles between a time period for a set time interval -func (o *OKEX) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval time.Duration) (kline.Item, error) { - return kline.Item{}, common.ErrFunctionNotSupported +func (o *OKEX) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + if !o.KlineIntervalEnabled(interval) { + return kline.Item{}, kline.ErrorKline{ + Interval: interval, + } + } + + req := &okgroup.GetMarketDataRequest{ + Asset: a, + Start: start.UTC().Format(time.RFC3339), + End: end.UTC().Format(time.RFC3339), + Granularity: o.FormatExchangeKlineInterval(interval), + InstrumentID: o.FormatExchangeCurrency(pair, a).String(), + } + + candles, err := o.GetMarketData(req) + if err != nil { + return kline.Item{}, err + } + + ret := kline.Item{ + Exchange: o.Name, + Pair: pair, + Asset: a, + Interval: interval, + } + + for x := range candles { + t := candles[x].([]interface{}) + tempCandle := kline.Candle{} + v, ok := t[0].(string) + if !ok { + return kline.Item{}, errors.New("unexpected value received") + } + tempCandle.Time, err = time.Parse(time.RFC3339, v) + if err != nil { + return kline.Item{}, err + } + tempCandle.Open, err = convert.FloatFromString(t[1]) + if err != nil { + return kline.Item{}, err + } + tempCandle.High, err = convert.FloatFromString(t[2]) + if err != nil { + return kline.Item{}, err + } + + tempCandle.Low, err = convert.FloatFromString(t[3]) + if err != nil { + return kline.Item{}, err + } + + tempCandle.Close, err = convert.FloatFromString(t[4]) + if err != nil { + return kline.Item{}, err + } + + tempCandle.Volume, err = convert.FloatFromString(t[5]) + if err != nil { + return kline.Item{}, err + } + ret.Candles = append(ret.Candles, tempCandle) + } + + ret.SortCandlesByTimestamp(false) + return ret, nil +} + +// GetHistoricCandlesExtended returns candles between a time period for a set time interval +func (o *OKEX) GetHistoricCandlesExtended(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + if !o.KlineIntervalEnabled(interval) { + return kline.Item{}, kline.ErrorKline{ + Interval: interval, + } + } + + ret := kline.Item{ + Exchange: o.Name, + Pair: pair, + Asset: a, + Interval: interval, + } + + dates := kline.CalcDateRanges(start, end, interval, o.Features.Enabled.Kline.ResultLimit) + for x := range dates { + req := &okgroup.GetMarketDataRequest{ + Asset: a, + Start: dates[x].Start.UTC().Format(time.RFC3339), + End: dates[x].End.UTC().Format(time.RFC3339), + Granularity: o.FormatExchangeKlineInterval(interval), + InstrumentID: o.FormatExchangeCurrency(pair, a).String(), + } + + candles, err := o.GetMarketData(req) + if err != nil { + return kline.Item{}, err + } + + for i := range candles { + t := candles[i].([]interface{}) + tempCandle := kline.Candle{} + v, ok := t[0].(string) + if !ok { + return kline.Item{}, errors.New("unexpected value received") + } + tempCandle.Time, err = time.Parse(time.RFC3339, v) + if err != nil { + return kline.Item{}, err + } + tempCandle.Open, err = convert.FloatFromString(t[1]) + if err != nil { + return kline.Item{}, err + } + tempCandle.High, err = convert.FloatFromString(t[2]) + if err != nil { + return kline.Item{}, err + } + + tempCandle.Low, err = convert.FloatFromString(t[3]) + if err != nil { + return kline.Item{}, err + } + + tempCandle.Close, err = convert.FloatFromString(t[4]) + if err != nil { + return kline.Item{}, err + } + + tempCandle.Volume, err = convert.FloatFromString(t[5]) + if err != nil { + return kline.Item{}, err + } + ret.Candles = append(ret.Candles, tempCandle) + } + } + + ret.SortCandlesByTimestamp(false) + return ret, nil } diff --git a/exchanges/okgroup/okgroup.go b/exchanges/okgroup/okgroup.go index 66a9a955..c0eb4c1d 100644 --- a/exchanges/okgroup/okgroup.go +++ b/exchanges/okgroup/okgroup.go @@ -28,9 +28,11 @@ const ( // OKGroupAPIPath const to help with api url formatting OKGroupAPIPath = "api/" // API subsections - okGroupAccountSubsection = "account" - okGroupTokenSubsection = "spot" - okGroupMarginTradingSubsection = "margin" + okGroupAccountSubsection = "account" + okGroupTokenSubsection = "spot" + okGroupMarginTradingSubsection = "margin" + okGroupFuturesTradingSubSection = "futures" + oKGroupSwapTradingSubSection = "swap" // OKGroupAccounts common api endpoint OKGroupAccounts = "accounts" // OKGroupLedger common api endpoint @@ -365,10 +367,21 @@ func (o *OKGroup) GetSpotFilledOrdersInformation(request GetSpotFilledOrdersInfo return resp, o.SendHTTPRequest(http.MethodGet, okGroupTokenSubsection, requestURL, nil, &resp, false) } -// GetSpotMarketData Get the charts of the trading pairs. Charts are returned in grouped buckets based on requested granularity. -func (o *OKGroup) GetSpotMarketData(request GetSpotMarketDataRequest) (resp GetSpotMarketDataResponse, _ error) { +// GetMarketData Get the charts of the trading pairs. Charts are returned in grouped buckets based on requested granularity. +func (o *OKGroup) GetMarketData(request *GetMarketDataRequest) (resp GetMarketDataResponse, err error) { requestURL := fmt.Sprintf("%v/%v/%v%v", OKGroupInstruments, request.InstrumentID, OKGroupGetSpotMarketData, FormatParameters(request)) - return resp, o.SendHTTPRequest(http.MethodGet, okGroupTokenSubsection, requestURL, nil, &resp, false) + var requestType string + switch request.Asset { + case asset.Spot, asset.Margin: + requestType = okGroupTokenSubsection + case asset.Futures: + requestType = okGroupFuturesTradingSubSection + case asset.PerpetualSwap: + requestType = oKGroupSwapTradingSubSection + default: + return nil, errors.New("asset not supported") + } + return resp, o.SendHTTPRequest(http.MethodGet, requestType, requestURL, nil, &resp, false) } // GetMarginTradingAccounts List all assets under token margin trading account, including information such as balance, amount on hold and more. diff --git a/exchanges/okgroup/okgroup_types.go b/exchanges/okgroup/okgroup_types.go index 2dea7f3b..3f70b66d 100644 --- a/exchanges/okgroup/okgroup_types.go +++ b/exchanges/okgroup/okgroup_types.go @@ -4,6 +4,7 @@ import ( "time" "github.com/thrasher-corp/gocryptotrader/currency" + "github.com/thrasher-corp/gocryptotrader/exchanges/asset" ) // Order types @@ -329,15 +330,16 @@ type GetSpotFilledOrdersInformationResponse struct { TradeID string `json:"trade_id"` } -// GetSpotMarketDataRequest request data for GetSpotMarketData -type GetSpotMarketDataRequest struct { +// GetMarketDataRequest request data for GetMarketData +type GetMarketDataRequest struct { + Asset asset.Item Start string `url:"start,omitempty"` // [optional] start time in ISO 8601 End string `url:"end,omitempty"` // [optional] end time in ISO 8601 - Granularity int64 `url:"granularity"` // The granularity field must be one of the following values: {60, 180, 300, 900, 1800, 3600, 7200, 14400, 43200, 86400, 604800}. + Granularity string `url:"granularity"` // The granularity field must be one of the following values: {60, 180, 300, 900, 1800, 3600, 7200, 14400, 43200, 86400, 604800}. InstrumentID string `url:"-"` // [required] trading pairs } -// GetSpotMarketDataResponse response data for GetSpotMarketData +// GetMarketDataResponse response data for GetMarketData // Return Parameters // time string Start time // open string Open price @@ -345,7 +347,7 @@ type GetSpotMarketDataRequest struct { // low string Lowest price // close string Close price // volume string Trading volume -type GetSpotMarketDataResponse []interface{} +type GetMarketDataResponse []interface{} // GetMarginAccountsResponse response data for GetMarginAccounts type GetMarginAccountsResponse struct { @@ -731,7 +733,7 @@ type GetFuturesMarketDateRequest struct { InstrumentID string `url:"-"` // [required] trading pairs } -// GetFuturesMarketDataResponse contains candle data from a GetSpotMarketDataRequest +// GetFuturesMarketDataResponse contains candle data from a GetMarketDataRequest // Return Parameters // time string Start time // open string Open price diff --git a/exchanges/poloniex/poloniex.go b/exchanges/poloniex/poloniex.go index e82c7799..f1205e96 100644 --- a/exchanges/poloniex/poloniex.go +++ b/exchanges/poloniex/poloniex.go @@ -177,30 +177,44 @@ func (p *Poloniex) GetTradeHistory(currencyPair, start, end string) ([]TradeHist } // GetChartData returns chart data for a specific currency pair -func (p *Poloniex) GetChartData(currencyPair, start, end, period string) ([]ChartData, error) { +func (p *Poloniex) GetChartData(currencyPair string, start, end time.Time, period string) ([]ChartData, error) { vals := url.Values{} vals.Set("currencyPair", currencyPair) - if start != "" { - vals.Set("start", start) + if !start.IsZero() { + vals.Set("start", strconv.FormatInt(start.Unix(), 10)) } - if end != "" { - vals.Set("end", end) + if !end.IsZero() { + vals.Set("end", strconv.FormatInt(end.Unix(), 10)) } if period != "" { vals.Set("period", period) } + var temp json.RawMessage var resp []ChartData - path := fmt.Sprintf("%s/public?command=returnChartData&%s", p.API.Endpoints.URL, vals.Encode()) - - err := p.SendHTTPRequest(path, &resp) + path := p.API.Endpoints.URL + "/public?command=returnChartData&" + vals.Encode() + err := p.SendHTTPRequest(path, &temp) if err != nil { return nil, err } + tempUnmarshal := json.Unmarshal(temp, &resp) + if tempUnmarshal != nil { + var errResp struct { + Error string `json:"error"` + } + errRet := json.Unmarshal(temp, &errResp) + if errRet != nil { + return nil, err + } + if errResp.Error != "" { + return nil, errors.New(errResp.Error) + } + } + return resp, nil } diff --git a/exchanges/poloniex/poloniex_test.go b/exchanges/poloniex/poloniex_test.go index 9b793f9e..700a1ba1 100644 --- a/exchanges/poloniex/poloniex_test.go +++ b/exchanges/poloniex/poloniex_test.go @@ -10,6 +10,8 @@ import ( "github.com/thrasher-corp/gocryptotrader/core" "github.com/thrasher-corp/gocryptotrader/currency" exchange "github.com/thrasher-corp/gocryptotrader/exchanges" + "github.com/thrasher-corp/gocryptotrader/exchanges/asset" + "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/order" "github.com/thrasher-corp/gocryptotrader/exchanges/sharedtestvalues" "github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler" @@ -63,7 +65,8 @@ func TestGetTradeHistory(t *testing.T) { func TestGetChartData(t *testing.T) { t.Parallel() - _, err := p.GetChartData("BTC_XMR", "1405699200", "1405699400", "300") + _, err := p.GetChartData("BTC_XMR", + time.Unix(1405699200, 0), time.Unix(1405699400, 0), "300") if err != nil { t.Error("Test faild - Poloniex GetChartData() error", err) } @@ -510,7 +513,6 @@ func TestWsPriceAggregateOrderbook(t *testing.T) { t.Error(err) } } - func TestWsHandleAccountData(t *testing.T) { t.Parallel() err := p.getCurrencyIDMap() @@ -530,3 +532,39 @@ func TestWsHandleAccountData(t *testing.T) { } } } + +func TestGetHistoricCandles(t *testing.T) { + currencyPair := currency.NewPairFromString("BTCLTC") + _, err := p.GetHistoricCandles(currencyPair, asset.Spot, time.Unix(1588741402, 0), time.Unix(1588745003, 0), kline.FiveMin) + if err != nil { + t.Fatal(err) + } + _, err = p.GetHistoricCandles(currencyPair, asset.Spot, time.Unix(1588741402, 0), time.Unix(1588745003, 0), kline.Interval(time.Hour*7)) + if err == nil { + t.Fatal("unexpected result") + } + + currencyPair.Quote = currency.NewCode("LTCC") + _, err = p.GetHistoricCandles(currencyPair, asset.Spot, time.Unix(1588741402, 0), time.Unix(1588745003, 0), kline.FiveMin) + if err == nil { + t.Fatal(err) + } +} + +func TestGetHistoricCandlesExtended(t *testing.T) { + currencyPair := currency.NewPairFromString("BTCLTC") + _, err := p.GetHistoricCandlesExtended(currencyPair, asset.Spot, time.Unix(1588741402, 0), time.Unix(1588745003, 0), kline.FiveMin) + if err != nil { + t.Fatal(err) + } + _, err = p.GetHistoricCandlesExtended(currencyPair, asset.Spot, time.Unix(1588741402, 0), time.Unix(1588745003, 0), kline.Interval(time.Hour*7)) + if err == nil { + t.Fatal("unexpected result") + } + + currencyPair.Quote = currency.NewCode("LTCC") + _, err = p.GetHistoricCandlesExtended(currencyPair, asset.Spot, time.Unix(1588741402, 0), time.Unix(1588745003, 0), kline.FiveMin) + if err == nil { + t.Fatal(err) + } +} diff --git a/exchanges/poloniex/poloniex_wrapper.go b/exchanges/poloniex/poloniex_wrapper.go index 0fcfc956..a8b5926e 100644 --- a/exchanges/poloniex/poloniex_wrapper.go +++ b/exchanges/poloniex/poloniex_wrapper.go @@ -107,9 +107,22 @@ func (p *Poloniex) SetDefaults() { }, WithdrawPermissions: exchange.AutoWithdrawCryptoWithAPIPermission | exchange.NoFiatWithdrawals, + Kline: kline.ExchangeCapabilitiesSupported{ + Intervals: true, + }, }, Enabled: exchange.FeaturesEnabled{ AutoPairUpdates: true, + Kline: kline.ExchangeCapabilitiesEnabled{ + Intervals: map[string]bool{ + kline.FiveMin.Word(): true, + kline.FifteenMin.Word(): true, + kline.ThirtyMin.Word(): true, + kline.TwoHour.Word(): true, + kline.FourHour.Word(): true, + kline.OneDay.Word(): true, + }, + }, }, } @@ -638,6 +651,43 @@ func (p *Poloniex) ValidateCredentials() error { } // GetHistoricCandles returns candles between a time period for a set time interval -func (p *Poloniex) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval time.Duration) (kline.Item, error) { - return kline.Item{}, common.ErrNotYetImplemented +func (p *Poloniex) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + if !p.KlineIntervalEnabled(interval) { + return kline.Item{}, kline.ErrorKline{ + Interval: interval, + } + } + + candles, err := p.GetChartData(p.FormatExchangeCurrency(pair, a).String(), + start, end, + p.FormatExchangeKlineInterval(interval)) + if err != nil { + return kline.Item{}, err + } + + ret := kline.Item{ + Exchange: p.Name, + Interval: interval, + Pair: pair, + Asset: a, + } + + for x := range candles { + ret.Candles = append(ret.Candles, kline.Candle{ + Time: time.Unix(candles[x].Date, 0), + Open: candles[x].Open, + High: candles[x].Close, + Low: candles[x].Low, + Close: candles[x].Close, + Volume: candles[x].Volume, + }) + } + + ret.SortCandlesByTimestamp(false) + return ret, nil +} + +// GetHistoricCandlesExtended returns candles between a time period for a set time interval +func (p *Poloniex) GetHistoricCandlesExtended(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + return p.GetHistoricCandles(pair, a, start, end, interval) } diff --git a/exchanges/yobit/yobit.go b/exchanges/yobit/yobit.go index 0141ac06..f65bfc5e 100644 --- a/exchanges/yobit/yobit.go +++ b/exchanges/yobit/yobit.go @@ -78,14 +78,23 @@ func (y *Yobit) GetDepth(symbol string) (Orderbook, error) { } // GetTrades returns the trades for a specific currency -func (y *Yobit) GetTrades(symbol string) ([]Trades, error) { +func (y *Yobit) GetTrades(symbol string, start int64, sortAsc bool) ([]Trades, error) { type Response struct { Data map[string][]Trades } - response := Response{} - path := fmt.Sprintf("%s/%s/%s/%s", y.API.Endpoints.URL, apiPublicVersion, publicTrades, symbol) + v := url.Values{} + if sortAsc { + v.Set("order", "ASC") + } else { + v.Set("order", "DESC") + } + if start != 0 { + v.Set("since", strconv.FormatInt(start, 10)) + } + var response Response + path := y.API.Endpoints.URL + "/" + apiPublicVersion + "/" + publicTrades + "/" + symbol + "?" + v.Encode() return response.Data[symbol], y.SendHTTPRequest(path, &response.Data) } diff --git a/exchanges/yobit/yobit_test.go b/exchanges/yobit/yobit_test.go index c9ec0ca2..c8394541 100644 --- a/exchanges/yobit/yobit_test.go +++ b/exchanges/yobit/yobit_test.go @@ -82,7 +82,7 @@ func TestGetDepth(t *testing.T) { func TestGetTrades(t *testing.T) { t.Parallel() - _, err := y.GetTrades("btc_usd") + _, err := y.GetTrades("btc_usd", 0, false) if err != nil { t.Error("GetTrades() error", err) } diff --git a/exchanges/yobit/yobit_wrapper.go b/exchanges/yobit/yobit_wrapper.go index 06133d63..76a91a47 100644 --- a/exchanges/yobit/yobit_wrapper.go +++ b/exchanges/yobit/yobit_wrapper.go @@ -565,6 +565,11 @@ func (y *Yobit) ValidateCredentials() error { } // GetHistoricCandles returns candles between a time period for a set time interval -func (y *Yobit) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval time.Duration) (kline.Item, error) { - return kline.Item{}, common.ErrNotYetImplemented +func (y *Yobit) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + return kline.Item{}, common.ErrFunctionNotSupported +} + +// GetHistoricCandlesExtended returns candles between a time period for a set time interval +func (y *Yobit) GetHistoricCandlesExtended(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + return kline.Item{}, common.ErrFunctionNotSupported } diff --git a/exchanges/zb/ratelimit.go b/exchanges/zb/ratelimit.go new file mode 100644 index 00000000..daf3a883 --- /dev/null +++ b/exchanges/zb/ratelimit.go @@ -0,0 +1,49 @@ +package zb + +import ( + "time" + + "github.com/thrasher-corp/gocryptotrader/exchanges/request" + "golang.org/x/time/rate" +) + +const ( + zbRateInterval = time.Second + zbAuthLimit = 60 + zbUnauthLimit = 60 + + zbKlineDataInterval = time.Second * 2 + zbKlineDataLimit = 1 + + // Used to match endpints to rate limits + klineFunc request.EndpointLimit = iota +) + +// RateLimit implements the request.Limiter interface +type RateLimit struct { + Auth *rate.Limiter + UnAuth *rate.Limiter + KlineData *rate.Limiter +} + +// Limit limits the outbound requests +func (r *RateLimit) Limit(f request.EndpointLimit) error { + switch f { + case request.Auth: + time.Sleep(r.Auth.Reserve().Delay()) + case klineFunc: + time.Sleep(r.KlineData.Reserve().Delay()) + default: + time.Sleep(r.UnAuth.Reserve().Delay()) + } + return nil +} + +// SetRateLimit returns the rate limit for the exchange +func SetRateLimit() *RateLimit { + return &RateLimit{ + Auth: request.NewRateLimit(zbRateInterval, zbAuthLimit), + UnAuth: request.NewRateLimit(zbRateInterval, zbUnauthLimit), + KlineData: request.NewRateLimit(zbKlineDataInterval, zbKlineDataLimit), + } +} diff --git a/exchanges/zb/zb.go b/exchanges/zb/zb.go index ce2a5324..e4a7080d 100644 --- a/exchanges/zb/zb.go +++ b/exchanges/zb/zb.go @@ -36,9 +36,6 @@ const ( zbGetOrdersGet = "getOrders" zbWithdraw = "withdraw" zbDepositAddress = "getUserAddress" - - zbRateInterval = time.Second - zbReqRate = 60 ) // ZB is the overarching type across this package @@ -61,7 +58,7 @@ func (z *ZB) SpotNewOrder(arg SpotNewOrderRequestParams) (int64, error) { vals.Set("price", strconv.FormatFloat(arg.Price, 'f', -1, 64)) vals.Set("tradeType", string(arg.Type)) - err := z.SendAuthenticatedHTTPRequest(http.MethodGet, vals, &result) + err := z.SendAuthenticatedHTTPRequest(http.MethodGet, vals, &result, request.Auth) if err != nil { return 0, err } @@ -89,7 +86,7 @@ func (z *ZB) CancelExistingOrder(orderID int64, symbol string) error { vals.Set("currency", symbol) var result response - err := z.SendAuthenticatedHTTPRequest(http.MethodGet, vals, &result) + err := z.SendAuthenticatedHTTPRequest(http.MethodGet, vals, &result, request.Auth) if err != nil { return err } @@ -109,7 +106,7 @@ func (z *ZB) GetAccountInformation() (AccountsResponse, error) { vals.Set("accesskey", z.API.Credentials.Key) vals.Set("method", "getAccountInfo") - return result, z.SendAuthenticatedHTTPRequest(http.MethodGet, vals, &result) + return result, z.SendAuthenticatedHTTPRequest(http.MethodGet, vals, &result, request.Auth) } // GetUnfinishedOrdersIgnoreTradeType returns unfinished orders @@ -122,7 +119,7 @@ func (z *ZB) GetUnfinishedOrdersIgnoreTradeType(currency string, pageindex, page vals.Set("pageIndex", strconv.FormatInt(pageindex, 10)) vals.Set("pageSize", strconv.FormatInt(pagesize, 10)) - err := z.SendAuthenticatedHTTPRequest(http.MethodGet, vals, &result) + err := z.SendAuthenticatedHTTPRequest(http.MethodGet, vals, &result, request.Auth) return result, err } @@ -135,7 +132,7 @@ func (z *ZB) GetOrders(currency string, pageindex, side int64) ([]Order, error) vals.Set("currency", currency) vals.Set("pageIndex", strconv.FormatInt(pageindex, 10)) vals.Set("tradeType", strconv.FormatInt(side, 10)) - return response, z.SendAuthenticatedHTTPRequest(http.MethodGet, vals, &response) + return response, z.SendAuthenticatedHTTPRequest(http.MethodGet, vals, &response, request.Auth) } // GetMarkets returns market information including pricing, symbols and @@ -144,7 +141,7 @@ func (z *ZB) GetMarkets() (map[string]MarketResponseItem, error) { endpoint := fmt.Sprintf("%s/%s/%s", z.API.Endpoints.URL, zbAPIVersion, zbMarkets) var res map[string]MarketResponseItem - err := z.SendHTTPRequest(endpoint, &res) + err := z.SendHTTPRequest(endpoint, &res, request.UnAuth) if err != nil { return nil, err } @@ -170,7 +167,7 @@ func (z *ZB) GetLatestSpotPrice(symbol string) (float64, error) { func (z *ZB) GetTicker(symbol string) (TickerResponse, error) { urlPath := fmt.Sprintf("%s/%s/%s?market=%s", z.API.Endpoints.URL, zbAPIVersion, zbTicker, symbol) var res TickerResponse - err := z.SendHTTPRequest(urlPath, &res) + err := z.SendHTTPRequest(urlPath, &res, request.UnAuth) return res, err } @@ -178,7 +175,7 @@ func (z *ZB) GetTicker(symbol string) (TickerResponse, error) { func (z *ZB) GetTickers() (map[string]TickerChildResponse, error) { urlPath := fmt.Sprintf("%s/%s/%s", z.API.Endpoints.URL, zbAPIVersion, zbTickers) resp := make(map[string]TickerChildResponse) - err := z.SendHTTPRequest(urlPath, &resp) + err := z.SendHTTPRequest(urlPath, &resp, request.UnAuth) return resp, err } @@ -187,7 +184,7 @@ func (z *ZB) GetOrderbook(symbol string) (OrderbookResponse, error) { urlPath := fmt.Sprintf("%s/%s/%s?market=%s", z.API.Endpoints.URL, zbAPIVersion, zbDepth, symbol) var res OrderbookResponse - err := z.SendHTTPRequest(urlPath, &res) + err := z.SendHTTPRequest(urlPath, &res, request.UnAuth) if err != nil { return res, err } @@ -213,10 +210,10 @@ func (z *ZB) GetOrderbook(symbol string) (OrderbookResponse, error) { // GetSpotKline returns Kline data func (z *ZB) GetSpotKline(arg KlinesRequestParams) (KLineResponse, error) { vals := url.Values{} - vals.Set("type", string(arg.Type)) + vals.Set("type", arg.Type) vals.Set("market", arg.Symbol) - if arg.Since != "" { - vals.Set("since", arg.Since) + if arg.Since > 0 { + vals.Set("since", strconv.FormatInt(arg.Since, 10)) } if arg.Size != 0 { vals.Set("size", fmt.Sprintf("%d", arg.Size)) @@ -226,7 +223,7 @@ func (z *ZB) GetSpotKline(arg KlinesRequestParams) (KLineResponse, error) { var res KLineResponse var rawKlines map[string]interface{} - err := z.SendHTTPRequest(urlPath, &rawKlines) + err := z.SendHTTPRequest(urlPath, &rawKlines, klineFunc) if err != nil { return res, err } @@ -273,11 +270,11 @@ func (z *ZB) GetCryptoAddress(currency currency.Code) (UserAddress, error) { vals.Set("currency", currency.Lower().String()) return resp, - z.SendAuthenticatedHTTPRequest(http.MethodGet, vals, &resp) + z.SendAuthenticatedHTTPRequest(http.MethodGet, vals, &resp, request.Auth) } // SendHTTPRequest sends an unauthenticated HTTP request -func (z *ZB) SendHTTPRequest(path string, result interface{}) error { +func (z *ZB) SendHTTPRequest(path string, result interface{}, f request.EndpointLimit) error { return z.SendPayload(context.Background(), &request.Item{ Method: http.MethodGet, Path: path, @@ -285,11 +282,12 @@ func (z *ZB) SendHTTPRequest(path string, result interface{}) error { Verbose: z.Verbose, HTTPDebugging: z.HTTPDebugging, HTTPRecording: z.HTTPRecording, + Endpoint: f, }) } // SendAuthenticatedHTTPRequest sends authenticated requests to the zb API -func (z *ZB) SendAuthenticatedHTTPRequest(httpMethod string, params url.Values, result interface{}) error { +func (z *ZB) SendAuthenticatedHTTPRequest(httpMethod string, params url.Values, result interface{}, f request.EndpointLimit) error { if !z.AllowAuthenticatedRequest() { return fmt.Errorf(exchange.WarningAuthenticatedRequestWithoutCredentialsSet, z.Name) } @@ -328,6 +326,7 @@ func (z *ZB) SendAuthenticatedHTTPRequest(httpMethod string, params url.Values, Verbose: z.Verbose, HTTPDebugging: z.HTTPDebugging, HTTPRecording: z.HTTPRecording, + Endpoint: f, }) if err != nil { return err @@ -427,7 +426,7 @@ func (z *ZB) Withdraw(currency, address, safepassword string, amount, fees float vals.Set("safePwd", safepassword) var resp response - err := z.SendAuthenticatedHTTPRequest(http.MethodGet, vals, &resp) + err := z.SendAuthenticatedHTTPRequest(http.MethodGet, vals, &resp, request.Auth) if err != nil { return "", err } diff --git a/exchanges/zb/zb_test.go b/exchanges/zb/zb_test.go index 33b4cb00..d7ad8c46 100644 --- a/exchanges/zb/zb_test.go +++ b/exchanges/zb/zb_test.go @@ -8,6 +8,7 @@ import ( "os" "strconv" "testing" + "time" "github.com/gorilla/websocket" "github.com/thrasher-corp/gocryptotrader/common" @@ -15,6 +16,8 @@ import ( "github.com/thrasher-corp/gocryptotrader/core" "github.com/thrasher-corp/gocryptotrader/currency" exchange "github.com/thrasher-corp/gocryptotrader/exchanges" + "github.com/thrasher-corp/gocryptotrader/exchanges/asset" + "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/order" "github.com/thrasher-corp/gocryptotrader/exchanges/sharedtestvalues" "github.com/thrasher-corp/gocryptotrader/exchanges/websocket/wshandler" @@ -153,11 +156,9 @@ func TestGetMarkets(t *testing.T) { } func TestGetSpotKline(t *testing.T) { - t.Parallel() - arg := KlinesRequestParams{ Symbol: "btc_usdt", - Type: TimeIntervalFiveMinutes, + Type: kline.OneMin.Short() + "in", Size: 10, } _, err := z.GetSpotKline(arg) @@ -838,3 +839,78 @@ func TestWsCreateSubUserResponse(t *testing.T) { t.Error(err) } } + +func TestGetHistoricCandles(t *testing.T) { + currencyPair := currency.NewPairFromString("btc_usdt") + startTime := time.Now().Add(-time.Hour * 1) + _, err := z.GetHistoricCandles(currencyPair, asset.Spot, startTime, time.Now(), kline.OneHour) + if err != nil { + t.Fatal(err) + } + + _, err = z.GetHistoricCandles(currencyPair, asset.Spot, startTime, time.Now(), kline.Interval(time.Hour*7)) + if err == nil { + t.Fatal("unexpected result") + } +} + +func TestGetHistoricCandlesExtended(t *testing.T) { + currencyPair := currency.NewPairFromString("btc_usdt") + start := time.Now().AddDate(0, -2, 0) + end := time.Now() + _, err := z.GetHistoricCandlesExtended(currencyPair, asset.Spot, start, end, kline.OneHour) + if err != nil { + t.Fatal(err) + } +} + +func Test_FormatExchangeKlineInterval(t *testing.T) { + testCases := []struct { + name string + interval kline.Interval + output string + }{ + { + "OneMin", + kline.OneMin, + "1min", + }, + { + "OneHour", + kline.OneHour, + "1hour", + }, + { + "OneDay", + kline.OneDay, + "1day", + }, + { + "ThreeDay", + kline.ThreeDay, + "3day", + }, + { + "OneWeek", + kline.OneWeek, + "1week", + }, + { + "AllOther", + kline.FifteenDay, + "", + }, + } + + for x := range testCases { + test := testCases[x] + + t.Run(test.name, func(t *testing.T) { + ret := z.FormatExchangeKlineInterval(test.interval) + + if ret != test.output { + t.Fatalf("unexpected result return expected: %v received: %v", test.output, ret) + } + }) + } +} diff --git a/exchanges/zb/zb_types.go b/exchanges/zb/zb_types.go index 2dc9308a..2a0bed24 100644 --- a/exchanges/zb/zb_types.go +++ b/exchanges/zb/zb_types.go @@ -112,10 +112,10 @@ type SpotNewOrderResponse struct { // KlinesRequestParams represents Klines request data. type KlinesRequestParams struct { - Symbol string // 交易对, zb_qc,zb_usdt,zb_btc... - Type TimeInterval // K线类型, 1min, 3min, 15min, 30min, 1hour...... - Since string // 从这个时间戳之后的 - Size int // 返回数据的条数限制(默认为1000,如果返回数据多于1000条,那么只返回1000条) + Symbol string // 交易对, zb_qc,zb_usdt,zb_btc... + Type string // K线类型, 1min, 3min, 15min, 30min, 1hour...... + Since int64 // 从这个时间戳之后的 + Size int // 返回数据的条数限制(默认为1000,如果返回数据多于1000条,那么只返回1000条) } // KLineResponseData Kline Data @@ -149,26 +149,6 @@ type UserAddress struct { } `json:"message"` } -// TimeInterval represents interval enum. -type TimeInterval string - -// TimeInterval vars -var ( - TimeIntervalMinute = TimeInterval("1min") - TimeIntervalThreeMinutes = TimeInterval("3min") - TimeIntervalFiveMinutes = TimeInterval("5min") - TimeIntervalFifteenMinutes = TimeInterval("15min") - TimeIntervalThirtyMinutes = TimeInterval("30min") - TimeIntervalHour = TimeInterval("1hour") - TimeIntervalTwoHours = TimeInterval("2hour") - TimeIntervalFourHours = TimeInterval("4hour") - TimeIntervalSixHours = TimeInterval("6hour") - TimeIntervalTwelveHours = TimeInterval("12hour") - TimeIntervalDay = TimeInterval("1day") - TimeIntervalThreeDays = TimeInterval("3day") - TimeIntervalWeek = TimeInterval("1week") -) - // WithdrawalFees the large list of predefined withdrawal fees // Prone to change, using highest value var WithdrawalFees = map[currency.Code]float64{ diff --git a/exchanges/zb/zb_wrapper.go b/exchanges/zb/zb_wrapper.go index fe62dadc..c5a003d6 100644 --- a/exchanges/zb/zb_wrapper.go +++ b/exchanges/zb/zb_wrapper.go @@ -106,16 +106,36 @@ func (z *ZB) SetDefaults() { }, WithdrawPermissions: exchange.AutoWithdrawCrypto | exchange.NoFiatWithdrawals, + Kline: kline.ExchangeCapabilitiesSupported{ + Intervals: true, + }, }, Enabled: exchange.FeaturesEnabled{ AutoPairUpdates: true, + Kline: kline.ExchangeCapabilitiesEnabled{ + Intervals: map[string]bool{ + kline.OneMin.Word(): true, + kline.ThreeMin.Word(): true, + kline.FiveMin.Word(): true, + kline.FifteenMin.Word(): true, + kline.ThirtyMin.Word(): true, + kline.OneHour.Word(): true, + kline.TwoHour.Word(): true, + kline.FourHour.Word(): true, + kline.SixHour.Word(): true, + kline.TwelveHour.Word(): true, + kline.OneDay.Word(): true, + kline.ThreeDay.Word(): true, + kline.OneWeek.Word(): true, + }, + ResultLimit: 1000, + }, }, } z.Requester = request.New(z.Name, common.NewHTTPClientWithTimeout(exchange.DefaultHTTPTimeout), - // TODO: Implement full rate limit for endpoints - request.WithLimiter(request.NewBasicRateLimit(zbRateInterval, zbReqRate))) + request.WithLimiter(SetRateLimit())) z.API.Endpoints.URLDefault = zbTradeURL z.API.Endpoints.URL = z.API.Endpoints.URLDefault @@ -699,7 +719,68 @@ func (z *ZB) ValidateCredentials() error { return z.CheckTransientError(err) } -// GetHistoricCandles returns candles between a time period for a set time interval -func (z *ZB) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval time.Duration) (kline.Item, error) { - return kline.Item{}, common.ErrNotYetImplemented +// FormatExchangeKlineInterval returns Interval to exchange formatted string +func (z *ZB) FormatExchangeKlineInterval(in kline.Interval) string { + switch in { + case kline.OneMin, kline.ThreeMin, + kline.FiveMin, kline.FifteenMin, kline.ThirtyMin: + return in.Short() + "in" + case kline.OneHour, kline.TwoHour, kline.FourHour, kline.SixHour, kline.TwelveHour: + return in.Short()[:len(in.Short())-1] + "hour" + case kline.OneDay: + return "1day" + case kline.ThreeDay: + return "3day" + case kline.OneWeek: + return "1week" + } + return "" +} + +// GetHistoricCandles returns candles between a time period for a set time interval +func (z *ZB) GetHistoricCandles(pair currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + if !z.KlineIntervalEnabled(interval) { + return kline.Item{}, kline.ErrorKline{ + Interval: interval, + } + } + + klineParams := KlinesRequestParams{ + Type: z.FormatExchangeKlineInterval(interval), + Symbol: z.FormatExchangeCurrency(pair, a).String(), + } + + candles, err := z.GetSpotKline(klineParams) + if err != nil { + return kline.Item{}, err + } + + ret := kline.Item{ + Exchange: z.Name, + Pair: pair, + Asset: a, + Interval: interval, + } + + for x := range candles.Data { + if candles.Data[x].KlineTime.Before(start) || candles.Data[x].KlineTime.After(end) { + continue + } + ret.Candles = append(ret.Candles, kline.Candle{ + Time: candles.Data[x].KlineTime, + Open: candles.Data[x].Open, + High: candles.Data[x].Close, + Low: candles.Data[x].Low, + Close: candles.Data[x].Close, + Volume: candles.Data[x].Volume, + }) + } + + ret.SortCandlesByTimestamp(false) + return ret, nil +} + +// GetHistoricCandlesExtended returns candles between a time period for a set time interval +func (z *ZB) GetHistoricCandlesExtended(p currency.Pair, a asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { + return z.GetHistoricCandles(p, a, start, end, interval) } diff --git a/gctrpc/rpc.pb.go b/gctrpc/rpc.pb.go index 04a01e2a..8a2594f1 100644 --- a/gctrpc/rpc.pb.go +++ b/gctrpc/rpc.pb.go @@ -1,63 +1,79 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.22.0-devel +// protoc v3.12.3 // source: rpc.proto package gctrpc import ( context "context" - fmt "fmt" proto "github.com/golang/protobuf/proto" timestamp "github.com/golang/protobuf/ptypes/timestamp" _ "google.golang.org/genproto/googleapis/api/annotations" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +// This is a compile-time assertion that a sufficiently up-to-date version +// of the legacy proto package is being used. +const _ = proto.ProtoPackageIsVersion4 type GetInfoRequest struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields } -func (m *GetInfoRequest) Reset() { *m = GetInfoRequest{} } -func (m *GetInfoRequest) String() string { return proto.CompactTextString(m) } -func (*GetInfoRequest) ProtoMessage() {} +func (x *GetInfoRequest) Reset() { + *x = GetInfoRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetInfoRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetInfoRequest) ProtoMessage() {} + +func (x *GetInfoRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetInfoRequest.ProtoReflect.Descriptor instead. func (*GetInfoRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{0} + return file_rpc_proto_rawDescGZIP(), []int{0} } -func (m *GetInfoRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetInfoRequest.Unmarshal(m, b) -} -func (m *GetInfoRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetInfoRequest.Marshal(b, m, deterministic) -} -func (m *GetInfoRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetInfoRequest.Merge(m, src) -} -func (m *GetInfoRequest) XXX_Size() int { - return xxx_messageInfo_GetInfoRequest.Size(m) -} -func (m *GetInfoRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetInfoRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_GetInfoRequest proto.InternalMessageInfo - type GetInfoResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + Uptime string `protobuf:"bytes,1,opt,name=uptime,proto3" json:"uptime,omitempty"` AvailableExchanges int64 `protobuf:"varint,2,opt,name=available_exchanges,json=availableExchanges,proto3" json:"available_exchanges,omitempty"` EnabledExchanges int64 `protobuf:"varint,3,opt,name=enabled_exchanges,json=enabledExchanges,proto3" json:"enabled_exchanges,omitempty"` @@ -65,7018 +81,10860 @@ type GetInfoResponse struct { DefaultFiatCurrency string `protobuf:"bytes,5,opt,name=default_fiat_currency,json=defaultFiatCurrency,proto3" json:"default_fiat_currency,omitempty"` SubsystemStatus map[string]bool `protobuf:"bytes,6,rep,name=subsystem_status,json=subsystemStatus,proto3" json:"subsystem_status,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` RpcEndpoints map[string]*RPCEndpoint `protobuf:"bytes,7,rep,name=rpc_endpoints,json=rpcEndpoints,proto3" json:"rpc_endpoints,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *GetInfoResponse) Reset() { *m = GetInfoResponse{} } -func (m *GetInfoResponse) String() string { return proto.CompactTextString(m) } -func (*GetInfoResponse) ProtoMessage() {} +func (x *GetInfoResponse) Reset() { + *x = GetInfoResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetInfoResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetInfoResponse) ProtoMessage() {} + +func (x *GetInfoResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetInfoResponse.ProtoReflect.Descriptor instead. func (*GetInfoResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{1} + return file_rpc_proto_rawDescGZIP(), []int{1} } -func (m *GetInfoResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetInfoResponse.Unmarshal(m, b) -} -func (m *GetInfoResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetInfoResponse.Marshal(b, m, deterministic) -} -func (m *GetInfoResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetInfoResponse.Merge(m, src) -} -func (m *GetInfoResponse) XXX_Size() int { - return xxx_messageInfo_GetInfoResponse.Size(m) -} -func (m *GetInfoResponse) XXX_DiscardUnknown() { - xxx_messageInfo_GetInfoResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_GetInfoResponse proto.InternalMessageInfo - -func (m *GetInfoResponse) GetUptime() string { - if m != nil { - return m.Uptime +func (x *GetInfoResponse) GetUptime() string { + if x != nil { + return x.Uptime } return "" } -func (m *GetInfoResponse) GetAvailableExchanges() int64 { - if m != nil { - return m.AvailableExchanges +func (x *GetInfoResponse) GetAvailableExchanges() int64 { + if x != nil { + return x.AvailableExchanges } return 0 } -func (m *GetInfoResponse) GetEnabledExchanges() int64 { - if m != nil { - return m.EnabledExchanges +func (x *GetInfoResponse) GetEnabledExchanges() int64 { + if x != nil { + return x.EnabledExchanges } return 0 } -func (m *GetInfoResponse) GetDefaultForexProvider() string { - if m != nil { - return m.DefaultForexProvider +func (x *GetInfoResponse) GetDefaultForexProvider() string { + if x != nil { + return x.DefaultForexProvider } return "" } -func (m *GetInfoResponse) GetDefaultFiatCurrency() string { - if m != nil { - return m.DefaultFiatCurrency +func (x *GetInfoResponse) GetDefaultFiatCurrency() string { + if x != nil { + return x.DefaultFiatCurrency } return "" } -func (m *GetInfoResponse) GetSubsystemStatus() map[string]bool { - if m != nil { - return m.SubsystemStatus +func (x *GetInfoResponse) GetSubsystemStatus() map[string]bool { + if x != nil { + return x.SubsystemStatus } return nil } -func (m *GetInfoResponse) GetRpcEndpoints() map[string]*RPCEndpoint { - if m != nil { - return m.RpcEndpoints +func (x *GetInfoResponse) GetRpcEndpoints() map[string]*RPCEndpoint { + if x != nil { + return x.RpcEndpoints } return nil } type GetCommunicationRelayersRequest struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields } -func (m *GetCommunicationRelayersRequest) Reset() { *m = GetCommunicationRelayersRequest{} } -func (m *GetCommunicationRelayersRequest) String() string { return proto.CompactTextString(m) } -func (*GetCommunicationRelayersRequest) ProtoMessage() {} +func (x *GetCommunicationRelayersRequest) Reset() { + *x = GetCommunicationRelayersRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetCommunicationRelayersRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetCommunicationRelayersRequest) ProtoMessage() {} + +func (x *GetCommunicationRelayersRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetCommunicationRelayersRequest.ProtoReflect.Descriptor instead. func (*GetCommunicationRelayersRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{2} + return file_rpc_proto_rawDescGZIP(), []int{2} } -func (m *GetCommunicationRelayersRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetCommunicationRelayersRequest.Unmarshal(m, b) -} -func (m *GetCommunicationRelayersRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetCommunicationRelayersRequest.Marshal(b, m, deterministic) -} -func (m *GetCommunicationRelayersRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetCommunicationRelayersRequest.Merge(m, src) -} -func (m *GetCommunicationRelayersRequest) XXX_Size() int { - return xxx_messageInfo_GetCommunicationRelayersRequest.Size(m) -} -func (m *GetCommunicationRelayersRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetCommunicationRelayersRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_GetCommunicationRelayersRequest proto.InternalMessageInfo - type CommunicationRelayer struct { - Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` - Connected bool `protobuf:"varint,2,opt,name=connected,proto3" json:"connected,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` + Connected bool `protobuf:"varint,2,opt,name=connected,proto3" json:"connected,omitempty"` } -func (m *CommunicationRelayer) Reset() { *m = CommunicationRelayer{} } -func (m *CommunicationRelayer) String() string { return proto.CompactTextString(m) } -func (*CommunicationRelayer) ProtoMessage() {} +func (x *CommunicationRelayer) Reset() { + *x = CommunicationRelayer{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CommunicationRelayer) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CommunicationRelayer) ProtoMessage() {} + +func (x *CommunicationRelayer) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CommunicationRelayer.ProtoReflect.Descriptor instead. func (*CommunicationRelayer) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{3} + return file_rpc_proto_rawDescGZIP(), []int{3} } -func (m *CommunicationRelayer) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CommunicationRelayer.Unmarshal(m, b) -} -func (m *CommunicationRelayer) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CommunicationRelayer.Marshal(b, m, deterministic) -} -func (m *CommunicationRelayer) XXX_Merge(src proto.Message) { - xxx_messageInfo_CommunicationRelayer.Merge(m, src) -} -func (m *CommunicationRelayer) XXX_Size() int { - return xxx_messageInfo_CommunicationRelayer.Size(m) -} -func (m *CommunicationRelayer) XXX_DiscardUnknown() { - xxx_messageInfo_CommunicationRelayer.DiscardUnknown(m) -} - -var xxx_messageInfo_CommunicationRelayer proto.InternalMessageInfo - -func (m *CommunicationRelayer) GetEnabled() bool { - if m != nil { - return m.Enabled +func (x *CommunicationRelayer) GetEnabled() bool { + if x != nil { + return x.Enabled } return false } -func (m *CommunicationRelayer) GetConnected() bool { - if m != nil { - return m.Connected +func (x *CommunicationRelayer) GetConnected() bool { + if x != nil { + return x.Connected } return false } type GetCommunicationRelayersResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + CommunicationRelayers map[string]*CommunicationRelayer `protobuf:"bytes,1,rep,name=communication_relayers,json=communicationRelayers,proto3" json:"communication_relayers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *GetCommunicationRelayersResponse) Reset() { *m = GetCommunicationRelayersResponse{} } -func (m *GetCommunicationRelayersResponse) String() string { return proto.CompactTextString(m) } -func (*GetCommunicationRelayersResponse) ProtoMessage() {} +func (x *GetCommunicationRelayersResponse) Reset() { + *x = GetCommunicationRelayersResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetCommunicationRelayersResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetCommunicationRelayersResponse) ProtoMessage() {} + +func (x *GetCommunicationRelayersResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetCommunicationRelayersResponse.ProtoReflect.Descriptor instead. func (*GetCommunicationRelayersResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{4} + return file_rpc_proto_rawDescGZIP(), []int{4} } -func (m *GetCommunicationRelayersResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetCommunicationRelayersResponse.Unmarshal(m, b) -} -func (m *GetCommunicationRelayersResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetCommunicationRelayersResponse.Marshal(b, m, deterministic) -} -func (m *GetCommunicationRelayersResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetCommunicationRelayersResponse.Merge(m, src) -} -func (m *GetCommunicationRelayersResponse) XXX_Size() int { - return xxx_messageInfo_GetCommunicationRelayersResponse.Size(m) -} -func (m *GetCommunicationRelayersResponse) XXX_DiscardUnknown() { - xxx_messageInfo_GetCommunicationRelayersResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_GetCommunicationRelayersResponse proto.InternalMessageInfo - -func (m *GetCommunicationRelayersResponse) GetCommunicationRelayers() map[string]*CommunicationRelayer { - if m != nil { - return m.CommunicationRelayers +func (x *GetCommunicationRelayersResponse) GetCommunicationRelayers() map[string]*CommunicationRelayer { + if x != nil { + return x.CommunicationRelayers } return nil } type GenericSubsystemRequest struct { - Subsystem string `protobuf:"bytes,1,opt,name=subsystem,proto3" json:"subsystem,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Subsystem string `protobuf:"bytes,1,opt,name=subsystem,proto3" json:"subsystem,omitempty"` } -func (m *GenericSubsystemRequest) Reset() { *m = GenericSubsystemRequest{} } -func (m *GenericSubsystemRequest) String() string { return proto.CompactTextString(m) } -func (*GenericSubsystemRequest) ProtoMessage() {} +func (x *GenericSubsystemRequest) Reset() { + *x = GenericSubsystemRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenericSubsystemRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenericSubsystemRequest) ProtoMessage() {} + +func (x *GenericSubsystemRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenericSubsystemRequest.ProtoReflect.Descriptor instead. func (*GenericSubsystemRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{5} + return file_rpc_proto_rawDescGZIP(), []int{5} } -func (m *GenericSubsystemRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GenericSubsystemRequest.Unmarshal(m, b) -} -func (m *GenericSubsystemRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GenericSubsystemRequest.Marshal(b, m, deterministic) -} -func (m *GenericSubsystemRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GenericSubsystemRequest.Merge(m, src) -} -func (m *GenericSubsystemRequest) XXX_Size() int { - return xxx_messageInfo_GenericSubsystemRequest.Size(m) -} -func (m *GenericSubsystemRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GenericSubsystemRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_GenericSubsystemRequest proto.InternalMessageInfo - -func (m *GenericSubsystemRequest) GetSubsystem() string { - if m != nil { - return m.Subsystem +func (x *GenericSubsystemRequest) GetSubsystem() string { + if x != nil { + return x.Subsystem } return "" } type GenericSubsystemResponse struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields } -func (m *GenericSubsystemResponse) Reset() { *m = GenericSubsystemResponse{} } -func (m *GenericSubsystemResponse) String() string { return proto.CompactTextString(m) } -func (*GenericSubsystemResponse) ProtoMessage() {} +func (x *GenericSubsystemResponse) Reset() { + *x = GenericSubsystemResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenericSubsystemResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenericSubsystemResponse) ProtoMessage() {} + +func (x *GenericSubsystemResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenericSubsystemResponse.ProtoReflect.Descriptor instead. func (*GenericSubsystemResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{6} + return file_rpc_proto_rawDescGZIP(), []int{6} } -func (m *GenericSubsystemResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GenericSubsystemResponse.Unmarshal(m, b) -} -func (m *GenericSubsystemResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GenericSubsystemResponse.Marshal(b, m, deterministic) -} -func (m *GenericSubsystemResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_GenericSubsystemResponse.Merge(m, src) -} -func (m *GenericSubsystemResponse) XXX_Size() int { - return xxx_messageInfo_GenericSubsystemResponse.Size(m) -} -func (m *GenericSubsystemResponse) XXX_DiscardUnknown() { - xxx_messageInfo_GenericSubsystemResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_GenericSubsystemResponse proto.InternalMessageInfo - type GetSubsystemsRequest struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields } -func (m *GetSubsystemsRequest) Reset() { *m = GetSubsystemsRequest{} } -func (m *GetSubsystemsRequest) String() string { return proto.CompactTextString(m) } -func (*GetSubsystemsRequest) ProtoMessage() {} +func (x *GetSubsystemsRequest) Reset() { + *x = GetSubsystemsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetSubsystemsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetSubsystemsRequest) ProtoMessage() {} + +func (x *GetSubsystemsRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetSubsystemsRequest.ProtoReflect.Descriptor instead. func (*GetSubsystemsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{7} + return file_rpc_proto_rawDescGZIP(), []int{7} } -func (m *GetSubsystemsRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetSubsystemsRequest.Unmarshal(m, b) -} -func (m *GetSubsystemsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetSubsystemsRequest.Marshal(b, m, deterministic) -} -func (m *GetSubsystemsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetSubsystemsRequest.Merge(m, src) -} -func (m *GetSubsystemsRequest) XXX_Size() int { - return xxx_messageInfo_GetSubsystemsRequest.Size(m) -} -func (m *GetSubsystemsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetSubsystemsRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_GetSubsystemsRequest proto.InternalMessageInfo - type GetSusbsytemsResponse struct { - SubsystemsStatus map[string]bool `protobuf:"bytes,1,rep,name=subsystems_status,json=subsystemsStatus,proto3" json:"subsystems_status,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SubsystemsStatus map[string]bool `protobuf:"bytes,1,rep,name=subsystems_status,json=subsystemsStatus,proto3" json:"subsystems_status,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` } -func (m *GetSusbsytemsResponse) Reset() { *m = GetSusbsytemsResponse{} } -func (m *GetSusbsytemsResponse) String() string { return proto.CompactTextString(m) } -func (*GetSusbsytemsResponse) ProtoMessage() {} +func (x *GetSusbsytemsResponse) Reset() { + *x = GetSusbsytemsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetSusbsytemsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetSusbsytemsResponse) ProtoMessage() {} + +func (x *GetSusbsytemsResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetSusbsytemsResponse.ProtoReflect.Descriptor instead. func (*GetSusbsytemsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{8} + return file_rpc_proto_rawDescGZIP(), []int{8} } -func (m *GetSusbsytemsResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetSusbsytemsResponse.Unmarshal(m, b) -} -func (m *GetSusbsytemsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetSusbsytemsResponse.Marshal(b, m, deterministic) -} -func (m *GetSusbsytemsResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetSusbsytemsResponse.Merge(m, src) -} -func (m *GetSusbsytemsResponse) XXX_Size() int { - return xxx_messageInfo_GetSusbsytemsResponse.Size(m) -} -func (m *GetSusbsytemsResponse) XXX_DiscardUnknown() { - xxx_messageInfo_GetSusbsytemsResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_GetSusbsytemsResponse proto.InternalMessageInfo - -func (m *GetSusbsytemsResponse) GetSubsystemsStatus() map[string]bool { - if m != nil { - return m.SubsystemsStatus +func (x *GetSusbsytemsResponse) GetSubsystemsStatus() map[string]bool { + if x != nil { + return x.SubsystemsStatus } return nil } type GetRPCEndpointsRequest struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields } -func (m *GetRPCEndpointsRequest) Reset() { *m = GetRPCEndpointsRequest{} } -func (m *GetRPCEndpointsRequest) String() string { return proto.CompactTextString(m) } -func (*GetRPCEndpointsRequest) ProtoMessage() {} +func (x *GetRPCEndpointsRequest) Reset() { + *x = GetRPCEndpointsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetRPCEndpointsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetRPCEndpointsRequest) ProtoMessage() {} + +func (x *GetRPCEndpointsRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetRPCEndpointsRequest.ProtoReflect.Descriptor instead. func (*GetRPCEndpointsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{9} + return file_rpc_proto_rawDescGZIP(), []int{9} } -func (m *GetRPCEndpointsRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetRPCEndpointsRequest.Unmarshal(m, b) -} -func (m *GetRPCEndpointsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetRPCEndpointsRequest.Marshal(b, m, deterministic) -} -func (m *GetRPCEndpointsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetRPCEndpointsRequest.Merge(m, src) -} -func (m *GetRPCEndpointsRequest) XXX_Size() int { - return xxx_messageInfo_GetRPCEndpointsRequest.Size(m) -} -func (m *GetRPCEndpointsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetRPCEndpointsRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_GetRPCEndpointsRequest proto.InternalMessageInfo - type RPCEndpoint struct { - Started bool `protobuf:"varint,1,opt,name=started,proto3" json:"started,omitempty"` - ListenAddress string `protobuf:"bytes,2,opt,name=listen_address,json=listenAddress,proto3" json:"listen_address,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Started bool `protobuf:"varint,1,opt,name=started,proto3" json:"started,omitempty"` + ListenAddress string `protobuf:"bytes,2,opt,name=listen_address,json=listenAddress,proto3" json:"listen_address,omitempty"` } -func (m *RPCEndpoint) Reset() { *m = RPCEndpoint{} } -func (m *RPCEndpoint) String() string { return proto.CompactTextString(m) } -func (*RPCEndpoint) ProtoMessage() {} +func (x *RPCEndpoint) Reset() { + *x = RPCEndpoint{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RPCEndpoint) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RPCEndpoint) ProtoMessage() {} + +func (x *RPCEndpoint) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RPCEndpoint.ProtoReflect.Descriptor instead. func (*RPCEndpoint) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{10} + return file_rpc_proto_rawDescGZIP(), []int{10} } -func (m *RPCEndpoint) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_RPCEndpoint.Unmarshal(m, b) -} -func (m *RPCEndpoint) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_RPCEndpoint.Marshal(b, m, deterministic) -} -func (m *RPCEndpoint) XXX_Merge(src proto.Message) { - xxx_messageInfo_RPCEndpoint.Merge(m, src) -} -func (m *RPCEndpoint) XXX_Size() int { - return xxx_messageInfo_RPCEndpoint.Size(m) -} -func (m *RPCEndpoint) XXX_DiscardUnknown() { - xxx_messageInfo_RPCEndpoint.DiscardUnknown(m) -} - -var xxx_messageInfo_RPCEndpoint proto.InternalMessageInfo - -func (m *RPCEndpoint) GetStarted() bool { - if m != nil { - return m.Started +func (x *RPCEndpoint) GetStarted() bool { + if x != nil { + return x.Started } return false } -func (m *RPCEndpoint) GetListenAddress() string { - if m != nil { - return m.ListenAddress +func (x *RPCEndpoint) GetListenAddress() string { + if x != nil { + return x.ListenAddress } return "" } type GetRPCEndpointsResponse struct { - Endpoints map[string]*RPCEndpoint `protobuf:"bytes,1,rep,name=endpoints,proto3" json:"endpoints,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Endpoints map[string]*RPCEndpoint `protobuf:"bytes,1,rep,name=endpoints,proto3" json:"endpoints,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (m *GetRPCEndpointsResponse) Reset() { *m = GetRPCEndpointsResponse{} } -func (m *GetRPCEndpointsResponse) String() string { return proto.CompactTextString(m) } -func (*GetRPCEndpointsResponse) ProtoMessage() {} +func (x *GetRPCEndpointsResponse) Reset() { + *x = GetRPCEndpointsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetRPCEndpointsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetRPCEndpointsResponse) ProtoMessage() {} + +func (x *GetRPCEndpointsResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetRPCEndpointsResponse.ProtoReflect.Descriptor instead. func (*GetRPCEndpointsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{11} + return file_rpc_proto_rawDescGZIP(), []int{11} } -func (m *GetRPCEndpointsResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetRPCEndpointsResponse.Unmarshal(m, b) -} -func (m *GetRPCEndpointsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetRPCEndpointsResponse.Marshal(b, m, deterministic) -} -func (m *GetRPCEndpointsResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetRPCEndpointsResponse.Merge(m, src) -} -func (m *GetRPCEndpointsResponse) XXX_Size() int { - return xxx_messageInfo_GetRPCEndpointsResponse.Size(m) -} -func (m *GetRPCEndpointsResponse) XXX_DiscardUnknown() { - xxx_messageInfo_GetRPCEndpointsResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_GetRPCEndpointsResponse proto.InternalMessageInfo - -func (m *GetRPCEndpointsResponse) GetEndpoints() map[string]*RPCEndpoint { - if m != nil { - return m.Endpoints +func (x *GetRPCEndpointsResponse) GetEndpoints() map[string]*RPCEndpoint { + if x != nil { + return x.Endpoints } return nil } type GenericExchangeNameRequest struct { - Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` } -func (m *GenericExchangeNameRequest) Reset() { *m = GenericExchangeNameRequest{} } -func (m *GenericExchangeNameRequest) String() string { return proto.CompactTextString(m) } -func (*GenericExchangeNameRequest) ProtoMessage() {} +func (x *GenericExchangeNameRequest) Reset() { + *x = GenericExchangeNameRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenericExchangeNameRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenericExchangeNameRequest) ProtoMessage() {} + +func (x *GenericExchangeNameRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenericExchangeNameRequest.ProtoReflect.Descriptor instead. func (*GenericExchangeNameRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{12} + return file_rpc_proto_rawDescGZIP(), []int{12} } -func (m *GenericExchangeNameRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GenericExchangeNameRequest.Unmarshal(m, b) -} -func (m *GenericExchangeNameRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GenericExchangeNameRequest.Marshal(b, m, deterministic) -} -func (m *GenericExchangeNameRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GenericExchangeNameRequest.Merge(m, src) -} -func (m *GenericExchangeNameRequest) XXX_Size() int { - return xxx_messageInfo_GenericExchangeNameRequest.Size(m) -} -func (m *GenericExchangeNameRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GenericExchangeNameRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_GenericExchangeNameRequest proto.InternalMessageInfo - -func (m *GenericExchangeNameRequest) GetExchange() string { - if m != nil { - return m.Exchange +func (x *GenericExchangeNameRequest) GetExchange() string { + if x != nil { + return x.Exchange } return "" } type GenericExchangeNameResponse struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields } -func (m *GenericExchangeNameResponse) Reset() { *m = GenericExchangeNameResponse{} } -func (m *GenericExchangeNameResponse) String() string { return proto.CompactTextString(m) } -func (*GenericExchangeNameResponse) ProtoMessage() {} +func (x *GenericExchangeNameResponse) Reset() { + *x = GenericExchangeNameResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenericExchangeNameResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenericExchangeNameResponse) ProtoMessage() {} + +func (x *GenericExchangeNameResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenericExchangeNameResponse.ProtoReflect.Descriptor instead. func (*GenericExchangeNameResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{13} + return file_rpc_proto_rawDescGZIP(), []int{13} } -func (m *GenericExchangeNameResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GenericExchangeNameResponse.Unmarshal(m, b) -} -func (m *GenericExchangeNameResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GenericExchangeNameResponse.Marshal(b, m, deterministic) -} -func (m *GenericExchangeNameResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_GenericExchangeNameResponse.Merge(m, src) -} -func (m *GenericExchangeNameResponse) XXX_Size() int { - return xxx_messageInfo_GenericExchangeNameResponse.Size(m) -} -func (m *GenericExchangeNameResponse) XXX_DiscardUnknown() { - xxx_messageInfo_GenericExchangeNameResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_GenericExchangeNameResponse proto.InternalMessageInfo - type GetExchangesRequest struct { - Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` } -func (m *GetExchangesRequest) Reset() { *m = GetExchangesRequest{} } -func (m *GetExchangesRequest) String() string { return proto.CompactTextString(m) } -func (*GetExchangesRequest) ProtoMessage() {} +func (x *GetExchangesRequest) Reset() { + *x = GetExchangesRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetExchangesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetExchangesRequest) ProtoMessage() {} + +func (x *GetExchangesRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetExchangesRequest.ProtoReflect.Descriptor instead. func (*GetExchangesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{14} + return file_rpc_proto_rawDescGZIP(), []int{14} } -func (m *GetExchangesRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetExchangesRequest.Unmarshal(m, b) -} -func (m *GetExchangesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetExchangesRequest.Marshal(b, m, deterministic) -} -func (m *GetExchangesRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetExchangesRequest.Merge(m, src) -} -func (m *GetExchangesRequest) XXX_Size() int { - return xxx_messageInfo_GetExchangesRequest.Size(m) -} -func (m *GetExchangesRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetExchangesRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_GetExchangesRequest proto.InternalMessageInfo - -func (m *GetExchangesRequest) GetEnabled() bool { - if m != nil { - return m.Enabled +func (x *GetExchangesRequest) GetEnabled() bool { + if x != nil { + return x.Enabled } return false } type GetExchangesResponse struct { - Exchanges string `protobuf:"bytes,1,opt,name=exchanges,proto3" json:"exchanges,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Exchanges string `protobuf:"bytes,1,opt,name=exchanges,proto3" json:"exchanges,omitempty"` } -func (m *GetExchangesResponse) Reset() { *m = GetExchangesResponse{} } -func (m *GetExchangesResponse) String() string { return proto.CompactTextString(m) } -func (*GetExchangesResponse) ProtoMessage() {} +func (x *GetExchangesResponse) Reset() { + *x = GetExchangesResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetExchangesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetExchangesResponse) ProtoMessage() {} + +func (x *GetExchangesResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetExchangesResponse.ProtoReflect.Descriptor instead. func (*GetExchangesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{15} + return file_rpc_proto_rawDescGZIP(), []int{15} } -func (m *GetExchangesResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetExchangesResponse.Unmarshal(m, b) -} -func (m *GetExchangesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetExchangesResponse.Marshal(b, m, deterministic) -} -func (m *GetExchangesResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetExchangesResponse.Merge(m, src) -} -func (m *GetExchangesResponse) XXX_Size() int { - return xxx_messageInfo_GetExchangesResponse.Size(m) -} -func (m *GetExchangesResponse) XXX_DiscardUnknown() { - xxx_messageInfo_GetExchangesResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_GetExchangesResponse proto.InternalMessageInfo - -func (m *GetExchangesResponse) GetExchanges() string { - if m != nil { - return m.Exchanges +func (x *GetExchangesResponse) GetExchanges() string { + if x != nil { + return x.Exchanges } return "" } type GetExchangeOTPReponse struct { - OtpCode string `protobuf:"bytes,1,opt,name=otp_code,json=otpCode,proto3" json:"otp_code,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + OtpCode string `protobuf:"bytes,1,opt,name=otp_code,json=otpCode,proto3" json:"otp_code,omitempty"` } -func (m *GetExchangeOTPReponse) Reset() { *m = GetExchangeOTPReponse{} } -func (m *GetExchangeOTPReponse) String() string { return proto.CompactTextString(m) } -func (*GetExchangeOTPReponse) ProtoMessage() {} +func (x *GetExchangeOTPReponse) Reset() { + *x = GetExchangeOTPReponse{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetExchangeOTPReponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetExchangeOTPReponse) ProtoMessage() {} + +func (x *GetExchangeOTPReponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetExchangeOTPReponse.ProtoReflect.Descriptor instead. func (*GetExchangeOTPReponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{16} + return file_rpc_proto_rawDescGZIP(), []int{16} } -func (m *GetExchangeOTPReponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetExchangeOTPReponse.Unmarshal(m, b) -} -func (m *GetExchangeOTPReponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetExchangeOTPReponse.Marshal(b, m, deterministic) -} -func (m *GetExchangeOTPReponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetExchangeOTPReponse.Merge(m, src) -} -func (m *GetExchangeOTPReponse) XXX_Size() int { - return xxx_messageInfo_GetExchangeOTPReponse.Size(m) -} -func (m *GetExchangeOTPReponse) XXX_DiscardUnknown() { - xxx_messageInfo_GetExchangeOTPReponse.DiscardUnknown(m) -} - -var xxx_messageInfo_GetExchangeOTPReponse proto.InternalMessageInfo - -func (m *GetExchangeOTPReponse) GetOtpCode() string { - if m != nil { - return m.OtpCode +func (x *GetExchangeOTPReponse) GetOtpCode() string { + if x != nil { + return x.OtpCode } return "" } type GetExchangeOTPsRequest struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields } -func (m *GetExchangeOTPsRequest) Reset() { *m = GetExchangeOTPsRequest{} } -func (m *GetExchangeOTPsRequest) String() string { return proto.CompactTextString(m) } -func (*GetExchangeOTPsRequest) ProtoMessage() {} +func (x *GetExchangeOTPsRequest) Reset() { + *x = GetExchangeOTPsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetExchangeOTPsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetExchangeOTPsRequest) ProtoMessage() {} + +func (x *GetExchangeOTPsRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetExchangeOTPsRequest.ProtoReflect.Descriptor instead. func (*GetExchangeOTPsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{17} + return file_rpc_proto_rawDescGZIP(), []int{17} } -func (m *GetExchangeOTPsRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetExchangeOTPsRequest.Unmarshal(m, b) -} -func (m *GetExchangeOTPsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetExchangeOTPsRequest.Marshal(b, m, deterministic) -} -func (m *GetExchangeOTPsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetExchangeOTPsRequest.Merge(m, src) -} -func (m *GetExchangeOTPsRequest) XXX_Size() int { - return xxx_messageInfo_GetExchangeOTPsRequest.Size(m) -} -func (m *GetExchangeOTPsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetExchangeOTPsRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_GetExchangeOTPsRequest proto.InternalMessageInfo - type GetExchangeOTPsResponse struct { - OtpCodes map[string]string `protobuf:"bytes,1,rep,name=otp_codes,json=otpCodes,proto3" json:"otp_codes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + OtpCodes map[string]string `protobuf:"bytes,1,rep,name=otp_codes,json=otpCodes,proto3" json:"otp_codes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (m *GetExchangeOTPsResponse) Reset() { *m = GetExchangeOTPsResponse{} } -func (m *GetExchangeOTPsResponse) String() string { return proto.CompactTextString(m) } -func (*GetExchangeOTPsResponse) ProtoMessage() {} +func (x *GetExchangeOTPsResponse) Reset() { + *x = GetExchangeOTPsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetExchangeOTPsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetExchangeOTPsResponse) ProtoMessage() {} + +func (x *GetExchangeOTPsResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[18] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetExchangeOTPsResponse.ProtoReflect.Descriptor instead. func (*GetExchangeOTPsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{18} + return file_rpc_proto_rawDescGZIP(), []int{18} } -func (m *GetExchangeOTPsResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetExchangeOTPsResponse.Unmarshal(m, b) -} -func (m *GetExchangeOTPsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetExchangeOTPsResponse.Marshal(b, m, deterministic) -} -func (m *GetExchangeOTPsResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetExchangeOTPsResponse.Merge(m, src) -} -func (m *GetExchangeOTPsResponse) XXX_Size() int { - return xxx_messageInfo_GetExchangeOTPsResponse.Size(m) -} -func (m *GetExchangeOTPsResponse) XXX_DiscardUnknown() { - xxx_messageInfo_GetExchangeOTPsResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_GetExchangeOTPsResponse proto.InternalMessageInfo - -func (m *GetExchangeOTPsResponse) GetOtpCodes() map[string]string { - if m != nil { - return m.OtpCodes +func (x *GetExchangeOTPsResponse) GetOtpCodes() map[string]string { + if x != nil { + return x.OtpCodes } return nil } type DisableExchangeRequest struct { - Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` } -func (m *DisableExchangeRequest) Reset() { *m = DisableExchangeRequest{} } -func (m *DisableExchangeRequest) String() string { return proto.CompactTextString(m) } -func (*DisableExchangeRequest) ProtoMessage() {} +func (x *DisableExchangeRequest) Reset() { + *x = DisableExchangeRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DisableExchangeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DisableExchangeRequest) ProtoMessage() {} + +func (x *DisableExchangeRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[19] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DisableExchangeRequest.ProtoReflect.Descriptor instead. func (*DisableExchangeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{19} + return file_rpc_proto_rawDescGZIP(), []int{19} } -func (m *DisableExchangeRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DisableExchangeRequest.Unmarshal(m, b) -} -func (m *DisableExchangeRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DisableExchangeRequest.Marshal(b, m, deterministic) -} -func (m *DisableExchangeRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_DisableExchangeRequest.Merge(m, src) -} -func (m *DisableExchangeRequest) XXX_Size() int { - return xxx_messageInfo_DisableExchangeRequest.Size(m) -} -func (m *DisableExchangeRequest) XXX_DiscardUnknown() { - xxx_messageInfo_DisableExchangeRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_DisableExchangeRequest proto.InternalMessageInfo - -func (m *DisableExchangeRequest) GetExchange() string { - if m != nil { - return m.Exchange +func (x *DisableExchangeRequest) GetExchange() string { + if x != nil { + return x.Exchange } return "" } type PairsSupported struct { - AvailablePairs string `protobuf:"bytes,1,opt,name=available_pairs,json=availablePairs,proto3" json:"available_pairs,omitempty"` - EnabledPairs string `protobuf:"bytes,2,opt,name=enabled_pairs,json=enabledPairs,proto3" json:"enabled_pairs,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AvailablePairs string `protobuf:"bytes,1,opt,name=available_pairs,json=availablePairs,proto3" json:"available_pairs,omitempty"` + EnabledPairs string `protobuf:"bytes,2,opt,name=enabled_pairs,json=enabledPairs,proto3" json:"enabled_pairs,omitempty"` } -func (m *PairsSupported) Reset() { *m = PairsSupported{} } -func (m *PairsSupported) String() string { return proto.CompactTextString(m) } -func (*PairsSupported) ProtoMessage() {} +func (x *PairsSupported) Reset() { + *x = PairsSupported{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PairsSupported) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PairsSupported) ProtoMessage() {} + +func (x *PairsSupported) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[20] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PairsSupported.ProtoReflect.Descriptor instead. func (*PairsSupported) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{20} + return file_rpc_proto_rawDescGZIP(), []int{20} } -func (m *PairsSupported) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PairsSupported.Unmarshal(m, b) -} -func (m *PairsSupported) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PairsSupported.Marshal(b, m, deterministic) -} -func (m *PairsSupported) XXX_Merge(src proto.Message) { - xxx_messageInfo_PairsSupported.Merge(m, src) -} -func (m *PairsSupported) XXX_Size() int { - return xxx_messageInfo_PairsSupported.Size(m) -} -func (m *PairsSupported) XXX_DiscardUnknown() { - xxx_messageInfo_PairsSupported.DiscardUnknown(m) -} - -var xxx_messageInfo_PairsSupported proto.InternalMessageInfo - -func (m *PairsSupported) GetAvailablePairs() string { - if m != nil { - return m.AvailablePairs +func (x *PairsSupported) GetAvailablePairs() string { + if x != nil { + return x.AvailablePairs } return "" } -func (m *PairsSupported) GetEnabledPairs() string { - if m != nil { - return m.EnabledPairs +func (x *PairsSupported) GetEnabledPairs() string { + if x != nil { + return x.EnabledPairs } return "" } type GetExchangeInfoResponse struct { - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Enabled bool `protobuf:"varint,2,opt,name=enabled,proto3" json:"enabled,omitempty"` - Verbose bool `protobuf:"varint,3,opt,name=verbose,proto3" json:"verbose,omitempty"` - UsingSandbox bool `protobuf:"varint,4,opt,name=using_sandbox,json=usingSandbox,proto3" json:"using_sandbox,omitempty"` - HttpTimeout string `protobuf:"bytes,5,opt,name=http_timeout,json=httpTimeout,proto3" json:"http_timeout,omitempty"` - HttpUseragent string `protobuf:"bytes,6,opt,name=http_useragent,json=httpUseragent,proto3" json:"http_useragent,omitempty"` - HttpProxy string `protobuf:"bytes,7,opt,name=http_proxy,json=httpProxy,proto3" json:"http_proxy,omitempty"` - BaseCurrencies string `protobuf:"bytes,8,opt,name=base_currencies,json=baseCurrencies,proto3" json:"base_currencies,omitempty"` - SupportedAssets map[string]*PairsSupported `protobuf:"bytes,9,rep,name=supported_assets,json=supportedAssets,proto3" json:"supported_assets,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - AuthenticatedApi bool `protobuf:"varint,10,opt,name=authenticated_api,json=authenticatedApi,proto3" json:"authenticated_api,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Enabled bool `protobuf:"varint,2,opt,name=enabled,proto3" json:"enabled,omitempty"` + Verbose bool `protobuf:"varint,3,opt,name=verbose,proto3" json:"verbose,omitempty"` + UsingSandbox bool `protobuf:"varint,4,opt,name=using_sandbox,json=usingSandbox,proto3" json:"using_sandbox,omitempty"` + HttpTimeout string `protobuf:"bytes,5,opt,name=http_timeout,json=httpTimeout,proto3" json:"http_timeout,omitempty"` + HttpUseragent string `protobuf:"bytes,6,opt,name=http_useragent,json=httpUseragent,proto3" json:"http_useragent,omitempty"` + HttpProxy string `protobuf:"bytes,7,opt,name=http_proxy,json=httpProxy,proto3" json:"http_proxy,omitempty"` + BaseCurrencies string `protobuf:"bytes,8,opt,name=base_currencies,json=baseCurrencies,proto3" json:"base_currencies,omitempty"` + SupportedAssets map[string]*PairsSupported `protobuf:"bytes,9,rep,name=supported_assets,json=supportedAssets,proto3" json:"supported_assets,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + AuthenticatedApi bool `protobuf:"varint,10,opt,name=authenticated_api,json=authenticatedApi,proto3" json:"authenticated_api,omitempty"` } -func (m *GetExchangeInfoResponse) Reset() { *m = GetExchangeInfoResponse{} } -func (m *GetExchangeInfoResponse) String() string { return proto.CompactTextString(m) } -func (*GetExchangeInfoResponse) ProtoMessage() {} +func (x *GetExchangeInfoResponse) Reset() { + *x = GetExchangeInfoResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetExchangeInfoResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetExchangeInfoResponse) ProtoMessage() {} + +func (x *GetExchangeInfoResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[21] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetExchangeInfoResponse.ProtoReflect.Descriptor instead. func (*GetExchangeInfoResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{21} + return file_rpc_proto_rawDescGZIP(), []int{21} } -func (m *GetExchangeInfoResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetExchangeInfoResponse.Unmarshal(m, b) -} -func (m *GetExchangeInfoResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetExchangeInfoResponse.Marshal(b, m, deterministic) -} -func (m *GetExchangeInfoResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetExchangeInfoResponse.Merge(m, src) -} -func (m *GetExchangeInfoResponse) XXX_Size() int { - return xxx_messageInfo_GetExchangeInfoResponse.Size(m) -} -func (m *GetExchangeInfoResponse) XXX_DiscardUnknown() { - xxx_messageInfo_GetExchangeInfoResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_GetExchangeInfoResponse proto.InternalMessageInfo - -func (m *GetExchangeInfoResponse) GetName() string { - if m != nil { - return m.Name +func (x *GetExchangeInfoResponse) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *GetExchangeInfoResponse) GetEnabled() bool { - if m != nil { - return m.Enabled +func (x *GetExchangeInfoResponse) GetEnabled() bool { + if x != nil { + return x.Enabled } return false } -func (m *GetExchangeInfoResponse) GetVerbose() bool { - if m != nil { - return m.Verbose +func (x *GetExchangeInfoResponse) GetVerbose() bool { + if x != nil { + return x.Verbose } return false } -func (m *GetExchangeInfoResponse) GetUsingSandbox() bool { - if m != nil { - return m.UsingSandbox +func (x *GetExchangeInfoResponse) GetUsingSandbox() bool { + if x != nil { + return x.UsingSandbox } return false } -func (m *GetExchangeInfoResponse) GetHttpTimeout() string { - if m != nil { - return m.HttpTimeout +func (x *GetExchangeInfoResponse) GetHttpTimeout() string { + if x != nil { + return x.HttpTimeout } return "" } -func (m *GetExchangeInfoResponse) GetHttpUseragent() string { - if m != nil { - return m.HttpUseragent +func (x *GetExchangeInfoResponse) GetHttpUseragent() string { + if x != nil { + return x.HttpUseragent } return "" } -func (m *GetExchangeInfoResponse) GetHttpProxy() string { - if m != nil { - return m.HttpProxy +func (x *GetExchangeInfoResponse) GetHttpProxy() string { + if x != nil { + return x.HttpProxy } return "" } -func (m *GetExchangeInfoResponse) GetBaseCurrencies() string { - if m != nil { - return m.BaseCurrencies +func (x *GetExchangeInfoResponse) GetBaseCurrencies() string { + if x != nil { + return x.BaseCurrencies } return "" } -func (m *GetExchangeInfoResponse) GetSupportedAssets() map[string]*PairsSupported { - if m != nil { - return m.SupportedAssets +func (x *GetExchangeInfoResponse) GetSupportedAssets() map[string]*PairsSupported { + if x != nil { + return x.SupportedAssets } return nil } -func (m *GetExchangeInfoResponse) GetAuthenticatedApi() bool { - if m != nil { - return m.AuthenticatedApi +func (x *GetExchangeInfoResponse) GetAuthenticatedApi() bool { + if x != nil { + return x.AuthenticatedApi } return false } type GetTickerRequest struct { - Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` - Pair *CurrencyPair `protobuf:"bytes,2,opt,name=pair,proto3" json:"pair,omitempty"` - AssetType string `protobuf:"bytes,3,opt,name=asset_type,json=assetType,proto3" json:"asset_type,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` + Pair *CurrencyPair `protobuf:"bytes,2,opt,name=pair,proto3" json:"pair,omitempty"` + AssetType string `protobuf:"bytes,3,opt,name=asset_type,json=assetType,proto3" json:"asset_type,omitempty"` } -func (m *GetTickerRequest) Reset() { *m = GetTickerRequest{} } -func (m *GetTickerRequest) String() string { return proto.CompactTextString(m) } -func (*GetTickerRequest) ProtoMessage() {} +func (x *GetTickerRequest) Reset() { + *x = GetTickerRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetTickerRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetTickerRequest) ProtoMessage() {} + +func (x *GetTickerRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[22] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetTickerRequest.ProtoReflect.Descriptor instead. func (*GetTickerRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{22} + return file_rpc_proto_rawDescGZIP(), []int{22} } -func (m *GetTickerRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetTickerRequest.Unmarshal(m, b) -} -func (m *GetTickerRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetTickerRequest.Marshal(b, m, deterministic) -} -func (m *GetTickerRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetTickerRequest.Merge(m, src) -} -func (m *GetTickerRequest) XXX_Size() int { - return xxx_messageInfo_GetTickerRequest.Size(m) -} -func (m *GetTickerRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetTickerRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_GetTickerRequest proto.InternalMessageInfo - -func (m *GetTickerRequest) GetExchange() string { - if m != nil { - return m.Exchange +func (x *GetTickerRequest) GetExchange() string { + if x != nil { + return x.Exchange } return "" } -func (m *GetTickerRequest) GetPair() *CurrencyPair { - if m != nil { - return m.Pair +func (x *GetTickerRequest) GetPair() *CurrencyPair { + if x != nil { + return x.Pair } return nil } -func (m *GetTickerRequest) GetAssetType() string { - if m != nil { - return m.AssetType +func (x *GetTickerRequest) GetAssetType() string { + if x != nil { + return x.AssetType } return "" } type CurrencyPair struct { - Delimiter string `protobuf:"bytes,1,opt,name=delimiter,proto3" json:"delimiter,omitempty"` - Base string `protobuf:"bytes,2,opt,name=base,proto3" json:"base,omitempty"` - Quote string `protobuf:"bytes,3,opt,name=quote,proto3" json:"quote,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Delimiter string `protobuf:"bytes,1,opt,name=delimiter,proto3" json:"delimiter,omitempty"` + Base string `protobuf:"bytes,2,opt,name=base,proto3" json:"base,omitempty"` + Quote string `protobuf:"bytes,3,opt,name=quote,proto3" json:"quote,omitempty"` } -func (m *CurrencyPair) Reset() { *m = CurrencyPair{} } -func (m *CurrencyPair) String() string { return proto.CompactTextString(m) } -func (*CurrencyPair) ProtoMessage() {} +func (x *CurrencyPair) Reset() { + *x = CurrencyPair{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CurrencyPair) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CurrencyPair) ProtoMessage() {} + +func (x *CurrencyPair) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[23] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CurrencyPair.ProtoReflect.Descriptor instead. func (*CurrencyPair) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{23} + return file_rpc_proto_rawDescGZIP(), []int{23} } -func (m *CurrencyPair) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CurrencyPair.Unmarshal(m, b) -} -func (m *CurrencyPair) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CurrencyPair.Marshal(b, m, deterministic) -} -func (m *CurrencyPair) XXX_Merge(src proto.Message) { - xxx_messageInfo_CurrencyPair.Merge(m, src) -} -func (m *CurrencyPair) XXX_Size() int { - return xxx_messageInfo_CurrencyPair.Size(m) -} -func (m *CurrencyPair) XXX_DiscardUnknown() { - xxx_messageInfo_CurrencyPair.DiscardUnknown(m) -} - -var xxx_messageInfo_CurrencyPair proto.InternalMessageInfo - -func (m *CurrencyPair) GetDelimiter() string { - if m != nil { - return m.Delimiter +func (x *CurrencyPair) GetDelimiter() string { + if x != nil { + return x.Delimiter } return "" } -func (m *CurrencyPair) GetBase() string { - if m != nil { - return m.Base +func (x *CurrencyPair) GetBase() string { + if x != nil { + return x.Base } return "" } -func (m *CurrencyPair) GetQuote() string { - if m != nil { - return m.Quote +func (x *CurrencyPair) GetQuote() string { + if x != nil { + return x.Quote } return "" } type TickerResponse struct { - Pair *CurrencyPair `protobuf:"bytes,1,opt,name=pair,proto3" json:"pair,omitempty"` - LastUpdated int64 `protobuf:"varint,2,opt,name=last_updated,json=lastUpdated,proto3" json:"last_updated,omitempty"` - CurrencyPair string `protobuf:"bytes,3,opt,name=currency_pair,json=currencyPair,proto3" json:"currency_pair,omitempty"` - Last float64 `protobuf:"fixed64,4,opt,name=last,proto3" json:"last,omitempty"` - High float64 `protobuf:"fixed64,5,opt,name=high,proto3" json:"high,omitempty"` - Low float64 `protobuf:"fixed64,6,opt,name=low,proto3" json:"low,omitempty"` - Bid float64 `protobuf:"fixed64,7,opt,name=bid,proto3" json:"bid,omitempty"` - Ask float64 `protobuf:"fixed64,8,opt,name=ask,proto3" json:"ask,omitempty"` - Volume float64 `protobuf:"fixed64,9,opt,name=volume,proto3" json:"volume,omitempty"` - PriceAth float64 `protobuf:"fixed64,10,opt,name=price_ath,json=priceAth,proto3" json:"price_ath,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Pair *CurrencyPair `protobuf:"bytes,1,opt,name=pair,proto3" json:"pair,omitempty"` + LastUpdated int64 `protobuf:"varint,2,opt,name=last_updated,json=lastUpdated,proto3" json:"last_updated,omitempty"` + CurrencyPair string `protobuf:"bytes,3,opt,name=currency_pair,json=currencyPair,proto3" json:"currency_pair,omitempty"` + Last float64 `protobuf:"fixed64,4,opt,name=last,proto3" json:"last,omitempty"` + High float64 `protobuf:"fixed64,5,opt,name=high,proto3" json:"high,omitempty"` + Low float64 `protobuf:"fixed64,6,opt,name=low,proto3" json:"low,omitempty"` + Bid float64 `protobuf:"fixed64,7,opt,name=bid,proto3" json:"bid,omitempty"` + Ask float64 `protobuf:"fixed64,8,opt,name=ask,proto3" json:"ask,omitempty"` + Volume float64 `protobuf:"fixed64,9,opt,name=volume,proto3" json:"volume,omitempty"` + PriceAth float64 `protobuf:"fixed64,10,opt,name=price_ath,json=priceAth,proto3" json:"price_ath,omitempty"` } -func (m *TickerResponse) Reset() { *m = TickerResponse{} } -func (m *TickerResponse) String() string { return proto.CompactTextString(m) } -func (*TickerResponse) ProtoMessage() {} +func (x *TickerResponse) Reset() { + *x = TickerResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TickerResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TickerResponse) ProtoMessage() {} + +func (x *TickerResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[24] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TickerResponse.ProtoReflect.Descriptor instead. func (*TickerResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{24} + return file_rpc_proto_rawDescGZIP(), []int{24} } -func (m *TickerResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_TickerResponse.Unmarshal(m, b) -} -func (m *TickerResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_TickerResponse.Marshal(b, m, deterministic) -} -func (m *TickerResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_TickerResponse.Merge(m, src) -} -func (m *TickerResponse) XXX_Size() int { - return xxx_messageInfo_TickerResponse.Size(m) -} -func (m *TickerResponse) XXX_DiscardUnknown() { - xxx_messageInfo_TickerResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_TickerResponse proto.InternalMessageInfo - -func (m *TickerResponse) GetPair() *CurrencyPair { - if m != nil { - return m.Pair +func (x *TickerResponse) GetPair() *CurrencyPair { + if x != nil { + return x.Pair } return nil } -func (m *TickerResponse) GetLastUpdated() int64 { - if m != nil { - return m.LastUpdated +func (x *TickerResponse) GetLastUpdated() int64 { + if x != nil { + return x.LastUpdated } return 0 } -func (m *TickerResponse) GetCurrencyPair() string { - if m != nil { - return m.CurrencyPair +func (x *TickerResponse) GetCurrencyPair() string { + if x != nil { + return x.CurrencyPair } return "" } -func (m *TickerResponse) GetLast() float64 { - if m != nil { - return m.Last +func (x *TickerResponse) GetLast() float64 { + if x != nil { + return x.Last } return 0 } -func (m *TickerResponse) GetHigh() float64 { - if m != nil { - return m.High +func (x *TickerResponse) GetHigh() float64 { + if x != nil { + return x.High } return 0 } -func (m *TickerResponse) GetLow() float64 { - if m != nil { - return m.Low +func (x *TickerResponse) GetLow() float64 { + if x != nil { + return x.Low } return 0 } -func (m *TickerResponse) GetBid() float64 { - if m != nil { - return m.Bid +func (x *TickerResponse) GetBid() float64 { + if x != nil { + return x.Bid } return 0 } -func (m *TickerResponse) GetAsk() float64 { - if m != nil { - return m.Ask +func (x *TickerResponse) GetAsk() float64 { + if x != nil { + return x.Ask } return 0 } -func (m *TickerResponse) GetVolume() float64 { - if m != nil { - return m.Volume +func (x *TickerResponse) GetVolume() float64 { + if x != nil { + return x.Volume } return 0 } -func (m *TickerResponse) GetPriceAth() float64 { - if m != nil { - return m.PriceAth +func (x *TickerResponse) GetPriceAth() float64 { + if x != nil { + return x.PriceAth } return 0 } type GetTickersRequest struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields } -func (m *GetTickersRequest) Reset() { *m = GetTickersRequest{} } -func (m *GetTickersRequest) String() string { return proto.CompactTextString(m) } -func (*GetTickersRequest) ProtoMessage() {} +func (x *GetTickersRequest) Reset() { + *x = GetTickersRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetTickersRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetTickersRequest) ProtoMessage() {} + +func (x *GetTickersRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[25] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetTickersRequest.ProtoReflect.Descriptor instead. func (*GetTickersRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{25} + return file_rpc_proto_rawDescGZIP(), []int{25} } -func (m *GetTickersRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetTickersRequest.Unmarshal(m, b) -} -func (m *GetTickersRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetTickersRequest.Marshal(b, m, deterministic) -} -func (m *GetTickersRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetTickersRequest.Merge(m, src) -} -func (m *GetTickersRequest) XXX_Size() int { - return xxx_messageInfo_GetTickersRequest.Size(m) -} -func (m *GetTickersRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetTickersRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_GetTickersRequest proto.InternalMessageInfo - type Tickers struct { - Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` - Tickers []*TickerResponse `protobuf:"bytes,2,rep,name=tickers,proto3" json:"tickers,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` + Tickers []*TickerResponse `protobuf:"bytes,2,rep,name=tickers,proto3" json:"tickers,omitempty"` } -func (m *Tickers) Reset() { *m = Tickers{} } -func (m *Tickers) String() string { return proto.CompactTextString(m) } -func (*Tickers) ProtoMessage() {} +func (x *Tickers) Reset() { + *x = Tickers{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Tickers) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Tickers) ProtoMessage() {} + +func (x *Tickers) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[26] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Tickers.ProtoReflect.Descriptor instead. func (*Tickers) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{26} + return file_rpc_proto_rawDescGZIP(), []int{26} } -func (m *Tickers) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Tickers.Unmarshal(m, b) -} -func (m *Tickers) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Tickers.Marshal(b, m, deterministic) -} -func (m *Tickers) XXX_Merge(src proto.Message) { - xxx_messageInfo_Tickers.Merge(m, src) -} -func (m *Tickers) XXX_Size() int { - return xxx_messageInfo_Tickers.Size(m) -} -func (m *Tickers) XXX_DiscardUnknown() { - xxx_messageInfo_Tickers.DiscardUnknown(m) -} - -var xxx_messageInfo_Tickers proto.InternalMessageInfo - -func (m *Tickers) GetExchange() string { - if m != nil { - return m.Exchange +func (x *Tickers) GetExchange() string { + if x != nil { + return x.Exchange } return "" } -func (m *Tickers) GetTickers() []*TickerResponse { - if m != nil { - return m.Tickers +func (x *Tickers) GetTickers() []*TickerResponse { + if x != nil { + return x.Tickers } return nil } type GetTickersResponse struct { - Tickers []*Tickers `protobuf:"bytes,1,rep,name=tickers,proto3" json:"tickers,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Tickers []*Tickers `protobuf:"bytes,1,rep,name=tickers,proto3" json:"tickers,omitempty"` } -func (m *GetTickersResponse) Reset() { *m = GetTickersResponse{} } -func (m *GetTickersResponse) String() string { return proto.CompactTextString(m) } -func (*GetTickersResponse) ProtoMessage() {} +func (x *GetTickersResponse) Reset() { + *x = GetTickersResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[27] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetTickersResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetTickersResponse) ProtoMessage() {} + +func (x *GetTickersResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[27] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetTickersResponse.ProtoReflect.Descriptor instead. func (*GetTickersResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{27} + return file_rpc_proto_rawDescGZIP(), []int{27} } -func (m *GetTickersResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetTickersResponse.Unmarshal(m, b) -} -func (m *GetTickersResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetTickersResponse.Marshal(b, m, deterministic) -} -func (m *GetTickersResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetTickersResponse.Merge(m, src) -} -func (m *GetTickersResponse) XXX_Size() int { - return xxx_messageInfo_GetTickersResponse.Size(m) -} -func (m *GetTickersResponse) XXX_DiscardUnknown() { - xxx_messageInfo_GetTickersResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_GetTickersResponse proto.InternalMessageInfo - -func (m *GetTickersResponse) GetTickers() []*Tickers { - if m != nil { - return m.Tickers +func (x *GetTickersResponse) GetTickers() []*Tickers { + if x != nil { + return x.Tickers } return nil } type GetOrderbookRequest struct { - Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` - Pair *CurrencyPair `protobuf:"bytes,2,opt,name=pair,proto3" json:"pair,omitempty"` - AssetType string `protobuf:"bytes,3,opt,name=asset_type,json=assetType,proto3" json:"asset_type,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` + Pair *CurrencyPair `protobuf:"bytes,2,opt,name=pair,proto3" json:"pair,omitempty"` + AssetType string `protobuf:"bytes,3,opt,name=asset_type,json=assetType,proto3" json:"asset_type,omitempty"` } -func (m *GetOrderbookRequest) Reset() { *m = GetOrderbookRequest{} } -func (m *GetOrderbookRequest) String() string { return proto.CompactTextString(m) } -func (*GetOrderbookRequest) ProtoMessage() {} +func (x *GetOrderbookRequest) Reset() { + *x = GetOrderbookRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[28] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetOrderbookRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetOrderbookRequest) ProtoMessage() {} + +func (x *GetOrderbookRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[28] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetOrderbookRequest.ProtoReflect.Descriptor instead. func (*GetOrderbookRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{28} + return file_rpc_proto_rawDescGZIP(), []int{28} } -func (m *GetOrderbookRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetOrderbookRequest.Unmarshal(m, b) -} -func (m *GetOrderbookRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetOrderbookRequest.Marshal(b, m, deterministic) -} -func (m *GetOrderbookRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetOrderbookRequest.Merge(m, src) -} -func (m *GetOrderbookRequest) XXX_Size() int { - return xxx_messageInfo_GetOrderbookRequest.Size(m) -} -func (m *GetOrderbookRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetOrderbookRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_GetOrderbookRequest proto.InternalMessageInfo - -func (m *GetOrderbookRequest) GetExchange() string { - if m != nil { - return m.Exchange +func (x *GetOrderbookRequest) GetExchange() string { + if x != nil { + return x.Exchange } return "" } -func (m *GetOrderbookRequest) GetPair() *CurrencyPair { - if m != nil { - return m.Pair +func (x *GetOrderbookRequest) GetPair() *CurrencyPair { + if x != nil { + return x.Pair } return nil } -func (m *GetOrderbookRequest) GetAssetType() string { - if m != nil { - return m.AssetType +func (x *GetOrderbookRequest) GetAssetType() string { + if x != nil { + return x.AssetType } return "" } type OrderbookItem struct { - Amount float64 `protobuf:"fixed64,1,opt,name=amount,proto3" json:"amount,omitempty"` - Price float64 `protobuf:"fixed64,2,opt,name=price,proto3" json:"price,omitempty"` - Id int64 `protobuf:"varint,3,opt,name=id,proto3" json:"id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Amount float64 `protobuf:"fixed64,1,opt,name=amount,proto3" json:"amount,omitempty"` + Price float64 `protobuf:"fixed64,2,opt,name=price,proto3" json:"price,omitempty"` + Id int64 `protobuf:"varint,3,opt,name=id,proto3" json:"id,omitempty"` } -func (m *OrderbookItem) Reset() { *m = OrderbookItem{} } -func (m *OrderbookItem) String() string { return proto.CompactTextString(m) } -func (*OrderbookItem) ProtoMessage() {} +func (x *OrderbookItem) Reset() { + *x = OrderbookItem{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[29] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OrderbookItem) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OrderbookItem) ProtoMessage() {} + +func (x *OrderbookItem) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[29] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OrderbookItem.ProtoReflect.Descriptor instead. func (*OrderbookItem) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{29} + return file_rpc_proto_rawDescGZIP(), []int{29} } -func (m *OrderbookItem) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_OrderbookItem.Unmarshal(m, b) -} -func (m *OrderbookItem) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_OrderbookItem.Marshal(b, m, deterministic) -} -func (m *OrderbookItem) XXX_Merge(src proto.Message) { - xxx_messageInfo_OrderbookItem.Merge(m, src) -} -func (m *OrderbookItem) XXX_Size() int { - return xxx_messageInfo_OrderbookItem.Size(m) -} -func (m *OrderbookItem) XXX_DiscardUnknown() { - xxx_messageInfo_OrderbookItem.DiscardUnknown(m) -} - -var xxx_messageInfo_OrderbookItem proto.InternalMessageInfo - -func (m *OrderbookItem) GetAmount() float64 { - if m != nil { - return m.Amount +func (x *OrderbookItem) GetAmount() float64 { + if x != nil { + return x.Amount } return 0 } -func (m *OrderbookItem) GetPrice() float64 { - if m != nil { - return m.Price +func (x *OrderbookItem) GetPrice() float64 { + if x != nil { + return x.Price } return 0 } -func (m *OrderbookItem) GetId() int64 { - if m != nil { - return m.Id +func (x *OrderbookItem) GetId() int64 { + if x != nil { + return x.Id } return 0 } type OrderbookResponse struct { - Pair *CurrencyPair `protobuf:"bytes,1,opt,name=pair,proto3" json:"pair,omitempty"` - CurrencyPair string `protobuf:"bytes,2,opt,name=currency_pair,json=currencyPair,proto3" json:"currency_pair,omitempty"` - Bids []*OrderbookItem `protobuf:"bytes,3,rep,name=bids,proto3" json:"bids,omitempty"` - Asks []*OrderbookItem `protobuf:"bytes,4,rep,name=asks,proto3" json:"asks,omitempty"` - LastUpdated int64 `protobuf:"varint,5,opt,name=last_updated,json=lastUpdated,proto3" json:"last_updated,omitempty"` - AssetType string `protobuf:"bytes,6,opt,name=asset_type,json=assetType,proto3" json:"asset_type,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Pair *CurrencyPair `protobuf:"bytes,1,opt,name=pair,proto3" json:"pair,omitempty"` + CurrencyPair string `protobuf:"bytes,2,opt,name=currency_pair,json=currencyPair,proto3" json:"currency_pair,omitempty"` + Bids []*OrderbookItem `protobuf:"bytes,3,rep,name=bids,proto3" json:"bids,omitempty"` + Asks []*OrderbookItem `protobuf:"bytes,4,rep,name=asks,proto3" json:"asks,omitempty"` + LastUpdated int64 `protobuf:"varint,5,opt,name=last_updated,json=lastUpdated,proto3" json:"last_updated,omitempty"` + AssetType string `protobuf:"bytes,6,opt,name=asset_type,json=assetType,proto3" json:"asset_type,omitempty"` } -func (m *OrderbookResponse) Reset() { *m = OrderbookResponse{} } -func (m *OrderbookResponse) String() string { return proto.CompactTextString(m) } -func (*OrderbookResponse) ProtoMessage() {} +func (x *OrderbookResponse) Reset() { + *x = OrderbookResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OrderbookResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OrderbookResponse) ProtoMessage() {} + +func (x *OrderbookResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[30] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OrderbookResponse.ProtoReflect.Descriptor instead. func (*OrderbookResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{30} + return file_rpc_proto_rawDescGZIP(), []int{30} } -func (m *OrderbookResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_OrderbookResponse.Unmarshal(m, b) -} -func (m *OrderbookResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_OrderbookResponse.Marshal(b, m, deterministic) -} -func (m *OrderbookResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_OrderbookResponse.Merge(m, src) -} -func (m *OrderbookResponse) XXX_Size() int { - return xxx_messageInfo_OrderbookResponse.Size(m) -} -func (m *OrderbookResponse) XXX_DiscardUnknown() { - xxx_messageInfo_OrderbookResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_OrderbookResponse proto.InternalMessageInfo - -func (m *OrderbookResponse) GetPair() *CurrencyPair { - if m != nil { - return m.Pair +func (x *OrderbookResponse) GetPair() *CurrencyPair { + if x != nil { + return x.Pair } return nil } -func (m *OrderbookResponse) GetCurrencyPair() string { - if m != nil { - return m.CurrencyPair +func (x *OrderbookResponse) GetCurrencyPair() string { + if x != nil { + return x.CurrencyPair } return "" } -func (m *OrderbookResponse) GetBids() []*OrderbookItem { - if m != nil { - return m.Bids +func (x *OrderbookResponse) GetBids() []*OrderbookItem { + if x != nil { + return x.Bids } return nil } -func (m *OrderbookResponse) GetAsks() []*OrderbookItem { - if m != nil { - return m.Asks +func (x *OrderbookResponse) GetAsks() []*OrderbookItem { + if x != nil { + return x.Asks } return nil } -func (m *OrderbookResponse) GetLastUpdated() int64 { - if m != nil { - return m.LastUpdated +func (x *OrderbookResponse) GetLastUpdated() int64 { + if x != nil { + return x.LastUpdated } return 0 } -func (m *OrderbookResponse) GetAssetType() string { - if m != nil { - return m.AssetType +func (x *OrderbookResponse) GetAssetType() string { + if x != nil { + return x.AssetType } return "" } type GetOrderbooksRequest struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields } -func (m *GetOrderbooksRequest) Reset() { *m = GetOrderbooksRequest{} } -func (m *GetOrderbooksRequest) String() string { return proto.CompactTextString(m) } -func (*GetOrderbooksRequest) ProtoMessage() {} +func (x *GetOrderbooksRequest) Reset() { + *x = GetOrderbooksRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[31] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetOrderbooksRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetOrderbooksRequest) ProtoMessage() {} + +func (x *GetOrderbooksRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[31] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetOrderbooksRequest.ProtoReflect.Descriptor instead. func (*GetOrderbooksRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{31} + return file_rpc_proto_rawDescGZIP(), []int{31} } -func (m *GetOrderbooksRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetOrderbooksRequest.Unmarshal(m, b) -} -func (m *GetOrderbooksRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetOrderbooksRequest.Marshal(b, m, deterministic) -} -func (m *GetOrderbooksRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetOrderbooksRequest.Merge(m, src) -} -func (m *GetOrderbooksRequest) XXX_Size() int { - return xxx_messageInfo_GetOrderbooksRequest.Size(m) -} -func (m *GetOrderbooksRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetOrderbooksRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_GetOrderbooksRequest proto.InternalMessageInfo - type Orderbooks struct { - Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` - Orderbooks []*OrderbookResponse `protobuf:"bytes,2,rep,name=orderbooks,proto3" json:"orderbooks,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` + Orderbooks []*OrderbookResponse `protobuf:"bytes,2,rep,name=orderbooks,proto3" json:"orderbooks,omitempty"` } -func (m *Orderbooks) Reset() { *m = Orderbooks{} } -func (m *Orderbooks) String() string { return proto.CompactTextString(m) } -func (*Orderbooks) ProtoMessage() {} +func (x *Orderbooks) Reset() { + *x = Orderbooks{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[32] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Orderbooks) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Orderbooks) ProtoMessage() {} + +func (x *Orderbooks) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[32] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Orderbooks.ProtoReflect.Descriptor instead. func (*Orderbooks) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{32} + return file_rpc_proto_rawDescGZIP(), []int{32} } -func (m *Orderbooks) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Orderbooks.Unmarshal(m, b) -} -func (m *Orderbooks) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Orderbooks.Marshal(b, m, deterministic) -} -func (m *Orderbooks) XXX_Merge(src proto.Message) { - xxx_messageInfo_Orderbooks.Merge(m, src) -} -func (m *Orderbooks) XXX_Size() int { - return xxx_messageInfo_Orderbooks.Size(m) -} -func (m *Orderbooks) XXX_DiscardUnknown() { - xxx_messageInfo_Orderbooks.DiscardUnknown(m) -} - -var xxx_messageInfo_Orderbooks proto.InternalMessageInfo - -func (m *Orderbooks) GetExchange() string { - if m != nil { - return m.Exchange +func (x *Orderbooks) GetExchange() string { + if x != nil { + return x.Exchange } return "" } -func (m *Orderbooks) GetOrderbooks() []*OrderbookResponse { - if m != nil { - return m.Orderbooks +func (x *Orderbooks) GetOrderbooks() []*OrderbookResponse { + if x != nil { + return x.Orderbooks } return nil } type GetOrderbooksResponse struct { - Orderbooks []*Orderbooks `protobuf:"bytes,1,rep,name=orderbooks,proto3" json:"orderbooks,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Orderbooks []*Orderbooks `protobuf:"bytes,1,rep,name=orderbooks,proto3" json:"orderbooks,omitempty"` } -func (m *GetOrderbooksResponse) Reset() { *m = GetOrderbooksResponse{} } -func (m *GetOrderbooksResponse) String() string { return proto.CompactTextString(m) } -func (*GetOrderbooksResponse) ProtoMessage() {} +func (x *GetOrderbooksResponse) Reset() { + *x = GetOrderbooksResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[33] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetOrderbooksResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetOrderbooksResponse) ProtoMessage() {} + +func (x *GetOrderbooksResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[33] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetOrderbooksResponse.ProtoReflect.Descriptor instead. func (*GetOrderbooksResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{33} + return file_rpc_proto_rawDescGZIP(), []int{33} } -func (m *GetOrderbooksResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetOrderbooksResponse.Unmarshal(m, b) -} -func (m *GetOrderbooksResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetOrderbooksResponse.Marshal(b, m, deterministic) -} -func (m *GetOrderbooksResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetOrderbooksResponse.Merge(m, src) -} -func (m *GetOrderbooksResponse) XXX_Size() int { - return xxx_messageInfo_GetOrderbooksResponse.Size(m) -} -func (m *GetOrderbooksResponse) XXX_DiscardUnknown() { - xxx_messageInfo_GetOrderbooksResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_GetOrderbooksResponse proto.InternalMessageInfo - -func (m *GetOrderbooksResponse) GetOrderbooks() []*Orderbooks { - if m != nil { - return m.Orderbooks +func (x *GetOrderbooksResponse) GetOrderbooks() []*Orderbooks { + if x != nil { + return x.Orderbooks } return nil } type GetAccountInfoRequest struct { - Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` } -func (m *GetAccountInfoRequest) Reset() { *m = GetAccountInfoRequest{} } -func (m *GetAccountInfoRequest) String() string { return proto.CompactTextString(m) } -func (*GetAccountInfoRequest) ProtoMessage() {} +func (x *GetAccountInfoRequest) Reset() { + *x = GetAccountInfoRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[34] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetAccountInfoRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetAccountInfoRequest) ProtoMessage() {} + +func (x *GetAccountInfoRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[34] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetAccountInfoRequest.ProtoReflect.Descriptor instead. func (*GetAccountInfoRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{34} + return file_rpc_proto_rawDescGZIP(), []int{34} } -func (m *GetAccountInfoRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetAccountInfoRequest.Unmarshal(m, b) -} -func (m *GetAccountInfoRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetAccountInfoRequest.Marshal(b, m, deterministic) -} -func (m *GetAccountInfoRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetAccountInfoRequest.Merge(m, src) -} -func (m *GetAccountInfoRequest) XXX_Size() int { - return xxx_messageInfo_GetAccountInfoRequest.Size(m) -} -func (m *GetAccountInfoRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetAccountInfoRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_GetAccountInfoRequest proto.InternalMessageInfo - -func (m *GetAccountInfoRequest) GetExchange() string { - if m != nil { - return m.Exchange +func (x *GetAccountInfoRequest) GetExchange() string { + if x != nil { + return x.Exchange } return "" } type Account struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Currencies []*AccountCurrencyInfo `protobuf:"bytes,2,rep,name=currencies,proto3" json:"currencies,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Currencies []*AccountCurrencyInfo `protobuf:"bytes,2,rep,name=currencies,proto3" json:"currencies,omitempty"` } -func (m *Account) Reset() { *m = Account{} } -func (m *Account) String() string { return proto.CompactTextString(m) } -func (*Account) ProtoMessage() {} +func (x *Account) Reset() { + *x = Account{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[35] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Account) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Account) ProtoMessage() {} + +func (x *Account) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[35] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Account.ProtoReflect.Descriptor instead. func (*Account) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{35} + return file_rpc_proto_rawDescGZIP(), []int{35} } -func (m *Account) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Account.Unmarshal(m, b) -} -func (m *Account) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Account.Marshal(b, m, deterministic) -} -func (m *Account) XXX_Merge(src proto.Message) { - xxx_messageInfo_Account.Merge(m, src) -} -func (m *Account) XXX_Size() int { - return xxx_messageInfo_Account.Size(m) -} -func (m *Account) XXX_DiscardUnknown() { - xxx_messageInfo_Account.DiscardUnknown(m) -} - -var xxx_messageInfo_Account proto.InternalMessageInfo - -func (m *Account) GetId() string { - if m != nil { - return m.Id +func (x *Account) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *Account) GetCurrencies() []*AccountCurrencyInfo { - if m != nil { - return m.Currencies +func (x *Account) GetCurrencies() []*AccountCurrencyInfo { + if x != nil { + return x.Currencies } return nil } type AccountCurrencyInfo struct { - Currency string `protobuf:"bytes,1,opt,name=currency,proto3" json:"currency,omitempty"` - TotalValue float64 `protobuf:"fixed64,2,opt,name=total_value,json=totalValue,proto3" json:"total_value,omitempty"` - Hold float64 `protobuf:"fixed64,3,opt,name=hold,proto3" json:"hold,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Currency string `protobuf:"bytes,1,opt,name=currency,proto3" json:"currency,omitempty"` + TotalValue float64 `protobuf:"fixed64,2,opt,name=total_value,json=totalValue,proto3" json:"total_value,omitempty"` + Hold float64 `protobuf:"fixed64,3,opt,name=hold,proto3" json:"hold,omitempty"` } -func (m *AccountCurrencyInfo) Reset() { *m = AccountCurrencyInfo{} } -func (m *AccountCurrencyInfo) String() string { return proto.CompactTextString(m) } -func (*AccountCurrencyInfo) ProtoMessage() {} +func (x *AccountCurrencyInfo) Reset() { + *x = AccountCurrencyInfo{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[36] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AccountCurrencyInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AccountCurrencyInfo) ProtoMessage() {} + +func (x *AccountCurrencyInfo) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[36] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AccountCurrencyInfo.ProtoReflect.Descriptor instead. func (*AccountCurrencyInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{36} + return file_rpc_proto_rawDescGZIP(), []int{36} } -func (m *AccountCurrencyInfo) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_AccountCurrencyInfo.Unmarshal(m, b) -} -func (m *AccountCurrencyInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_AccountCurrencyInfo.Marshal(b, m, deterministic) -} -func (m *AccountCurrencyInfo) XXX_Merge(src proto.Message) { - xxx_messageInfo_AccountCurrencyInfo.Merge(m, src) -} -func (m *AccountCurrencyInfo) XXX_Size() int { - return xxx_messageInfo_AccountCurrencyInfo.Size(m) -} -func (m *AccountCurrencyInfo) XXX_DiscardUnknown() { - xxx_messageInfo_AccountCurrencyInfo.DiscardUnknown(m) -} - -var xxx_messageInfo_AccountCurrencyInfo proto.InternalMessageInfo - -func (m *AccountCurrencyInfo) GetCurrency() string { - if m != nil { - return m.Currency +func (x *AccountCurrencyInfo) GetCurrency() string { + if x != nil { + return x.Currency } return "" } -func (m *AccountCurrencyInfo) GetTotalValue() float64 { - if m != nil { - return m.TotalValue +func (x *AccountCurrencyInfo) GetTotalValue() float64 { + if x != nil { + return x.TotalValue } return 0 } -func (m *AccountCurrencyInfo) GetHold() float64 { - if m != nil { - return m.Hold +func (x *AccountCurrencyInfo) GetHold() float64 { + if x != nil { + return x.Hold } return 0 } type GetAccountInfoResponse struct { - Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` - Accounts []*Account `protobuf:"bytes,2,rep,name=accounts,proto3" json:"accounts,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` + Accounts []*Account `protobuf:"bytes,2,rep,name=accounts,proto3" json:"accounts,omitempty"` } -func (m *GetAccountInfoResponse) Reset() { *m = GetAccountInfoResponse{} } -func (m *GetAccountInfoResponse) String() string { return proto.CompactTextString(m) } -func (*GetAccountInfoResponse) ProtoMessage() {} +func (x *GetAccountInfoResponse) Reset() { + *x = GetAccountInfoResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[37] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetAccountInfoResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetAccountInfoResponse) ProtoMessage() {} + +func (x *GetAccountInfoResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[37] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetAccountInfoResponse.ProtoReflect.Descriptor instead. func (*GetAccountInfoResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{37} + return file_rpc_proto_rawDescGZIP(), []int{37} } -func (m *GetAccountInfoResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetAccountInfoResponse.Unmarshal(m, b) -} -func (m *GetAccountInfoResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetAccountInfoResponse.Marshal(b, m, deterministic) -} -func (m *GetAccountInfoResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetAccountInfoResponse.Merge(m, src) -} -func (m *GetAccountInfoResponse) XXX_Size() int { - return xxx_messageInfo_GetAccountInfoResponse.Size(m) -} -func (m *GetAccountInfoResponse) XXX_DiscardUnknown() { - xxx_messageInfo_GetAccountInfoResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_GetAccountInfoResponse proto.InternalMessageInfo - -func (m *GetAccountInfoResponse) GetExchange() string { - if m != nil { - return m.Exchange +func (x *GetAccountInfoResponse) GetExchange() string { + if x != nil { + return x.Exchange } return "" } -func (m *GetAccountInfoResponse) GetAccounts() []*Account { - if m != nil { - return m.Accounts +func (x *GetAccountInfoResponse) GetAccounts() []*Account { + if x != nil { + return x.Accounts } return nil } type GetConfigRequest struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields } -func (m *GetConfigRequest) Reset() { *m = GetConfigRequest{} } -func (m *GetConfigRequest) String() string { return proto.CompactTextString(m) } -func (*GetConfigRequest) ProtoMessage() {} +func (x *GetConfigRequest) Reset() { + *x = GetConfigRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[38] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetConfigRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetConfigRequest) ProtoMessage() {} + +func (x *GetConfigRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[38] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetConfigRequest.ProtoReflect.Descriptor instead. func (*GetConfigRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{38} + return file_rpc_proto_rawDescGZIP(), []int{38} } -func (m *GetConfigRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetConfigRequest.Unmarshal(m, b) -} -func (m *GetConfigRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetConfigRequest.Marshal(b, m, deterministic) -} -func (m *GetConfigRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetConfigRequest.Merge(m, src) -} -func (m *GetConfigRequest) XXX_Size() int { - return xxx_messageInfo_GetConfigRequest.Size(m) -} -func (m *GetConfigRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetConfigRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_GetConfigRequest proto.InternalMessageInfo - type GetConfigResponse struct { - Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` } -func (m *GetConfigResponse) Reset() { *m = GetConfigResponse{} } -func (m *GetConfigResponse) String() string { return proto.CompactTextString(m) } -func (*GetConfigResponse) ProtoMessage() {} +func (x *GetConfigResponse) Reset() { + *x = GetConfigResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[39] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetConfigResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetConfigResponse) ProtoMessage() {} + +func (x *GetConfigResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[39] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetConfigResponse.ProtoReflect.Descriptor instead. func (*GetConfigResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{39} + return file_rpc_proto_rawDescGZIP(), []int{39} } -func (m *GetConfigResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetConfigResponse.Unmarshal(m, b) -} -func (m *GetConfigResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetConfigResponse.Marshal(b, m, deterministic) -} -func (m *GetConfigResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetConfigResponse.Merge(m, src) -} -func (m *GetConfigResponse) XXX_Size() int { - return xxx_messageInfo_GetConfigResponse.Size(m) -} -func (m *GetConfigResponse) XXX_DiscardUnknown() { - xxx_messageInfo_GetConfigResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_GetConfigResponse proto.InternalMessageInfo - -func (m *GetConfigResponse) GetData() []byte { - if m != nil { - return m.Data +func (x *GetConfigResponse) GetData() []byte { + if x != nil { + return x.Data } return nil } type PortfolioAddress struct { - Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` - CoinType string `protobuf:"bytes,2,opt,name=coin_type,json=coinType,proto3" json:"coin_type,omitempty"` - Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` - Balance float64 `protobuf:"fixed64,4,opt,name=balance,proto3" json:"balance,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` + CoinType string `protobuf:"bytes,2,opt,name=coin_type,json=coinType,proto3" json:"coin_type,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + Balance float64 `protobuf:"fixed64,4,opt,name=balance,proto3" json:"balance,omitempty"` } -func (m *PortfolioAddress) Reset() { *m = PortfolioAddress{} } -func (m *PortfolioAddress) String() string { return proto.CompactTextString(m) } -func (*PortfolioAddress) ProtoMessage() {} +func (x *PortfolioAddress) Reset() { + *x = PortfolioAddress{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[40] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PortfolioAddress) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PortfolioAddress) ProtoMessage() {} + +func (x *PortfolioAddress) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[40] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PortfolioAddress.ProtoReflect.Descriptor instead. func (*PortfolioAddress) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{40} + return file_rpc_proto_rawDescGZIP(), []int{40} } -func (m *PortfolioAddress) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PortfolioAddress.Unmarshal(m, b) -} -func (m *PortfolioAddress) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PortfolioAddress.Marshal(b, m, deterministic) -} -func (m *PortfolioAddress) XXX_Merge(src proto.Message) { - xxx_messageInfo_PortfolioAddress.Merge(m, src) -} -func (m *PortfolioAddress) XXX_Size() int { - return xxx_messageInfo_PortfolioAddress.Size(m) -} -func (m *PortfolioAddress) XXX_DiscardUnknown() { - xxx_messageInfo_PortfolioAddress.DiscardUnknown(m) -} - -var xxx_messageInfo_PortfolioAddress proto.InternalMessageInfo - -func (m *PortfolioAddress) GetAddress() string { - if m != nil { - return m.Address +func (x *PortfolioAddress) GetAddress() string { + if x != nil { + return x.Address } return "" } -func (m *PortfolioAddress) GetCoinType() string { - if m != nil { - return m.CoinType +func (x *PortfolioAddress) GetCoinType() string { + if x != nil { + return x.CoinType } return "" } -func (m *PortfolioAddress) GetDescription() string { - if m != nil { - return m.Description +func (x *PortfolioAddress) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *PortfolioAddress) GetBalance() float64 { - if m != nil { - return m.Balance +func (x *PortfolioAddress) GetBalance() float64 { + if x != nil { + return x.Balance } return 0 } type GetPortfolioRequest struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields } -func (m *GetPortfolioRequest) Reset() { *m = GetPortfolioRequest{} } -func (m *GetPortfolioRequest) String() string { return proto.CompactTextString(m) } -func (*GetPortfolioRequest) ProtoMessage() {} +func (x *GetPortfolioRequest) Reset() { + *x = GetPortfolioRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[41] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetPortfolioRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetPortfolioRequest) ProtoMessage() {} + +func (x *GetPortfolioRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[41] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetPortfolioRequest.ProtoReflect.Descriptor instead. func (*GetPortfolioRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{41} + return file_rpc_proto_rawDescGZIP(), []int{41} } -func (m *GetPortfolioRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetPortfolioRequest.Unmarshal(m, b) -} -func (m *GetPortfolioRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetPortfolioRequest.Marshal(b, m, deterministic) -} -func (m *GetPortfolioRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetPortfolioRequest.Merge(m, src) -} -func (m *GetPortfolioRequest) XXX_Size() int { - return xxx_messageInfo_GetPortfolioRequest.Size(m) -} -func (m *GetPortfolioRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetPortfolioRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_GetPortfolioRequest proto.InternalMessageInfo - type GetPortfolioResponse struct { - Portfolio []*PortfolioAddress `protobuf:"bytes,1,rep,name=portfolio,proto3" json:"portfolio,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Portfolio []*PortfolioAddress `protobuf:"bytes,1,rep,name=portfolio,proto3" json:"portfolio,omitempty"` } -func (m *GetPortfolioResponse) Reset() { *m = GetPortfolioResponse{} } -func (m *GetPortfolioResponse) String() string { return proto.CompactTextString(m) } -func (*GetPortfolioResponse) ProtoMessage() {} +func (x *GetPortfolioResponse) Reset() { + *x = GetPortfolioResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[42] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetPortfolioResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetPortfolioResponse) ProtoMessage() {} + +func (x *GetPortfolioResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[42] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetPortfolioResponse.ProtoReflect.Descriptor instead. func (*GetPortfolioResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{42} + return file_rpc_proto_rawDescGZIP(), []int{42} } -func (m *GetPortfolioResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetPortfolioResponse.Unmarshal(m, b) -} -func (m *GetPortfolioResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetPortfolioResponse.Marshal(b, m, deterministic) -} -func (m *GetPortfolioResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetPortfolioResponse.Merge(m, src) -} -func (m *GetPortfolioResponse) XXX_Size() int { - return xxx_messageInfo_GetPortfolioResponse.Size(m) -} -func (m *GetPortfolioResponse) XXX_DiscardUnknown() { - xxx_messageInfo_GetPortfolioResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_GetPortfolioResponse proto.InternalMessageInfo - -func (m *GetPortfolioResponse) GetPortfolio() []*PortfolioAddress { - if m != nil { - return m.Portfolio +func (x *GetPortfolioResponse) GetPortfolio() []*PortfolioAddress { + if x != nil { + return x.Portfolio } return nil } type GetPortfolioSummaryRequest struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields } -func (m *GetPortfolioSummaryRequest) Reset() { *m = GetPortfolioSummaryRequest{} } -func (m *GetPortfolioSummaryRequest) String() string { return proto.CompactTextString(m) } -func (*GetPortfolioSummaryRequest) ProtoMessage() {} +func (x *GetPortfolioSummaryRequest) Reset() { + *x = GetPortfolioSummaryRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[43] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetPortfolioSummaryRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetPortfolioSummaryRequest) ProtoMessage() {} + +func (x *GetPortfolioSummaryRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[43] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetPortfolioSummaryRequest.ProtoReflect.Descriptor instead. func (*GetPortfolioSummaryRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{43} + return file_rpc_proto_rawDescGZIP(), []int{43} } -func (m *GetPortfolioSummaryRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetPortfolioSummaryRequest.Unmarshal(m, b) -} -func (m *GetPortfolioSummaryRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetPortfolioSummaryRequest.Marshal(b, m, deterministic) -} -func (m *GetPortfolioSummaryRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetPortfolioSummaryRequest.Merge(m, src) -} -func (m *GetPortfolioSummaryRequest) XXX_Size() int { - return xxx_messageInfo_GetPortfolioSummaryRequest.Size(m) -} -func (m *GetPortfolioSummaryRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetPortfolioSummaryRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_GetPortfolioSummaryRequest proto.InternalMessageInfo - type Coin struct { - Coin string `protobuf:"bytes,1,opt,name=coin,proto3" json:"coin,omitempty"` - Balance float64 `protobuf:"fixed64,2,opt,name=balance,proto3" json:"balance,omitempty"` - Address string `protobuf:"bytes,3,opt,name=address,proto3" json:"address,omitempty"` - Percentage float64 `protobuf:"fixed64,4,opt,name=percentage,proto3" json:"percentage,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Coin string `protobuf:"bytes,1,opt,name=coin,proto3" json:"coin,omitempty"` + Balance float64 `protobuf:"fixed64,2,opt,name=balance,proto3" json:"balance,omitempty"` + Address string `protobuf:"bytes,3,opt,name=address,proto3" json:"address,omitempty"` + Percentage float64 `protobuf:"fixed64,4,opt,name=percentage,proto3" json:"percentage,omitempty"` } -func (m *Coin) Reset() { *m = Coin{} } -func (m *Coin) String() string { return proto.CompactTextString(m) } -func (*Coin) ProtoMessage() {} +func (x *Coin) Reset() { + *x = Coin{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[44] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Coin) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Coin) ProtoMessage() {} + +func (x *Coin) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[44] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Coin.ProtoReflect.Descriptor instead. func (*Coin) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{44} + return file_rpc_proto_rawDescGZIP(), []int{44} } -func (m *Coin) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Coin.Unmarshal(m, b) -} -func (m *Coin) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Coin.Marshal(b, m, deterministic) -} -func (m *Coin) XXX_Merge(src proto.Message) { - xxx_messageInfo_Coin.Merge(m, src) -} -func (m *Coin) XXX_Size() int { - return xxx_messageInfo_Coin.Size(m) -} -func (m *Coin) XXX_DiscardUnknown() { - xxx_messageInfo_Coin.DiscardUnknown(m) -} - -var xxx_messageInfo_Coin proto.InternalMessageInfo - -func (m *Coin) GetCoin() string { - if m != nil { - return m.Coin +func (x *Coin) GetCoin() string { + if x != nil { + return x.Coin } return "" } -func (m *Coin) GetBalance() float64 { - if m != nil { - return m.Balance +func (x *Coin) GetBalance() float64 { + if x != nil { + return x.Balance } return 0 } -func (m *Coin) GetAddress() string { - if m != nil { - return m.Address +func (x *Coin) GetAddress() string { + if x != nil { + return x.Address } return "" } -func (m *Coin) GetPercentage() float64 { - if m != nil { - return m.Percentage +func (x *Coin) GetPercentage() float64 { + if x != nil { + return x.Percentage } return 0 } type OfflineCoinSummary struct { - Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` - Balance float64 `protobuf:"fixed64,2,opt,name=balance,proto3" json:"balance,omitempty"` - Percentage float64 `protobuf:"fixed64,3,opt,name=percentage,proto3" json:"percentage,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` + Balance float64 `protobuf:"fixed64,2,opt,name=balance,proto3" json:"balance,omitempty"` + Percentage float64 `protobuf:"fixed64,3,opt,name=percentage,proto3" json:"percentage,omitempty"` } -func (m *OfflineCoinSummary) Reset() { *m = OfflineCoinSummary{} } -func (m *OfflineCoinSummary) String() string { return proto.CompactTextString(m) } -func (*OfflineCoinSummary) ProtoMessage() {} +func (x *OfflineCoinSummary) Reset() { + *x = OfflineCoinSummary{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[45] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OfflineCoinSummary) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OfflineCoinSummary) ProtoMessage() {} + +func (x *OfflineCoinSummary) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[45] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OfflineCoinSummary.ProtoReflect.Descriptor instead. func (*OfflineCoinSummary) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{45} + return file_rpc_proto_rawDescGZIP(), []int{45} } -func (m *OfflineCoinSummary) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_OfflineCoinSummary.Unmarshal(m, b) -} -func (m *OfflineCoinSummary) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_OfflineCoinSummary.Marshal(b, m, deterministic) -} -func (m *OfflineCoinSummary) XXX_Merge(src proto.Message) { - xxx_messageInfo_OfflineCoinSummary.Merge(m, src) -} -func (m *OfflineCoinSummary) XXX_Size() int { - return xxx_messageInfo_OfflineCoinSummary.Size(m) -} -func (m *OfflineCoinSummary) XXX_DiscardUnknown() { - xxx_messageInfo_OfflineCoinSummary.DiscardUnknown(m) -} - -var xxx_messageInfo_OfflineCoinSummary proto.InternalMessageInfo - -func (m *OfflineCoinSummary) GetAddress() string { - if m != nil { - return m.Address +func (x *OfflineCoinSummary) GetAddress() string { + if x != nil { + return x.Address } return "" } -func (m *OfflineCoinSummary) GetBalance() float64 { - if m != nil { - return m.Balance +func (x *OfflineCoinSummary) GetBalance() float64 { + if x != nil { + return x.Balance } return 0 } -func (m *OfflineCoinSummary) GetPercentage() float64 { - if m != nil { - return m.Percentage +func (x *OfflineCoinSummary) GetPercentage() float64 { + if x != nil { + return x.Percentage } return 0 } type OnlineCoinSummary struct { - Balance float64 `protobuf:"fixed64,1,opt,name=balance,proto3" json:"balance,omitempty"` - Percentage float64 `protobuf:"fixed64,2,opt,name=percentage,proto3" json:"percentage,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Balance float64 `protobuf:"fixed64,1,opt,name=balance,proto3" json:"balance,omitempty"` + Percentage float64 `protobuf:"fixed64,2,opt,name=percentage,proto3" json:"percentage,omitempty"` } -func (m *OnlineCoinSummary) Reset() { *m = OnlineCoinSummary{} } -func (m *OnlineCoinSummary) String() string { return proto.CompactTextString(m) } -func (*OnlineCoinSummary) ProtoMessage() {} +func (x *OnlineCoinSummary) Reset() { + *x = OnlineCoinSummary{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[46] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OnlineCoinSummary) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OnlineCoinSummary) ProtoMessage() {} + +func (x *OnlineCoinSummary) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[46] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OnlineCoinSummary.ProtoReflect.Descriptor instead. func (*OnlineCoinSummary) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{46} + return file_rpc_proto_rawDescGZIP(), []int{46} } -func (m *OnlineCoinSummary) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_OnlineCoinSummary.Unmarshal(m, b) -} -func (m *OnlineCoinSummary) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_OnlineCoinSummary.Marshal(b, m, deterministic) -} -func (m *OnlineCoinSummary) XXX_Merge(src proto.Message) { - xxx_messageInfo_OnlineCoinSummary.Merge(m, src) -} -func (m *OnlineCoinSummary) XXX_Size() int { - return xxx_messageInfo_OnlineCoinSummary.Size(m) -} -func (m *OnlineCoinSummary) XXX_DiscardUnknown() { - xxx_messageInfo_OnlineCoinSummary.DiscardUnknown(m) -} - -var xxx_messageInfo_OnlineCoinSummary proto.InternalMessageInfo - -func (m *OnlineCoinSummary) GetBalance() float64 { - if m != nil { - return m.Balance +func (x *OnlineCoinSummary) GetBalance() float64 { + if x != nil { + return x.Balance } return 0 } -func (m *OnlineCoinSummary) GetPercentage() float64 { - if m != nil { - return m.Percentage +func (x *OnlineCoinSummary) GetPercentage() float64 { + if x != nil { + return x.Percentage } return 0 } type OfflineCoins struct { - Addresses []*OfflineCoinSummary `protobuf:"bytes,1,rep,name=addresses,proto3" json:"addresses,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Addresses []*OfflineCoinSummary `protobuf:"bytes,1,rep,name=addresses,proto3" json:"addresses,omitempty"` } -func (m *OfflineCoins) Reset() { *m = OfflineCoins{} } -func (m *OfflineCoins) String() string { return proto.CompactTextString(m) } -func (*OfflineCoins) ProtoMessage() {} +func (x *OfflineCoins) Reset() { + *x = OfflineCoins{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[47] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OfflineCoins) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OfflineCoins) ProtoMessage() {} + +func (x *OfflineCoins) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[47] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OfflineCoins.ProtoReflect.Descriptor instead. func (*OfflineCoins) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{47} + return file_rpc_proto_rawDescGZIP(), []int{47} } -func (m *OfflineCoins) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_OfflineCoins.Unmarshal(m, b) -} -func (m *OfflineCoins) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_OfflineCoins.Marshal(b, m, deterministic) -} -func (m *OfflineCoins) XXX_Merge(src proto.Message) { - xxx_messageInfo_OfflineCoins.Merge(m, src) -} -func (m *OfflineCoins) XXX_Size() int { - return xxx_messageInfo_OfflineCoins.Size(m) -} -func (m *OfflineCoins) XXX_DiscardUnknown() { - xxx_messageInfo_OfflineCoins.DiscardUnknown(m) -} - -var xxx_messageInfo_OfflineCoins proto.InternalMessageInfo - -func (m *OfflineCoins) GetAddresses() []*OfflineCoinSummary { - if m != nil { - return m.Addresses +func (x *OfflineCoins) GetAddresses() []*OfflineCoinSummary { + if x != nil { + return x.Addresses } return nil } type OnlineCoins struct { - Coins map[string]*OnlineCoinSummary `protobuf:"bytes,1,rep,name=coins,proto3" json:"coins,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Coins map[string]*OnlineCoinSummary `protobuf:"bytes,1,rep,name=coins,proto3" json:"coins,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (m *OnlineCoins) Reset() { *m = OnlineCoins{} } -func (m *OnlineCoins) String() string { return proto.CompactTextString(m) } -func (*OnlineCoins) ProtoMessage() {} +func (x *OnlineCoins) Reset() { + *x = OnlineCoins{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[48] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OnlineCoins) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OnlineCoins) ProtoMessage() {} + +func (x *OnlineCoins) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[48] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OnlineCoins.ProtoReflect.Descriptor instead. func (*OnlineCoins) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{48} + return file_rpc_proto_rawDescGZIP(), []int{48} } -func (m *OnlineCoins) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_OnlineCoins.Unmarshal(m, b) -} -func (m *OnlineCoins) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_OnlineCoins.Marshal(b, m, deterministic) -} -func (m *OnlineCoins) XXX_Merge(src proto.Message) { - xxx_messageInfo_OnlineCoins.Merge(m, src) -} -func (m *OnlineCoins) XXX_Size() int { - return xxx_messageInfo_OnlineCoins.Size(m) -} -func (m *OnlineCoins) XXX_DiscardUnknown() { - xxx_messageInfo_OnlineCoins.DiscardUnknown(m) -} - -var xxx_messageInfo_OnlineCoins proto.InternalMessageInfo - -func (m *OnlineCoins) GetCoins() map[string]*OnlineCoinSummary { - if m != nil { - return m.Coins +func (x *OnlineCoins) GetCoins() map[string]*OnlineCoinSummary { + if x != nil { + return x.Coins } return nil } type GetPortfolioSummaryResponse struct { - CoinTotals []*Coin `protobuf:"bytes,1,rep,name=coin_totals,json=coinTotals,proto3" json:"coin_totals,omitempty"` - CoinsOffline []*Coin `protobuf:"bytes,2,rep,name=coins_offline,json=coinsOffline,proto3" json:"coins_offline,omitempty"` - CoinsOfflineSummary map[string]*OfflineCoins `protobuf:"bytes,3,rep,name=coins_offline_summary,json=coinsOfflineSummary,proto3" json:"coins_offline_summary,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - CoinsOnline []*Coin `protobuf:"bytes,4,rep,name=coins_online,json=coinsOnline,proto3" json:"coins_online,omitempty"` - CoinsOnlineSummary map[string]*OnlineCoins `protobuf:"bytes,5,rep,name=coins_online_summary,json=coinsOnlineSummary,proto3" json:"coins_online_summary,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + CoinTotals []*Coin `protobuf:"bytes,1,rep,name=coin_totals,json=coinTotals,proto3" json:"coin_totals,omitempty"` + CoinsOffline []*Coin `protobuf:"bytes,2,rep,name=coins_offline,json=coinsOffline,proto3" json:"coins_offline,omitempty"` + CoinsOfflineSummary map[string]*OfflineCoins `protobuf:"bytes,3,rep,name=coins_offline_summary,json=coinsOfflineSummary,proto3" json:"coins_offline_summary,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + CoinsOnline []*Coin `protobuf:"bytes,4,rep,name=coins_online,json=coinsOnline,proto3" json:"coins_online,omitempty"` + CoinsOnlineSummary map[string]*OnlineCoins `protobuf:"bytes,5,rep,name=coins_online_summary,json=coinsOnlineSummary,proto3" json:"coins_online_summary,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (m *GetPortfolioSummaryResponse) Reset() { *m = GetPortfolioSummaryResponse{} } -func (m *GetPortfolioSummaryResponse) String() string { return proto.CompactTextString(m) } -func (*GetPortfolioSummaryResponse) ProtoMessage() {} +func (x *GetPortfolioSummaryResponse) Reset() { + *x = GetPortfolioSummaryResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[49] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetPortfolioSummaryResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetPortfolioSummaryResponse) ProtoMessage() {} + +func (x *GetPortfolioSummaryResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[49] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetPortfolioSummaryResponse.ProtoReflect.Descriptor instead. func (*GetPortfolioSummaryResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{49} + return file_rpc_proto_rawDescGZIP(), []int{49} } -func (m *GetPortfolioSummaryResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetPortfolioSummaryResponse.Unmarshal(m, b) -} -func (m *GetPortfolioSummaryResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetPortfolioSummaryResponse.Marshal(b, m, deterministic) -} -func (m *GetPortfolioSummaryResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetPortfolioSummaryResponse.Merge(m, src) -} -func (m *GetPortfolioSummaryResponse) XXX_Size() int { - return xxx_messageInfo_GetPortfolioSummaryResponse.Size(m) -} -func (m *GetPortfolioSummaryResponse) XXX_DiscardUnknown() { - xxx_messageInfo_GetPortfolioSummaryResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_GetPortfolioSummaryResponse proto.InternalMessageInfo - -func (m *GetPortfolioSummaryResponse) GetCoinTotals() []*Coin { - if m != nil { - return m.CoinTotals +func (x *GetPortfolioSummaryResponse) GetCoinTotals() []*Coin { + if x != nil { + return x.CoinTotals } return nil } -func (m *GetPortfolioSummaryResponse) GetCoinsOffline() []*Coin { - if m != nil { - return m.CoinsOffline +func (x *GetPortfolioSummaryResponse) GetCoinsOffline() []*Coin { + if x != nil { + return x.CoinsOffline } return nil } -func (m *GetPortfolioSummaryResponse) GetCoinsOfflineSummary() map[string]*OfflineCoins { - if m != nil { - return m.CoinsOfflineSummary +func (x *GetPortfolioSummaryResponse) GetCoinsOfflineSummary() map[string]*OfflineCoins { + if x != nil { + return x.CoinsOfflineSummary } return nil } -func (m *GetPortfolioSummaryResponse) GetCoinsOnline() []*Coin { - if m != nil { - return m.CoinsOnline +func (x *GetPortfolioSummaryResponse) GetCoinsOnline() []*Coin { + if x != nil { + return x.CoinsOnline } return nil } -func (m *GetPortfolioSummaryResponse) GetCoinsOnlineSummary() map[string]*OnlineCoins { - if m != nil { - return m.CoinsOnlineSummary +func (x *GetPortfolioSummaryResponse) GetCoinsOnlineSummary() map[string]*OnlineCoins { + if x != nil { + return x.CoinsOnlineSummary } return nil } type AddPortfolioAddressRequest struct { - Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` - CoinType string `protobuf:"bytes,2,opt,name=coin_type,json=coinType,proto3" json:"coin_type,omitempty"` - Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` - Balance float64 `protobuf:"fixed64,4,opt,name=balance,proto3" json:"balance,omitempty"` - SupportedExchanges string `protobuf:"bytes,5,opt,name=supported_exchanges,json=supportedExchanges,proto3" json:"supported_exchanges,omitempty"` - ColdStorage bool `protobuf:"varint,6,opt,name=cold_storage,json=coldStorage,proto3" json:"cold_storage,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` + CoinType string `protobuf:"bytes,2,opt,name=coin_type,json=coinType,proto3" json:"coin_type,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + Balance float64 `protobuf:"fixed64,4,opt,name=balance,proto3" json:"balance,omitempty"` + SupportedExchanges string `protobuf:"bytes,5,opt,name=supported_exchanges,json=supportedExchanges,proto3" json:"supported_exchanges,omitempty"` + ColdStorage bool `protobuf:"varint,6,opt,name=cold_storage,json=coldStorage,proto3" json:"cold_storage,omitempty"` } -func (m *AddPortfolioAddressRequest) Reset() { *m = AddPortfolioAddressRequest{} } -func (m *AddPortfolioAddressRequest) String() string { return proto.CompactTextString(m) } -func (*AddPortfolioAddressRequest) ProtoMessage() {} +func (x *AddPortfolioAddressRequest) Reset() { + *x = AddPortfolioAddressRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[50] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AddPortfolioAddressRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AddPortfolioAddressRequest) ProtoMessage() {} + +func (x *AddPortfolioAddressRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[50] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AddPortfolioAddressRequest.ProtoReflect.Descriptor instead. func (*AddPortfolioAddressRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{50} + return file_rpc_proto_rawDescGZIP(), []int{50} } -func (m *AddPortfolioAddressRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_AddPortfolioAddressRequest.Unmarshal(m, b) -} -func (m *AddPortfolioAddressRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_AddPortfolioAddressRequest.Marshal(b, m, deterministic) -} -func (m *AddPortfolioAddressRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_AddPortfolioAddressRequest.Merge(m, src) -} -func (m *AddPortfolioAddressRequest) XXX_Size() int { - return xxx_messageInfo_AddPortfolioAddressRequest.Size(m) -} -func (m *AddPortfolioAddressRequest) XXX_DiscardUnknown() { - xxx_messageInfo_AddPortfolioAddressRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_AddPortfolioAddressRequest proto.InternalMessageInfo - -func (m *AddPortfolioAddressRequest) GetAddress() string { - if m != nil { - return m.Address +func (x *AddPortfolioAddressRequest) GetAddress() string { + if x != nil { + return x.Address } return "" } -func (m *AddPortfolioAddressRequest) GetCoinType() string { - if m != nil { - return m.CoinType +func (x *AddPortfolioAddressRequest) GetCoinType() string { + if x != nil { + return x.CoinType } return "" } -func (m *AddPortfolioAddressRequest) GetDescription() string { - if m != nil { - return m.Description +func (x *AddPortfolioAddressRequest) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *AddPortfolioAddressRequest) GetBalance() float64 { - if m != nil { - return m.Balance +func (x *AddPortfolioAddressRequest) GetBalance() float64 { + if x != nil { + return x.Balance } return 0 } -func (m *AddPortfolioAddressRequest) GetSupportedExchanges() string { - if m != nil { - return m.SupportedExchanges +func (x *AddPortfolioAddressRequest) GetSupportedExchanges() string { + if x != nil { + return x.SupportedExchanges } return "" } -func (m *AddPortfolioAddressRequest) GetColdStorage() bool { - if m != nil { - return m.ColdStorage +func (x *AddPortfolioAddressRequest) GetColdStorage() bool { + if x != nil { + return x.ColdStorage } return false } type AddPortfolioAddressResponse struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields } -func (m *AddPortfolioAddressResponse) Reset() { *m = AddPortfolioAddressResponse{} } -func (m *AddPortfolioAddressResponse) String() string { return proto.CompactTextString(m) } -func (*AddPortfolioAddressResponse) ProtoMessage() {} +func (x *AddPortfolioAddressResponse) Reset() { + *x = AddPortfolioAddressResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[51] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AddPortfolioAddressResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AddPortfolioAddressResponse) ProtoMessage() {} + +func (x *AddPortfolioAddressResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[51] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AddPortfolioAddressResponse.ProtoReflect.Descriptor instead. func (*AddPortfolioAddressResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{51} + return file_rpc_proto_rawDescGZIP(), []int{51} } -func (m *AddPortfolioAddressResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_AddPortfolioAddressResponse.Unmarshal(m, b) -} -func (m *AddPortfolioAddressResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_AddPortfolioAddressResponse.Marshal(b, m, deterministic) -} -func (m *AddPortfolioAddressResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_AddPortfolioAddressResponse.Merge(m, src) -} -func (m *AddPortfolioAddressResponse) XXX_Size() int { - return xxx_messageInfo_AddPortfolioAddressResponse.Size(m) -} -func (m *AddPortfolioAddressResponse) XXX_DiscardUnknown() { - xxx_messageInfo_AddPortfolioAddressResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_AddPortfolioAddressResponse proto.InternalMessageInfo - type RemovePortfolioAddressRequest struct { - Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` - CoinType string `protobuf:"bytes,2,opt,name=coin_type,json=coinType,proto3" json:"coin_type,omitempty"` - Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` + CoinType string `protobuf:"bytes,2,opt,name=coin_type,json=coinType,proto3" json:"coin_type,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` } -func (m *RemovePortfolioAddressRequest) Reset() { *m = RemovePortfolioAddressRequest{} } -func (m *RemovePortfolioAddressRequest) String() string { return proto.CompactTextString(m) } -func (*RemovePortfolioAddressRequest) ProtoMessage() {} +func (x *RemovePortfolioAddressRequest) Reset() { + *x = RemovePortfolioAddressRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[52] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RemovePortfolioAddressRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RemovePortfolioAddressRequest) ProtoMessage() {} + +func (x *RemovePortfolioAddressRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[52] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RemovePortfolioAddressRequest.ProtoReflect.Descriptor instead. func (*RemovePortfolioAddressRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{52} + return file_rpc_proto_rawDescGZIP(), []int{52} } -func (m *RemovePortfolioAddressRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_RemovePortfolioAddressRequest.Unmarshal(m, b) -} -func (m *RemovePortfolioAddressRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_RemovePortfolioAddressRequest.Marshal(b, m, deterministic) -} -func (m *RemovePortfolioAddressRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_RemovePortfolioAddressRequest.Merge(m, src) -} -func (m *RemovePortfolioAddressRequest) XXX_Size() int { - return xxx_messageInfo_RemovePortfolioAddressRequest.Size(m) -} -func (m *RemovePortfolioAddressRequest) XXX_DiscardUnknown() { - xxx_messageInfo_RemovePortfolioAddressRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_RemovePortfolioAddressRequest proto.InternalMessageInfo - -func (m *RemovePortfolioAddressRequest) GetAddress() string { - if m != nil { - return m.Address +func (x *RemovePortfolioAddressRequest) GetAddress() string { + if x != nil { + return x.Address } return "" } -func (m *RemovePortfolioAddressRequest) GetCoinType() string { - if m != nil { - return m.CoinType +func (x *RemovePortfolioAddressRequest) GetCoinType() string { + if x != nil { + return x.CoinType } return "" } -func (m *RemovePortfolioAddressRequest) GetDescription() string { - if m != nil { - return m.Description +func (x *RemovePortfolioAddressRequest) GetDescription() string { + if x != nil { + return x.Description } return "" } type RemovePortfolioAddressResponse struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields } -func (m *RemovePortfolioAddressResponse) Reset() { *m = RemovePortfolioAddressResponse{} } -func (m *RemovePortfolioAddressResponse) String() string { return proto.CompactTextString(m) } -func (*RemovePortfolioAddressResponse) ProtoMessage() {} +func (x *RemovePortfolioAddressResponse) Reset() { + *x = RemovePortfolioAddressResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[53] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RemovePortfolioAddressResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RemovePortfolioAddressResponse) ProtoMessage() {} + +func (x *RemovePortfolioAddressResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[53] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RemovePortfolioAddressResponse.ProtoReflect.Descriptor instead. func (*RemovePortfolioAddressResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{53} + return file_rpc_proto_rawDescGZIP(), []int{53} } -func (m *RemovePortfolioAddressResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_RemovePortfolioAddressResponse.Unmarshal(m, b) -} -func (m *RemovePortfolioAddressResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_RemovePortfolioAddressResponse.Marshal(b, m, deterministic) -} -func (m *RemovePortfolioAddressResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_RemovePortfolioAddressResponse.Merge(m, src) -} -func (m *RemovePortfolioAddressResponse) XXX_Size() int { - return xxx_messageInfo_RemovePortfolioAddressResponse.Size(m) -} -func (m *RemovePortfolioAddressResponse) XXX_DiscardUnknown() { - xxx_messageInfo_RemovePortfolioAddressResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_RemovePortfolioAddressResponse proto.InternalMessageInfo - type GetForexProvidersRequest struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields } -func (m *GetForexProvidersRequest) Reset() { *m = GetForexProvidersRequest{} } -func (m *GetForexProvidersRequest) String() string { return proto.CompactTextString(m) } -func (*GetForexProvidersRequest) ProtoMessage() {} +func (x *GetForexProvidersRequest) Reset() { + *x = GetForexProvidersRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[54] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetForexProvidersRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetForexProvidersRequest) ProtoMessage() {} + +func (x *GetForexProvidersRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[54] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetForexProvidersRequest.ProtoReflect.Descriptor instead. func (*GetForexProvidersRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{54} + return file_rpc_proto_rawDescGZIP(), []int{54} } -func (m *GetForexProvidersRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetForexProvidersRequest.Unmarshal(m, b) -} -func (m *GetForexProvidersRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetForexProvidersRequest.Marshal(b, m, deterministic) -} -func (m *GetForexProvidersRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetForexProvidersRequest.Merge(m, src) -} -func (m *GetForexProvidersRequest) XXX_Size() int { - return xxx_messageInfo_GetForexProvidersRequest.Size(m) -} -func (m *GetForexProvidersRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetForexProvidersRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_GetForexProvidersRequest proto.InternalMessageInfo - type ForexProvider struct { - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Enabled bool `protobuf:"varint,2,opt,name=enabled,proto3" json:"enabled,omitempty"` - Verbose bool `protobuf:"varint,3,opt,name=verbose,proto3" json:"verbose,omitempty"` - RestPollingDelay string `protobuf:"bytes,4,opt,name=rest_polling_delay,json=restPollingDelay,proto3" json:"rest_polling_delay,omitempty"` - ApiKey string `protobuf:"bytes,5,opt,name=api_key,json=apiKey,proto3" json:"api_key,omitempty"` - ApiKeyLevel int64 `protobuf:"varint,6,opt,name=api_key_level,json=apiKeyLevel,proto3" json:"api_key_level,omitempty"` - PrimaryProvider bool `protobuf:"varint,7,opt,name=primary_provider,json=primaryProvider,proto3" json:"primary_provider,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Enabled bool `protobuf:"varint,2,opt,name=enabled,proto3" json:"enabled,omitempty"` + Verbose bool `protobuf:"varint,3,opt,name=verbose,proto3" json:"verbose,omitempty"` + RestPollingDelay string `protobuf:"bytes,4,opt,name=rest_polling_delay,json=restPollingDelay,proto3" json:"rest_polling_delay,omitempty"` + ApiKey string `protobuf:"bytes,5,opt,name=api_key,json=apiKey,proto3" json:"api_key,omitempty"` + ApiKeyLevel int64 `protobuf:"varint,6,opt,name=api_key_level,json=apiKeyLevel,proto3" json:"api_key_level,omitempty"` + PrimaryProvider bool `protobuf:"varint,7,opt,name=primary_provider,json=primaryProvider,proto3" json:"primary_provider,omitempty"` } -func (m *ForexProvider) Reset() { *m = ForexProvider{} } -func (m *ForexProvider) String() string { return proto.CompactTextString(m) } -func (*ForexProvider) ProtoMessage() {} +func (x *ForexProvider) Reset() { + *x = ForexProvider{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[55] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ForexProvider) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ForexProvider) ProtoMessage() {} + +func (x *ForexProvider) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[55] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ForexProvider.ProtoReflect.Descriptor instead. func (*ForexProvider) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{55} + return file_rpc_proto_rawDescGZIP(), []int{55} } -func (m *ForexProvider) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ForexProvider.Unmarshal(m, b) -} -func (m *ForexProvider) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ForexProvider.Marshal(b, m, deterministic) -} -func (m *ForexProvider) XXX_Merge(src proto.Message) { - xxx_messageInfo_ForexProvider.Merge(m, src) -} -func (m *ForexProvider) XXX_Size() int { - return xxx_messageInfo_ForexProvider.Size(m) -} -func (m *ForexProvider) XXX_DiscardUnknown() { - xxx_messageInfo_ForexProvider.DiscardUnknown(m) -} - -var xxx_messageInfo_ForexProvider proto.InternalMessageInfo - -func (m *ForexProvider) GetName() string { - if m != nil { - return m.Name +func (x *ForexProvider) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *ForexProvider) GetEnabled() bool { - if m != nil { - return m.Enabled +func (x *ForexProvider) GetEnabled() bool { + if x != nil { + return x.Enabled } return false } -func (m *ForexProvider) GetVerbose() bool { - if m != nil { - return m.Verbose +func (x *ForexProvider) GetVerbose() bool { + if x != nil { + return x.Verbose } return false } -func (m *ForexProvider) GetRestPollingDelay() string { - if m != nil { - return m.RestPollingDelay +func (x *ForexProvider) GetRestPollingDelay() string { + if x != nil { + return x.RestPollingDelay } return "" } -func (m *ForexProvider) GetApiKey() string { - if m != nil { - return m.ApiKey +func (x *ForexProvider) GetApiKey() string { + if x != nil { + return x.ApiKey } return "" } -func (m *ForexProvider) GetApiKeyLevel() int64 { - if m != nil { - return m.ApiKeyLevel +func (x *ForexProvider) GetApiKeyLevel() int64 { + if x != nil { + return x.ApiKeyLevel } return 0 } -func (m *ForexProvider) GetPrimaryProvider() bool { - if m != nil { - return m.PrimaryProvider +func (x *ForexProvider) GetPrimaryProvider() bool { + if x != nil { + return x.PrimaryProvider } return false } type GetForexProvidersResponse struct { - ForexProviders []*ForexProvider `protobuf:"bytes,1,rep,name=forex_providers,json=forexProviders,proto3" json:"forex_providers,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ForexProviders []*ForexProvider `protobuf:"bytes,1,rep,name=forex_providers,json=forexProviders,proto3" json:"forex_providers,omitempty"` } -func (m *GetForexProvidersResponse) Reset() { *m = GetForexProvidersResponse{} } -func (m *GetForexProvidersResponse) String() string { return proto.CompactTextString(m) } -func (*GetForexProvidersResponse) ProtoMessage() {} +func (x *GetForexProvidersResponse) Reset() { + *x = GetForexProvidersResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[56] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetForexProvidersResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetForexProvidersResponse) ProtoMessage() {} + +func (x *GetForexProvidersResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[56] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetForexProvidersResponse.ProtoReflect.Descriptor instead. func (*GetForexProvidersResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{56} + return file_rpc_proto_rawDescGZIP(), []int{56} } -func (m *GetForexProvidersResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetForexProvidersResponse.Unmarshal(m, b) -} -func (m *GetForexProvidersResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetForexProvidersResponse.Marshal(b, m, deterministic) -} -func (m *GetForexProvidersResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetForexProvidersResponse.Merge(m, src) -} -func (m *GetForexProvidersResponse) XXX_Size() int { - return xxx_messageInfo_GetForexProvidersResponse.Size(m) -} -func (m *GetForexProvidersResponse) XXX_DiscardUnknown() { - xxx_messageInfo_GetForexProvidersResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_GetForexProvidersResponse proto.InternalMessageInfo - -func (m *GetForexProvidersResponse) GetForexProviders() []*ForexProvider { - if m != nil { - return m.ForexProviders +func (x *GetForexProvidersResponse) GetForexProviders() []*ForexProvider { + if x != nil { + return x.ForexProviders } return nil } type GetForexRatesRequest struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields } -func (m *GetForexRatesRequest) Reset() { *m = GetForexRatesRequest{} } -func (m *GetForexRatesRequest) String() string { return proto.CompactTextString(m) } -func (*GetForexRatesRequest) ProtoMessage() {} +func (x *GetForexRatesRequest) Reset() { + *x = GetForexRatesRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[57] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetForexRatesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetForexRatesRequest) ProtoMessage() {} + +func (x *GetForexRatesRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[57] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetForexRatesRequest.ProtoReflect.Descriptor instead. func (*GetForexRatesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{57} + return file_rpc_proto_rawDescGZIP(), []int{57} } -func (m *GetForexRatesRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetForexRatesRequest.Unmarshal(m, b) -} -func (m *GetForexRatesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetForexRatesRequest.Marshal(b, m, deterministic) -} -func (m *GetForexRatesRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetForexRatesRequest.Merge(m, src) -} -func (m *GetForexRatesRequest) XXX_Size() int { - return xxx_messageInfo_GetForexRatesRequest.Size(m) -} -func (m *GetForexRatesRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetForexRatesRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_GetForexRatesRequest proto.InternalMessageInfo - type ForexRatesConversion struct { - From string `protobuf:"bytes,1,opt,name=from,proto3" json:"from,omitempty"` - To string `protobuf:"bytes,2,opt,name=to,proto3" json:"to,omitempty"` - Rate float64 `protobuf:"fixed64,3,opt,name=rate,proto3" json:"rate,omitempty"` - InverseRate float64 `protobuf:"fixed64,4,opt,name=inverse_rate,json=inverseRate,proto3" json:"inverse_rate,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + From string `protobuf:"bytes,1,opt,name=from,proto3" json:"from,omitempty"` + To string `protobuf:"bytes,2,opt,name=to,proto3" json:"to,omitempty"` + Rate float64 `protobuf:"fixed64,3,opt,name=rate,proto3" json:"rate,omitempty"` + InverseRate float64 `protobuf:"fixed64,4,opt,name=inverse_rate,json=inverseRate,proto3" json:"inverse_rate,omitempty"` } -func (m *ForexRatesConversion) Reset() { *m = ForexRatesConversion{} } -func (m *ForexRatesConversion) String() string { return proto.CompactTextString(m) } -func (*ForexRatesConversion) ProtoMessage() {} +func (x *ForexRatesConversion) Reset() { + *x = ForexRatesConversion{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[58] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ForexRatesConversion) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ForexRatesConversion) ProtoMessage() {} + +func (x *ForexRatesConversion) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[58] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ForexRatesConversion.ProtoReflect.Descriptor instead. func (*ForexRatesConversion) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{58} + return file_rpc_proto_rawDescGZIP(), []int{58} } -func (m *ForexRatesConversion) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ForexRatesConversion.Unmarshal(m, b) -} -func (m *ForexRatesConversion) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ForexRatesConversion.Marshal(b, m, deterministic) -} -func (m *ForexRatesConversion) XXX_Merge(src proto.Message) { - xxx_messageInfo_ForexRatesConversion.Merge(m, src) -} -func (m *ForexRatesConversion) XXX_Size() int { - return xxx_messageInfo_ForexRatesConversion.Size(m) -} -func (m *ForexRatesConversion) XXX_DiscardUnknown() { - xxx_messageInfo_ForexRatesConversion.DiscardUnknown(m) -} - -var xxx_messageInfo_ForexRatesConversion proto.InternalMessageInfo - -func (m *ForexRatesConversion) GetFrom() string { - if m != nil { - return m.From +func (x *ForexRatesConversion) GetFrom() string { + if x != nil { + return x.From } return "" } -func (m *ForexRatesConversion) GetTo() string { - if m != nil { - return m.To +func (x *ForexRatesConversion) GetTo() string { + if x != nil { + return x.To } return "" } -func (m *ForexRatesConversion) GetRate() float64 { - if m != nil { - return m.Rate +func (x *ForexRatesConversion) GetRate() float64 { + if x != nil { + return x.Rate } return 0 } -func (m *ForexRatesConversion) GetInverseRate() float64 { - if m != nil { - return m.InverseRate +func (x *ForexRatesConversion) GetInverseRate() float64 { + if x != nil { + return x.InverseRate } return 0 } type GetForexRatesResponse struct { - ForexRates []*ForexRatesConversion `protobuf:"bytes,1,rep,name=forex_rates,json=forexRates,proto3" json:"forex_rates,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ForexRates []*ForexRatesConversion `protobuf:"bytes,1,rep,name=forex_rates,json=forexRates,proto3" json:"forex_rates,omitempty"` } -func (m *GetForexRatesResponse) Reset() { *m = GetForexRatesResponse{} } -func (m *GetForexRatesResponse) String() string { return proto.CompactTextString(m) } -func (*GetForexRatesResponse) ProtoMessage() {} +func (x *GetForexRatesResponse) Reset() { + *x = GetForexRatesResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[59] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetForexRatesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetForexRatesResponse) ProtoMessage() {} + +func (x *GetForexRatesResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[59] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetForexRatesResponse.ProtoReflect.Descriptor instead. func (*GetForexRatesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{59} + return file_rpc_proto_rawDescGZIP(), []int{59} } -func (m *GetForexRatesResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetForexRatesResponse.Unmarshal(m, b) -} -func (m *GetForexRatesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetForexRatesResponse.Marshal(b, m, deterministic) -} -func (m *GetForexRatesResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetForexRatesResponse.Merge(m, src) -} -func (m *GetForexRatesResponse) XXX_Size() int { - return xxx_messageInfo_GetForexRatesResponse.Size(m) -} -func (m *GetForexRatesResponse) XXX_DiscardUnknown() { - xxx_messageInfo_GetForexRatesResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_GetForexRatesResponse proto.InternalMessageInfo - -func (m *GetForexRatesResponse) GetForexRates() []*ForexRatesConversion { - if m != nil { - return m.ForexRates +func (x *GetForexRatesResponse) GetForexRates() []*ForexRatesConversion { + if x != nil { + return x.ForexRates } return nil } type OrderDetails struct { - Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` - Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` - BaseCurrency string `protobuf:"bytes,3,opt,name=base_currency,json=baseCurrency,proto3" json:"base_currency,omitempty"` - QuoteCurrency string `protobuf:"bytes,4,opt,name=quote_currency,json=quoteCurrency,proto3" json:"quote_currency,omitempty"` - AssetType string `protobuf:"bytes,5,opt,name=asset_type,json=assetType,proto3" json:"asset_type,omitempty"` - OrderSide string `protobuf:"bytes,6,opt,name=order_side,json=orderSide,proto3" json:"order_side,omitempty"` - OrderType string `protobuf:"bytes,7,opt,name=order_type,json=orderType,proto3" json:"order_type,omitempty"` - CreationTime int64 `protobuf:"varint,8,opt,name=creation_time,json=creationTime,proto3" json:"creation_time,omitempty"` - Status string `protobuf:"bytes,9,opt,name=status,proto3" json:"status,omitempty"` - Price float64 `protobuf:"fixed64,10,opt,name=price,proto3" json:"price,omitempty"` - Amount float64 `protobuf:"fixed64,11,opt,name=amount,proto3" json:"amount,omitempty"` - OpenVolume float64 `protobuf:"fixed64,12,opt,name=open_volume,json=openVolume,proto3" json:"open_volume,omitempty"` - Fee float64 `protobuf:"fixed64,13,opt,name=fee,proto3" json:"fee,omitempty"` - Trades []*TradeHistory `protobuf:"bytes,14,rep,name=trades,proto3" json:"trades,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` + BaseCurrency string `protobuf:"bytes,3,opt,name=base_currency,json=baseCurrency,proto3" json:"base_currency,omitempty"` + QuoteCurrency string `protobuf:"bytes,4,opt,name=quote_currency,json=quoteCurrency,proto3" json:"quote_currency,omitempty"` + AssetType string `protobuf:"bytes,5,opt,name=asset_type,json=assetType,proto3" json:"asset_type,omitempty"` + OrderSide string `protobuf:"bytes,6,opt,name=order_side,json=orderSide,proto3" json:"order_side,omitempty"` + OrderType string `protobuf:"bytes,7,opt,name=order_type,json=orderType,proto3" json:"order_type,omitempty"` + CreationTime int64 `protobuf:"varint,8,opt,name=creation_time,json=creationTime,proto3" json:"creation_time,omitempty"` + Status string `protobuf:"bytes,9,opt,name=status,proto3" json:"status,omitempty"` + Price float64 `protobuf:"fixed64,10,opt,name=price,proto3" json:"price,omitempty"` + Amount float64 `protobuf:"fixed64,11,opt,name=amount,proto3" json:"amount,omitempty"` + OpenVolume float64 `protobuf:"fixed64,12,opt,name=open_volume,json=openVolume,proto3" json:"open_volume,omitempty"` + Fee float64 `protobuf:"fixed64,13,opt,name=fee,proto3" json:"fee,omitempty"` + Trades []*TradeHistory `protobuf:"bytes,14,rep,name=trades,proto3" json:"trades,omitempty"` } -func (m *OrderDetails) Reset() { *m = OrderDetails{} } -func (m *OrderDetails) String() string { return proto.CompactTextString(m) } -func (*OrderDetails) ProtoMessage() {} +func (x *OrderDetails) Reset() { + *x = OrderDetails{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[60] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OrderDetails) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OrderDetails) ProtoMessage() {} + +func (x *OrderDetails) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[60] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OrderDetails.ProtoReflect.Descriptor instead. func (*OrderDetails) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{60} + return file_rpc_proto_rawDescGZIP(), []int{60} } -func (m *OrderDetails) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_OrderDetails.Unmarshal(m, b) -} -func (m *OrderDetails) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_OrderDetails.Marshal(b, m, deterministic) -} -func (m *OrderDetails) XXX_Merge(src proto.Message) { - xxx_messageInfo_OrderDetails.Merge(m, src) -} -func (m *OrderDetails) XXX_Size() int { - return xxx_messageInfo_OrderDetails.Size(m) -} -func (m *OrderDetails) XXX_DiscardUnknown() { - xxx_messageInfo_OrderDetails.DiscardUnknown(m) -} - -var xxx_messageInfo_OrderDetails proto.InternalMessageInfo - -func (m *OrderDetails) GetExchange() string { - if m != nil { - return m.Exchange +func (x *OrderDetails) GetExchange() string { + if x != nil { + return x.Exchange } return "" } -func (m *OrderDetails) GetId() string { - if m != nil { - return m.Id +func (x *OrderDetails) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *OrderDetails) GetBaseCurrency() string { - if m != nil { - return m.BaseCurrency +func (x *OrderDetails) GetBaseCurrency() string { + if x != nil { + return x.BaseCurrency } return "" } -func (m *OrderDetails) GetQuoteCurrency() string { - if m != nil { - return m.QuoteCurrency +func (x *OrderDetails) GetQuoteCurrency() string { + if x != nil { + return x.QuoteCurrency } return "" } -func (m *OrderDetails) GetAssetType() string { - if m != nil { - return m.AssetType +func (x *OrderDetails) GetAssetType() string { + if x != nil { + return x.AssetType } return "" } -func (m *OrderDetails) GetOrderSide() string { - if m != nil { - return m.OrderSide +func (x *OrderDetails) GetOrderSide() string { + if x != nil { + return x.OrderSide } return "" } -func (m *OrderDetails) GetOrderType() string { - if m != nil { - return m.OrderType +func (x *OrderDetails) GetOrderType() string { + if x != nil { + return x.OrderType } return "" } -func (m *OrderDetails) GetCreationTime() int64 { - if m != nil { - return m.CreationTime +func (x *OrderDetails) GetCreationTime() int64 { + if x != nil { + return x.CreationTime } return 0 } -func (m *OrderDetails) GetStatus() string { - if m != nil { - return m.Status +func (x *OrderDetails) GetStatus() string { + if x != nil { + return x.Status } return "" } -func (m *OrderDetails) GetPrice() float64 { - if m != nil { - return m.Price +func (x *OrderDetails) GetPrice() float64 { + if x != nil { + return x.Price } return 0 } -func (m *OrderDetails) GetAmount() float64 { - if m != nil { - return m.Amount +func (x *OrderDetails) GetAmount() float64 { + if x != nil { + return x.Amount } return 0 } -func (m *OrderDetails) GetOpenVolume() float64 { - if m != nil { - return m.OpenVolume +func (x *OrderDetails) GetOpenVolume() float64 { + if x != nil { + return x.OpenVolume } return 0 } -func (m *OrderDetails) GetFee() float64 { - if m != nil { - return m.Fee +func (x *OrderDetails) GetFee() float64 { + if x != nil { + return x.Fee } return 0 } -func (m *OrderDetails) GetTrades() []*TradeHistory { - if m != nil { - return m.Trades +func (x *OrderDetails) GetTrades() []*TradeHistory { + if x != nil { + return x.Trades } return nil } type TradeHistory struct { - CreationTime int64 `protobuf:"varint,1,opt,name=creation_time,json=creationTime,proto3" json:"creation_time,omitempty"` - Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` - Price float64 `protobuf:"fixed64,3,opt,name=price,proto3" json:"price,omitempty"` - Amount float64 `protobuf:"fixed64,4,opt,name=amount,proto3" json:"amount,omitempty"` - Exchange string `protobuf:"bytes,5,opt,name=exchange,proto3" json:"exchange,omitempty"` - AssetType string `protobuf:"bytes,6,opt,name=asset_type,json=assetType,proto3" json:"asset_type,omitempty"` - OrderSide string `protobuf:"bytes,7,opt,name=order_side,json=orderSide,proto3" json:"order_side,omitempty"` - Fee float64 `protobuf:"fixed64,8,opt,name=fee,proto3" json:"fee,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + CreationTime int64 `protobuf:"varint,1,opt,name=creation_time,json=creationTime,proto3" json:"creation_time,omitempty"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` + Price float64 `protobuf:"fixed64,3,opt,name=price,proto3" json:"price,omitempty"` + Amount float64 `protobuf:"fixed64,4,opt,name=amount,proto3" json:"amount,omitempty"` + Exchange string `protobuf:"bytes,5,opt,name=exchange,proto3" json:"exchange,omitempty"` + AssetType string `protobuf:"bytes,6,opt,name=asset_type,json=assetType,proto3" json:"asset_type,omitempty"` + OrderSide string `protobuf:"bytes,7,opt,name=order_side,json=orderSide,proto3" json:"order_side,omitempty"` + Fee float64 `protobuf:"fixed64,8,opt,name=fee,proto3" json:"fee,omitempty"` } -func (m *TradeHistory) Reset() { *m = TradeHistory{} } -func (m *TradeHistory) String() string { return proto.CompactTextString(m) } -func (*TradeHistory) ProtoMessage() {} +func (x *TradeHistory) Reset() { + *x = TradeHistory{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[61] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TradeHistory) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TradeHistory) ProtoMessage() {} + +func (x *TradeHistory) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[61] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TradeHistory.ProtoReflect.Descriptor instead. func (*TradeHistory) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{61} + return file_rpc_proto_rawDescGZIP(), []int{61} } -func (m *TradeHistory) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_TradeHistory.Unmarshal(m, b) -} -func (m *TradeHistory) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_TradeHistory.Marshal(b, m, deterministic) -} -func (m *TradeHistory) XXX_Merge(src proto.Message) { - xxx_messageInfo_TradeHistory.Merge(m, src) -} -func (m *TradeHistory) XXX_Size() int { - return xxx_messageInfo_TradeHistory.Size(m) -} -func (m *TradeHistory) XXX_DiscardUnknown() { - xxx_messageInfo_TradeHistory.DiscardUnknown(m) -} - -var xxx_messageInfo_TradeHistory proto.InternalMessageInfo - -func (m *TradeHistory) GetCreationTime() int64 { - if m != nil { - return m.CreationTime +func (x *TradeHistory) GetCreationTime() int64 { + if x != nil { + return x.CreationTime } return 0 } -func (m *TradeHistory) GetId() string { - if m != nil { - return m.Id +func (x *TradeHistory) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *TradeHistory) GetPrice() float64 { - if m != nil { - return m.Price +func (x *TradeHistory) GetPrice() float64 { + if x != nil { + return x.Price } return 0 } -func (m *TradeHistory) GetAmount() float64 { - if m != nil { - return m.Amount +func (x *TradeHistory) GetAmount() float64 { + if x != nil { + return x.Amount } return 0 } -func (m *TradeHistory) GetExchange() string { - if m != nil { - return m.Exchange +func (x *TradeHistory) GetExchange() string { + if x != nil { + return x.Exchange } return "" } -func (m *TradeHistory) GetAssetType() string { - if m != nil { - return m.AssetType +func (x *TradeHistory) GetAssetType() string { + if x != nil { + return x.AssetType } return "" } -func (m *TradeHistory) GetOrderSide() string { - if m != nil { - return m.OrderSide +func (x *TradeHistory) GetOrderSide() string { + if x != nil { + return x.OrderSide } return "" } -func (m *TradeHistory) GetFee() float64 { - if m != nil { - return m.Fee +func (x *TradeHistory) GetFee() float64 { + if x != nil { + return x.Fee } return 0 } type GetOrdersRequest struct { - Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` - AssetType string `protobuf:"bytes,2,opt,name=asset_type,json=assetType,proto3" json:"asset_type,omitempty"` - Pair *CurrencyPair `protobuf:"bytes,3,opt,name=pair,proto3" json:"pair,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` + AssetType string `protobuf:"bytes,2,opt,name=asset_type,json=assetType,proto3" json:"asset_type,omitempty"` + Pair *CurrencyPair `protobuf:"bytes,3,opt,name=pair,proto3" json:"pair,omitempty"` } -func (m *GetOrdersRequest) Reset() { *m = GetOrdersRequest{} } -func (m *GetOrdersRequest) String() string { return proto.CompactTextString(m) } -func (*GetOrdersRequest) ProtoMessage() {} +func (x *GetOrdersRequest) Reset() { + *x = GetOrdersRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[62] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetOrdersRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetOrdersRequest) ProtoMessage() {} + +func (x *GetOrdersRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[62] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetOrdersRequest.ProtoReflect.Descriptor instead. func (*GetOrdersRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{62} + return file_rpc_proto_rawDescGZIP(), []int{62} } -func (m *GetOrdersRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetOrdersRequest.Unmarshal(m, b) -} -func (m *GetOrdersRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetOrdersRequest.Marshal(b, m, deterministic) -} -func (m *GetOrdersRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetOrdersRequest.Merge(m, src) -} -func (m *GetOrdersRequest) XXX_Size() int { - return xxx_messageInfo_GetOrdersRequest.Size(m) -} -func (m *GetOrdersRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetOrdersRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_GetOrdersRequest proto.InternalMessageInfo - -func (m *GetOrdersRequest) GetExchange() string { - if m != nil { - return m.Exchange +func (x *GetOrdersRequest) GetExchange() string { + if x != nil { + return x.Exchange } return "" } -func (m *GetOrdersRequest) GetAssetType() string { - if m != nil { - return m.AssetType +func (x *GetOrdersRequest) GetAssetType() string { + if x != nil { + return x.AssetType } return "" } -func (m *GetOrdersRequest) GetPair() *CurrencyPair { - if m != nil { - return m.Pair +func (x *GetOrdersRequest) GetPair() *CurrencyPair { + if x != nil { + return x.Pair } return nil } type GetOrdersResponse struct { - Orders []*OrderDetails `protobuf:"bytes,1,rep,name=orders,proto3" json:"orders,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Orders []*OrderDetails `protobuf:"bytes,1,rep,name=orders,proto3" json:"orders,omitempty"` } -func (m *GetOrdersResponse) Reset() { *m = GetOrdersResponse{} } -func (m *GetOrdersResponse) String() string { return proto.CompactTextString(m) } -func (*GetOrdersResponse) ProtoMessage() {} +func (x *GetOrdersResponse) Reset() { + *x = GetOrdersResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[63] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetOrdersResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetOrdersResponse) ProtoMessage() {} + +func (x *GetOrdersResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[63] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetOrdersResponse.ProtoReflect.Descriptor instead. func (*GetOrdersResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{63} + return file_rpc_proto_rawDescGZIP(), []int{63} } -func (m *GetOrdersResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetOrdersResponse.Unmarshal(m, b) -} -func (m *GetOrdersResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetOrdersResponse.Marshal(b, m, deterministic) -} -func (m *GetOrdersResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetOrdersResponse.Merge(m, src) -} -func (m *GetOrdersResponse) XXX_Size() int { - return xxx_messageInfo_GetOrdersResponse.Size(m) -} -func (m *GetOrdersResponse) XXX_DiscardUnknown() { - xxx_messageInfo_GetOrdersResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_GetOrdersResponse proto.InternalMessageInfo - -func (m *GetOrdersResponse) GetOrders() []*OrderDetails { - if m != nil { - return m.Orders +func (x *GetOrdersResponse) GetOrders() []*OrderDetails { + if x != nil { + return x.Orders } return nil } type GetOrderRequest struct { - Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` - OrderId string `protobuf:"bytes,2,opt,name=order_id,json=orderId,proto3" json:"order_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` + OrderId string `protobuf:"bytes,2,opt,name=order_id,json=orderId,proto3" json:"order_id,omitempty"` } -func (m *GetOrderRequest) Reset() { *m = GetOrderRequest{} } -func (m *GetOrderRequest) String() string { return proto.CompactTextString(m) } -func (*GetOrderRequest) ProtoMessage() {} +func (x *GetOrderRequest) Reset() { + *x = GetOrderRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[64] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetOrderRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetOrderRequest) ProtoMessage() {} + +func (x *GetOrderRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[64] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetOrderRequest.ProtoReflect.Descriptor instead. func (*GetOrderRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{64} + return file_rpc_proto_rawDescGZIP(), []int{64} } -func (m *GetOrderRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetOrderRequest.Unmarshal(m, b) -} -func (m *GetOrderRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetOrderRequest.Marshal(b, m, deterministic) -} -func (m *GetOrderRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetOrderRequest.Merge(m, src) -} -func (m *GetOrderRequest) XXX_Size() int { - return xxx_messageInfo_GetOrderRequest.Size(m) -} -func (m *GetOrderRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetOrderRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_GetOrderRequest proto.InternalMessageInfo - -func (m *GetOrderRequest) GetExchange() string { - if m != nil { - return m.Exchange +func (x *GetOrderRequest) GetExchange() string { + if x != nil { + return x.Exchange } return "" } -func (m *GetOrderRequest) GetOrderId() string { - if m != nil { - return m.OrderId +func (x *GetOrderRequest) GetOrderId() string { + if x != nil { + return x.OrderId } return "" } type SubmitOrderRequest struct { - Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` - Pair *CurrencyPair `protobuf:"bytes,2,opt,name=pair,proto3" json:"pair,omitempty"` - Side string `protobuf:"bytes,3,opt,name=side,proto3" json:"side,omitempty"` - OrderType string `protobuf:"bytes,4,opt,name=order_type,json=orderType,proto3" json:"order_type,omitempty"` - Amount float64 `protobuf:"fixed64,5,opt,name=amount,proto3" json:"amount,omitempty"` - Price float64 `protobuf:"fixed64,6,opt,name=price,proto3" json:"price,omitempty"` - ClientId string `protobuf:"bytes,7,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` + Pair *CurrencyPair `protobuf:"bytes,2,opt,name=pair,proto3" json:"pair,omitempty"` + Side string `protobuf:"bytes,3,opt,name=side,proto3" json:"side,omitempty"` + OrderType string `protobuf:"bytes,4,opt,name=order_type,json=orderType,proto3" json:"order_type,omitempty"` + Amount float64 `protobuf:"fixed64,5,opt,name=amount,proto3" json:"amount,omitempty"` + Price float64 `protobuf:"fixed64,6,opt,name=price,proto3" json:"price,omitempty"` + ClientId string `protobuf:"bytes,7,opt,name=client_id,json=clientId,proto3" json:"client_id,omitempty"` } -func (m *SubmitOrderRequest) Reset() { *m = SubmitOrderRequest{} } -func (m *SubmitOrderRequest) String() string { return proto.CompactTextString(m) } -func (*SubmitOrderRequest) ProtoMessage() {} +func (x *SubmitOrderRequest) Reset() { + *x = SubmitOrderRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[65] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SubmitOrderRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SubmitOrderRequest) ProtoMessage() {} + +func (x *SubmitOrderRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[65] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SubmitOrderRequest.ProtoReflect.Descriptor instead. func (*SubmitOrderRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{65} + return file_rpc_proto_rawDescGZIP(), []int{65} } -func (m *SubmitOrderRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SubmitOrderRequest.Unmarshal(m, b) -} -func (m *SubmitOrderRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SubmitOrderRequest.Marshal(b, m, deterministic) -} -func (m *SubmitOrderRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_SubmitOrderRequest.Merge(m, src) -} -func (m *SubmitOrderRequest) XXX_Size() int { - return xxx_messageInfo_SubmitOrderRequest.Size(m) -} -func (m *SubmitOrderRequest) XXX_DiscardUnknown() { - xxx_messageInfo_SubmitOrderRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_SubmitOrderRequest proto.InternalMessageInfo - -func (m *SubmitOrderRequest) GetExchange() string { - if m != nil { - return m.Exchange +func (x *SubmitOrderRequest) GetExchange() string { + if x != nil { + return x.Exchange } return "" } -func (m *SubmitOrderRequest) GetPair() *CurrencyPair { - if m != nil { - return m.Pair +func (x *SubmitOrderRequest) GetPair() *CurrencyPair { + if x != nil { + return x.Pair } return nil } -func (m *SubmitOrderRequest) GetSide() string { - if m != nil { - return m.Side +func (x *SubmitOrderRequest) GetSide() string { + if x != nil { + return x.Side } return "" } -func (m *SubmitOrderRequest) GetOrderType() string { - if m != nil { - return m.OrderType +func (x *SubmitOrderRequest) GetOrderType() string { + if x != nil { + return x.OrderType } return "" } -func (m *SubmitOrderRequest) GetAmount() float64 { - if m != nil { - return m.Amount +func (x *SubmitOrderRequest) GetAmount() float64 { + if x != nil { + return x.Amount } return 0 } -func (m *SubmitOrderRequest) GetPrice() float64 { - if m != nil { - return m.Price +func (x *SubmitOrderRequest) GetPrice() float64 { + if x != nil { + return x.Price } return 0 } -func (m *SubmitOrderRequest) GetClientId() string { - if m != nil { - return m.ClientId +func (x *SubmitOrderRequest) GetClientId() string { + if x != nil { + return x.ClientId } return "" } type SubmitOrderResponse struct { - OrderPlaced bool `protobuf:"varint,1,opt,name=order_placed,json=orderPlaced,proto3" json:"order_placed,omitempty"` - OrderId string `protobuf:"bytes,2,opt,name=order_id,json=orderId,proto3" json:"order_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + OrderPlaced bool `protobuf:"varint,1,opt,name=order_placed,json=orderPlaced,proto3" json:"order_placed,omitempty"` + OrderId string `protobuf:"bytes,2,opt,name=order_id,json=orderId,proto3" json:"order_id,omitempty"` } -func (m *SubmitOrderResponse) Reset() { *m = SubmitOrderResponse{} } -func (m *SubmitOrderResponse) String() string { return proto.CompactTextString(m) } -func (*SubmitOrderResponse) ProtoMessage() {} +func (x *SubmitOrderResponse) Reset() { + *x = SubmitOrderResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[66] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SubmitOrderResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SubmitOrderResponse) ProtoMessage() {} + +func (x *SubmitOrderResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[66] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SubmitOrderResponse.ProtoReflect.Descriptor instead. func (*SubmitOrderResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{66} + return file_rpc_proto_rawDescGZIP(), []int{66} } -func (m *SubmitOrderResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SubmitOrderResponse.Unmarshal(m, b) -} -func (m *SubmitOrderResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SubmitOrderResponse.Marshal(b, m, deterministic) -} -func (m *SubmitOrderResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_SubmitOrderResponse.Merge(m, src) -} -func (m *SubmitOrderResponse) XXX_Size() int { - return xxx_messageInfo_SubmitOrderResponse.Size(m) -} -func (m *SubmitOrderResponse) XXX_DiscardUnknown() { - xxx_messageInfo_SubmitOrderResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_SubmitOrderResponse proto.InternalMessageInfo - -func (m *SubmitOrderResponse) GetOrderPlaced() bool { - if m != nil { - return m.OrderPlaced +func (x *SubmitOrderResponse) GetOrderPlaced() bool { + if x != nil { + return x.OrderPlaced } return false } -func (m *SubmitOrderResponse) GetOrderId() string { - if m != nil { - return m.OrderId +func (x *SubmitOrderResponse) GetOrderId() string { + if x != nil { + return x.OrderId } return "" } type SimulateOrderRequest struct { - Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` - Pair *CurrencyPair `protobuf:"bytes,2,opt,name=pair,proto3" json:"pair,omitempty"` - Amount float64 `protobuf:"fixed64,3,opt,name=amount,proto3" json:"amount,omitempty"` - Side string `protobuf:"bytes,4,opt,name=side,proto3" json:"side,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` + Pair *CurrencyPair `protobuf:"bytes,2,opt,name=pair,proto3" json:"pair,omitempty"` + Amount float64 `protobuf:"fixed64,3,opt,name=amount,proto3" json:"amount,omitempty"` + Side string `protobuf:"bytes,4,opt,name=side,proto3" json:"side,omitempty"` } -func (m *SimulateOrderRequest) Reset() { *m = SimulateOrderRequest{} } -func (m *SimulateOrderRequest) String() string { return proto.CompactTextString(m) } -func (*SimulateOrderRequest) ProtoMessage() {} +func (x *SimulateOrderRequest) Reset() { + *x = SimulateOrderRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[67] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SimulateOrderRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SimulateOrderRequest) ProtoMessage() {} + +func (x *SimulateOrderRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[67] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SimulateOrderRequest.ProtoReflect.Descriptor instead. func (*SimulateOrderRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{67} + return file_rpc_proto_rawDescGZIP(), []int{67} } -func (m *SimulateOrderRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SimulateOrderRequest.Unmarshal(m, b) -} -func (m *SimulateOrderRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SimulateOrderRequest.Marshal(b, m, deterministic) -} -func (m *SimulateOrderRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_SimulateOrderRequest.Merge(m, src) -} -func (m *SimulateOrderRequest) XXX_Size() int { - return xxx_messageInfo_SimulateOrderRequest.Size(m) -} -func (m *SimulateOrderRequest) XXX_DiscardUnknown() { - xxx_messageInfo_SimulateOrderRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_SimulateOrderRequest proto.InternalMessageInfo - -func (m *SimulateOrderRequest) GetExchange() string { - if m != nil { - return m.Exchange +func (x *SimulateOrderRequest) GetExchange() string { + if x != nil { + return x.Exchange } return "" } -func (m *SimulateOrderRequest) GetPair() *CurrencyPair { - if m != nil { - return m.Pair +func (x *SimulateOrderRequest) GetPair() *CurrencyPair { + if x != nil { + return x.Pair } return nil } -func (m *SimulateOrderRequest) GetAmount() float64 { - if m != nil { - return m.Amount +func (x *SimulateOrderRequest) GetAmount() float64 { + if x != nil { + return x.Amount } return 0 } -func (m *SimulateOrderRequest) GetSide() string { - if m != nil { - return m.Side +func (x *SimulateOrderRequest) GetSide() string { + if x != nil { + return x.Side } return "" } type SimulateOrderResponse struct { - Orders []*OrderbookItem `protobuf:"bytes,1,rep,name=orders,proto3" json:"orders,omitempty"` - Amount float64 `protobuf:"fixed64,2,opt,name=amount,proto3" json:"amount,omitempty"` - MinimumPrice float64 `protobuf:"fixed64,3,opt,name=minimum_price,json=minimumPrice,proto3" json:"minimum_price,omitempty"` - MaximumPrice float64 `protobuf:"fixed64,4,opt,name=maximum_price,json=maximumPrice,proto3" json:"maximum_price,omitempty"` - PercentageGainLoss float64 `protobuf:"fixed64,5,opt,name=percentage_gain_loss,json=percentageGainLoss,proto3" json:"percentage_gain_loss,omitempty"` - Status string `protobuf:"bytes,6,opt,name=status,proto3" json:"status,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Orders []*OrderbookItem `protobuf:"bytes,1,rep,name=orders,proto3" json:"orders,omitempty"` + Amount float64 `protobuf:"fixed64,2,opt,name=amount,proto3" json:"amount,omitempty"` + MinimumPrice float64 `protobuf:"fixed64,3,opt,name=minimum_price,json=minimumPrice,proto3" json:"minimum_price,omitempty"` + MaximumPrice float64 `protobuf:"fixed64,4,opt,name=maximum_price,json=maximumPrice,proto3" json:"maximum_price,omitempty"` + PercentageGainLoss float64 `protobuf:"fixed64,5,opt,name=percentage_gain_loss,json=percentageGainLoss,proto3" json:"percentage_gain_loss,omitempty"` + Status string `protobuf:"bytes,6,opt,name=status,proto3" json:"status,omitempty"` } -func (m *SimulateOrderResponse) Reset() { *m = SimulateOrderResponse{} } -func (m *SimulateOrderResponse) String() string { return proto.CompactTextString(m) } -func (*SimulateOrderResponse) ProtoMessage() {} +func (x *SimulateOrderResponse) Reset() { + *x = SimulateOrderResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[68] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SimulateOrderResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SimulateOrderResponse) ProtoMessage() {} + +func (x *SimulateOrderResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[68] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SimulateOrderResponse.ProtoReflect.Descriptor instead. func (*SimulateOrderResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{68} + return file_rpc_proto_rawDescGZIP(), []int{68} } -func (m *SimulateOrderResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SimulateOrderResponse.Unmarshal(m, b) -} -func (m *SimulateOrderResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SimulateOrderResponse.Marshal(b, m, deterministic) -} -func (m *SimulateOrderResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_SimulateOrderResponse.Merge(m, src) -} -func (m *SimulateOrderResponse) XXX_Size() int { - return xxx_messageInfo_SimulateOrderResponse.Size(m) -} -func (m *SimulateOrderResponse) XXX_DiscardUnknown() { - xxx_messageInfo_SimulateOrderResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_SimulateOrderResponse proto.InternalMessageInfo - -func (m *SimulateOrderResponse) GetOrders() []*OrderbookItem { - if m != nil { - return m.Orders +func (x *SimulateOrderResponse) GetOrders() []*OrderbookItem { + if x != nil { + return x.Orders } return nil } -func (m *SimulateOrderResponse) GetAmount() float64 { - if m != nil { - return m.Amount +func (x *SimulateOrderResponse) GetAmount() float64 { + if x != nil { + return x.Amount } return 0 } -func (m *SimulateOrderResponse) GetMinimumPrice() float64 { - if m != nil { - return m.MinimumPrice +func (x *SimulateOrderResponse) GetMinimumPrice() float64 { + if x != nil { + return x.MinimumPrice } return 0 } -func (m *SimulateOrderResponse) GetMaximumPrice() float64 { - if m != nil { - return m.MaximumPrice +func (x *SimulateOrderResponse) GetMaximumPrice() float64 { + if x != nil { + return x.MaximumPrice } return 0 } -func (m *SimulateOrderResponse) GetPercentageGainLoss() float64 { - if m != nil { - return m.PercentageGainLoss +func (x *SimulateOrderResponse) GetPercentageGainLoss() float64 { + if x != nil { + return x.PercentageGainLoss } return 0 } -func (m *SimulateOrderResponse) GetStatus() string { - if m != nil { - return m.Status +func (x *SimulateOrderResponse) GetStatus() string { + if x != nil { + return x.Status } return "" } type WhaleBombRequest struct { - Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` - Pair *CurrencyPair `protobuf:"bytes,2,opt,name=pair,proto3" json:"pair,omitempty"` - PriceTarget float64 `protobuf:"fixed64,3,opt,name=price_target,json=priceTarget,proto3" json:"price_target,omitempty"` - Side string `protobuf:"bytes,4,opt,name=side,proto3" json:"side,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` + Pair *CurrencyPair `protobuf:"bytes,2,opt,name=pair,proto3" json:"pair,omitempty"` + PriceTarget float64 `protobuf:"fixed64,3,opt,name=price_target,json=priceTarget,proto3" json:"price_target,omitempty"` + Side string `protobuf:"bytes,4,opt,name=side,proto3" json:"side,omitempty"` } -func (m *WhaleBombRequest) Reset() { *m = WhaleBombRequest{} } -func (m *WhaleBombRequest) String() string { return proto.CompactTextString(m) } -func (*WhaleBombRequest) ProtoMessage() {} +func (x *WhaleBombRequest) Reset() { + *x = WhaleBombRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[69] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *WhaleBombRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WhaleBombRequest) ProtoMessage() {} + +func (x *WhaleBombRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[69] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WhaleBombRequest.ProtoReflect.Descriptor instead. func (*WhaleBombRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{69} + return file_rpc_proto_rawDescGZIP(), []int{69} } -func (m *WhaleBombRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_WhaleBombRequest.Unmarshal(m, b) -} -func (m *WhaleBombRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_WhaleBombRequest.Marshal(b, m, deterministic) -} -func (m *WhaleBombRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_WhaleBombRequest.Merge(m, src) -} -func (m *WhaleBombRequest) XXX_Size() int { - return xxx_messageInfo_WhaleBombRequest.Size(m) -} -func (m *WhaleBombRequest) XXX_DiscardUnknown() { - xxx_messageInfo_WhaleBombRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_WhaleBombRequest proto.InternalMessageInfo - -func (m *WhaleBombRequest) GetExchange() string { - if m != nil { - return m.Exchange +func (x *WhaleBombRequest) GetExchange() string { + if x != nil { + return x.Exchange } return "" } -func (m *WhaleBombRequest) GetPair() *CurrencyPair { - if m != nil { - return m.Pair +func (x *WhaleBombRequest) GetPair() *CurrencyPair { + if x != nil { + return x.Pair } return nil } -func (m *WhaleBombRequest) GetPriceTarget() float64 { - if m != nil { - return m.PriceTarget +func (x *WhaleBombRequest) GetPriceTarget() float64 { + if x != nil { + return x.PriceTarget } return 0 } -func (m *WhaleBombRequest) GetSide() string { - if m != nil { - return m.Side +func (x *WhaleBombRequest) GetSide() string { + if x != nil { + return x.Side } return "" } type CancelOrderRequest struct { - Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` - AccountId string `protobuf:"bytes,2,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"` - OrderId string `protobuf:"bytes,3,opt,name=order_id,json=orderId,proto3" json:"order_id,omitempty"` - Pair *CurrencyPair `protobuf:"bytes,4,opt,name=pair,proto3" json:"pair,omitempty"` - AssetType string `protobuf:"bytes,5,opt,name=asset_type,json=assetType,proto3" json:"asset_type,omitempty"` - WalletAddress string `protobuf:"bytes,6,opt,name=wallet_address,json=walletAddress,proto3" json:"wallet_address,omitempty"` - Side string `protobuf:"bytes,7,opt,name=side,proto3" json:"side,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` + AccountId string `protobuf:"bytes,2,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"` + OrderId string `protobuf:"bytes,3,opt,name=order_id,json=orderId,proto3" json:"order_id,omitempty"` + Pair *CurrencyPair `protobuf:"bytes,4,opt,name=pair,proto3" json:"pair,omitempty"` + AssetType string `protobuf:"bytes,5,opt,name=asset_type,json=assetType,proto3" json:"asset_type,omitempty"` + WalletAddress string `protobuf:"bytes,6,opt,name=wallet_address,json=walletAddress,proto3" json:"wallet_address,omitempty"` + Side string `protobuf:"bytes,7,opt,name=side,proto3" json:"side,omitempty"` } -func (m *CancelOrderRequest) Reset() { *m = CancelOrderRequest{} } -func (m *CancelOrderRequest) String() string { return proto.CompactTextString(m) } -func (*CancelOrderRequest) ProtoMessage() {} +func (x *CancelOrderRequest) Reset() { + *x = CancelOrderRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[70] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CancelOrderRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CancelOrderRequest) ProtoMessage() {} + +func (x *CancelOrderRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[70] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CancelOrderRequest.ProtoReflect.Descriptor instead. func (*CancelOrderRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{70} + return file_rpc_proto_rawDescGZIP(), []int{70} } -func (m *CancelOrderRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CancelOrderRequest.Unmarshal(m, b) -} -func (m *CancelOrderRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CancelOrderRequest.Marshal(b, m, deterministic) -} -func (m *CancelOrderRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_CancelOrderRequest.Merge(m, src) -} -func (m *CancelOrderRequest) XXX_Size() int { - return xxx_messageInfo_CancelOrderRequest.Size(m) -} -func (m *CancelOrderRequest) XXX_DiscardUnknown() { - xxx_messageInfo_CancelOrderRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_CancelOrderRequest proto.InternalMessageInfo - -func (m *CancelOrderRequest) GetExchange() string { - if m != nil { - return m.Exchange +func (x *CancelOrderRequest) GetExchange() string { + if x != nil { + return x.Exchange } return "" } -func (m *CancelOrderRequest) GetAccountId() string { - if m != nil { - return m.AccountId +func (x *CancelOrderRequest) GetAccountId() string { + if x != nil { + return x.AccountId } return "" } -func (m *CancelOrderRequest) GetOrderId() string { - if m != nil { - return m.OrderId +func (x *CancelOrderRequest) GetOrderId() string { + if x != nil { + return x.OrderId } return "" } -func (m *CancelOrderRequest) GetPair() *CurrencyPair { - if m != nil { - return m.Pair +func (x *CancelOrderRequest) GetPair() *CurrencyPair { + if x != nil { + return x.Pair } return nil } -func (m *CancelOrderRequest) GetAssetType() string { - if m != nil { - return m.AssetType +func (x *CancelOrderRequest) GetAssetType() string { + if x != nil { + return x.AssetType } return "" } -func (m *CancelOrderRequest) GetWalletAddress() string { - if m != nil { - return m.WalletAddress +func (x *CancelOrderRequest) GetWalletAddress() string { + if x != nil { + return x.WalletAddress } return "" } -func (m *CancelOrderRequest) GetSide() string { - if m != nil { - return m.Side +func (x *CancelOrderRequest) GetSide() string { + if x != nil { + return x.Side } return "" } type CancelOrderResponse struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields } -func (m *CancelOrderResponse) Reset() { *m = CancelOrderResponse{} } -func (m *CancelOrderResponse) String() string { return proto.CompactTextString(m) } -func (*CancelOrderResponse) ProtoMessage() {} +func (x *CancelOrderResponse) Reset() { + *x = CancelOrderResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[71] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CancelOrderResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CancelOrderResponse) ProtoMessage() {} + +func (x *CancelOrderResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[71] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CancelOrderResponse.ProtoReflect.Descriptor instead. func (*CancelOrderResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{71} + return file_rpc_proto_rawDescGZIP(), []int{71} } -func (m *CancelOrderResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CancelOrderResponse.Unmarshal(m, b) -} -func (m *CancelOrderResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CancelOrderResponse.Marshal(b, m, deterministic) -} -func (m *CancelOrderResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_CancelOrderResponse.Merge(m, src) -} -func (m *CancelOrderResponse) XXX_Size() int { - return xxx_messageInfo_CancelOrderResponse.Size(m) -} -func (m *CancelOrderResponse) XXX_DiscardUnknown() { - xxx_messageInfo_CancelOrderResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_CancelOrderResponse proto.InternalMessageInfo - type CancelAllOrdersRequest struct { - Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` } -func (m *CancelAllOrdersRequest) Reset() { *m = CancelAllOrdersRequest{} } -func (m *CancelAllOrdersRequest) String() string { return proto.CompactTextString(m) } -func (*CancelAllOrdersRequest) ProtoMessage() {} +func (x *CancelAllOrdersRequest) Reset() { + *x = CancelAllOrdersRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[72] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CancelAllOrdersRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CancelAllOrdersRequest) ProtoMessage() {} + +func (x *CancelAllOrdersRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[72] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CancelAllOrdersRequest.ProtoReflect.Descriptor instead. func (*CancelAllOrdersRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{72} + return file_rpc_proto_rawDescGZIP(), []int{72} } -func (m *CancelAllOrdersRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CancelAllOrdersRequest.Unmarshal(m, b) -} -func (m *CancelAllOrdersRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CancelAllOrdersRequest.Marshal(b, m, deterministic) -} -func (m *CancelAllOrdersRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_CancelAllOrdersRequest.Merge(m, src) -} -func (m *CancelAllOrdersRequest) XXX_Size() int { - return xxx_messageInfo_CancelAllOrdersRequest.Size(m) -} -func (m *CancelAllOrdersRequest) XXX_DiscardUnknown() { - xxx_messageInfo_CancelAllOrdersRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_CancelAllOrdersRequest proto.InternalMessageInfo - -func (m *CancelAllOrdersRequest) GetExchange() string { - if m != nil { - return m.Exchange +func (x *CancelAllOrdersRequest) GetExchange() string { + if x != nil { + return x.Exchange } return "" } type CancelAllOrdersResponse struct { - Orders []*CancelAllOrdersResponse_Orders `protobuf:"bytes,1,rep,name=orders,proto3" json:"orders,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Orders []*CancelAllOrdersResponse_Orders `protobuf:"bytes,1,rep,name=orders,proto3" json:"orders,omitempty"` } -func (m *CancelAllOrdersResponse) Reset() { *m = CancelAllOrdersResponse{} } -func (m *CancelAllOrdersResponse) String() string { return proto.CompactTextString(m) } -func (*CancelAllOrdersResponse) ProtoMessage() {} +func (x *CancelAllOrdersResponse) Reset() { + *x = CancelAllOrdersResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[73] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CancelAllOrdersResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CancelAllOrdersResponse) ProtoMessage() {} + +func (x *CancelAllOrdersResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[73] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CancelAllOrdersResponse.ProtoReflect.Descriptor instead. func (*CancelAllOrdersResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{73} + return file_rpc_proto_rawDescGZIP(), []int{73} } -func (m *CancelAllOrdersResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CancelAllOrdersResponse.Unmarshal(m, b) -} -func (m *CancelAllOrdersResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CancelAllOrdersResponse.Marshal(b, m, deterministic) -} -func (m *CancelAllOrdersResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_CancelAllOrdersResponse.Merge(m, src) -} -func (m *CancelAllOrdersResponse) XXX_Size() int { - return xxx_messageInfo_CancelAllOrdersResponse.Size(m) -} -func (m *CancelAllOrdersResponse) XXX_DiscardUnknown() { - xxx_messageInfo_CancelAllOrdersResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_CancelAllOrdersResponse proto.InternalMessageInfo - -func (m *CancelAllOrdersResponse) GetOrders() []*CancelAllOrdersResponse_Orders { - if m != nil { - return m.Orders - } - return nil -} - -type CancelAllOrdersResponse_Orders struct { - Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` - OrderStatus map[string]string `protobuf:"bytes,2,rep,name=order_status,json=orderStatus,proto3" json:"order_status,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` -} - -func (m *CancelAllOrdersResponse_Orders) Reset() { *m = CancelAllOrdersResponse_Orders{} } -func (m *CancelAllOrdersResponse_Orders) String() string { return proto.CompactTextString(m) } -func (*CancelAllOrdersResponse_Orders) ProtoMessage() {} -func (*CancelAllOrdersResponse_Orders) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{73, 0} -} - -func (m *CancelAllOrdersResponse_Orders) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CancelAllOrdersResponse_Orders.Unmarshal(m, b) -} -func (m *CancelAllOrdersResponse_Orders) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CancelAllOrdersResponse_Orders.Marshal(b, m, deterministic) -} -func (m *CancelAllOrdersResponse_Orders) XXX_Merge(src proto.Message) { - xxx_messageInfo_CancelAllOrdersResponse_Orders.Merge(m, src) -} -func (m *CancelAllOrdersResponse_Orders) XXX_Size() int { - return xxx_messageInfo_CancelAllOrdersResponse_Orders.Size(m) -} -func (m *CancelAllOrdersResponse_Orders) XXX_DiscardUnknown() { - xxx_messageInfo_CancelAllOrdersResponse_Orders.DiscardUnknown(m) -} - -var xxx_messageInfo_CancelAllOrdersResponse_Orders proto.InternalMessageInfo - -func (m *CancelAllOrdersResponse_Orders) GetExchange() string { - if m != nil { - return m.Exchange - } - return "" -} - -func (m *CancelAllOrdersResponse_Orders) GetOrderStatus() map[string]string { - if m != nil { - return m.OrderStatus +func (x *CancelAllOrdersResponse) GetOrders() []*CancelAllOrdersResponse_Orders { + if x != nil { + return x.Orders } return nil } type GetEventsRequest struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields } -func (m *GetEventsRequest) Reset() { *m = GetEventsRequest{} } -func (m *GetEventsRequest) String() string { return proto.CompactTextString(m) } -func (*GetEventsRequest) ProtoMessage() {} +func (x *GetEventsRequest) Reset() { + *x = GetEventsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[74] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetEventsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetEventsRequest) ProtoMessage() {} + +func (x *GetEventsRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[74] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetEventsRequest.ProtoReflect.Descriptor instead. func (*GetEventsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{74} + return file_rpc_proto_rawDescGZIP(), []int{74} } -func (m *GetEventsRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetEventsRequest.Unmarshal(m, b) -} -func (m *GetEventsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetEventsRequest.Marshal(b, m, deterministic) -} -func (m *GetEventsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetEventsRequest.Merge(m, src) -} -func (m *GetEventsRequest) XXX_Size() int { - return xxx_messageInfo_GetEventsRequest.Size(m) -} -func (m *GetEventsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetEventsRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_GetEventsRequest proto.InternalMessageInfo - type ConditionParams struct { - Condition string `protobuf:"bytes,1,opt,name=condition,proto3" json:"condition,omitempty"` - Price float64 `protobuf:"fixed64,2,opt,name=price,proto3" json:"price,omitempty"` - CheckBids bool `protobuf:"varint,3,opt,name=check_bids,json=checkBids,proto3" json:"check_bids,omitempty"` - CheckBidsAndAsks bool `protobuf:"varint,4,opt,name=check_bids_and_asks,json=checkBidsAndAsks,proto3" json:"check_bids_and_asks,omitempty"` - OrderbookAmount float64 `protobuf:"fixed64,5,opt,name=orderbook_amount,json=orderbookAmount,proto3" json:"orderbook_amount,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Condition string `protobuf:"bytes,1,opt,name=condition,proto3" json:"condition,omitempty"` + Price float64 `protobuf:"fixed64,2,opt,name=price,proto3" json:"price,omitempty"` + CheckBids bool `protobuf:"varint,3,opt,name=check_bids,json=checkBids,proto3" json:"check_bids,omitempty"` + CheckBidsAndAsks bool `protobuf:"varint,4,opt,name=check_bids_and_asks,json=checkBidsAndAsks,proto3" json:"check_bids_and_asks,omitempty"` + OrderbookAmount float64 `protobuf:"fixed64,5,opt,name=orderbook_amount,json=orderbookAmount,proto3" json:"orderbook_amount,omitempty"` } -func (m *ConditionParams) Reset() { *m = ConditionParams{} } -func (m *ConditionParams) String() string { return proto.CompactTextString(m) } -func (*ConditionParams) ProtoMessage() {} +func (x *ConditionParams) Reset() { + *x = ConditionParams{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[75] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ConditionParams) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ConditionParams) ProtoMessage() {} + +func (x *ConditionParams) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[75] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ConditionParams.ProtoReflect.Descriptor instead. func (*ConditionParams) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{75} + return file_rpc_proto_rawDescGZIP(), []int{75} } -func (m *ConditionParams) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ConditionParams.Unmarshal(m, b) -} -func (m *ConditionParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ConditionParams.Marshal(b, m, deterministic) -} -func (m *ConditionParams) XXX_Merge(src proto.Message) { - xxx_messageInfo_ConditionParams.Merge(m, src) -} -func (m *ConditionParams) XXX_Size() int { - return xxx_messageInfo_ConditionParams.Size(m) -} -func (m *ConditionParams) XXX_DiscardUnknown() { - xxx_messageInfo_ConditionParams.DiscardUnknown(m) -} - -var xxx_messageInfo_ConditionParams proto.InternalMessageInfo - -func (m *ConditionParams) GetCondition() string { - if m != nil { - return m.Condition +func (x *ConditionParams) GetCondition() string { + if x != nil { + return x.Condition } return "" } -func (m *ConditionParams) GetPrice() float64 { - if m != nil { - return m.Price +func (x *ConditionParams) GetPrice() float64 { + if x != nil { + return x.Price } return 0 } -func (m *ConditionParams) GetCheckBids() bool { - if m != nil { - return m.CheckBids +func (x *ConditionParams) GetCheckBids() bool { + if x != nil { + return x.CheckBids } return false } -func (m *ConditionParams) GetCheckBidsAndAsks() bool { - if m != nil { - return m.CheckBidsAndAsks +func (x *ConditionParams) GetCheckBidsAndAsks() bool { + if x != nil { + return x.CheckBidsAndAsks } return false } -func (m *ConditionParams) GetOrderbookAmount() float64 { - if m != nil { - return m.OrderbookAmount +func (x *ConditionParams) GetOrderbookAmount() float64 { + if x != nil { + return x.OrderbookAmount } return 0 } type GetEventsResponse struct { - Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - Exchange string `protobuf:"bytes,2,opt,name=exchange,proto3" json:"exchange,omitempty"` - Item string `protobuf:"bytes,3,opt,name=item,proto3" json:"item,omitempty"` - ConditionParams *ConditionParams `protobuf:"bytes,4,opt,name=condition_params,json=conditionParams,proto3" json:"condition_params,omitempty"` - Pair *CurrencyPair `protobuf:"bytes,5,opt,name=pair,proto3" json:"pair,omitempty"` - Action string `protobuf:"bytes,6,opt,name=action,proto3" json:"action,omitempty"` - Executed bool `protobuf:"varint,7,opt,name=executed,proto3" json:"executed,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Exchange string `protobuf:"bytes,2,opt,name=exchange,proto3" json:"exchange,omitempty"` + Item string `protobuf:"bytes,3,opt,name=item,proto3" json:"item,omitempty"` + ConditionParams *ConditionParams `protobuf:"bytes,4,opt,name=condition_params,json=conditionParams,proto3" json:"condition_params,omitempty"` + Pair *CurrencyPair `protobuf:"bytes,5,opt,name=pair,proto3" json:"pair,omitempty"` + Action string `protobuf:"bytes,6,opt,name=action,proto3" json:"action,omitempty"` + Executed bool `protobuf:"varint,7,opt,name=executed,proto3" json:"executed,omitempty"` } -func (m *GetEventsResponse) Reset() { *m = GetEventsResponse{} } -func (m *GetEventsResponse) String() string { return proto.CompactTextString(m) } -func (*GetEventsResponse) ProtoMessage() {} +func (x *GetEventsResponse) Reset() { + *x = GetEventsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[76] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetEventsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetEventsResponse) ProtoMessage() {} + +func (x *GetEventsResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[76] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetEventsResponse.ProtoReflect.Descriptor instead. func (*GetEventsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{76} + return file_rpc_proto_rawDescGZIP(), []int{76} } -func (m *GetEventsResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetEventsResponse.Unmarshal(m, b) -} -func (m *GetEventsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetEventsResponse.Marshal(b, m, deterministic) -} -func (m *GetEventsResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetEventsResponse.Merge(m, src) -} -func (m *GetEventsResponse) XXX_Size() int { - return xxx_messageInfo_GetEventsResponse.Size(m) -} -func (m *GetEventsResponse) XXX_DiscardUnknown() { - xxx_messageInfo_GetEventsResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_GetEventsResponse proto.InternalMessageInfo - -func (m *GetEventsResponse) GetId() int64 { - if m != nil { - return m.Id +func (x *GetEventsResponse) GetId() int64 { + if x != nil { + return x.Id } return 0 } -func (m *GetEventsResponse) GetExchange() string { - if m != nil { - return m.Exchange +func (x *GetEventsResponse) GetExchange() string { + if x != nil { + return x.Exchange } return "" } -func (m *GetEventsResponse) GetItem() string { - if m != nil { - return m.Item +func (x *GetEventsResponse) GetItem() string { + if x != nil { + return x.Item } return "" } -func (m *GetEventsResponse) GetConditionParams() *ConditionParams { - if m != nil { - return m.ConditionParams +func (x *GetEventsResponse) GetConditionParams() *ConditionParams { + if x != nil { + return x.ConditionParams } return nil } -func (m *GetEventsResponse) GetPair() *CurrencyPair { - if m != nil { - return m.Pair +func (x *GetEventsResponse) GetPair() *CurrencyPair { + if x != nil { + return x.Pair } return nil } -func (m *GetEventsResponse) GetAction() string { - if m != nil { - return m.Action +func (x *GetEventsResponse) GetAction() string { + if x != nil { + return x.Action } return "" } -func (m *GetEventsResponse) GetExecuted() bool { - if m != nil { - return m.Executed +func (x *GetEventsResponse) GetExecuted() bool { + if x != nil { + return x.Executed } return false } type AddEventRequest struct { - Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` - Item string `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` - ConditionParams *ConditionParams `protobuf:"bytes,3,opt,name=condition_params,json=conditionParams,proto3" json:"condition_params,omitempty"` - Pair *CurrencyPair `protobuf:"bytes,4,opt,name=pair,proto3" json:"pair,omitempty"` - AssetType string `protobuf:"bytes,5,opt,name=asset_type,json=assetType,proto3" json:"asset_type,omitempty"` - Action string `protobuf:"bytes,6,opt,name=action,proto3" json:"action,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` + Item string `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` + ConditionParams *ConditionParams `protobuf:"bytes,3,opt,name=condition_params,json=conditionParams,proto3" json:"condition_params,omitempty"` + Pair *CurrencyPair `protobuf:"bytes,4,opt,name=pair,proto3" json:"pair,omitempty"` + AssetType string `protobuf:"bytes,5,opt,name=asset_type,json=assetType,proto3" json:"asset_type,omitempty"` + Action string `protobuf:"bytes,6,opt,name=action,proto3" json:"action,omitempty"` } -func (m *AddEventRequest) Reset() { *m = AddEventRequest{} } -func (m *AddEventRequest) String() string { return proto.CompactTextString(m) } -func (*AddEventRequest) ProtoMessage() {} +func (x *AddEventRequest) Reset() { + *x = AddEventRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[77] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AddEventRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AddEventRequest) ProtoMessage() {} + +func (x *AddEventRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[77] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AddEventRequest.ProtoReflect.Descriptor instead. func (*AddEventRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{77} + return file_rpc_proto_rawDescGZIP(), []int{77} } -func (m *AddEventRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_AddEventRequest.Unmarshal(m, b) -} -func (m *AddEventRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_AddEventRequest.Marshal(b, m, deterministic) -} -func (m *AddEventRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_AddEventRequest.Merge(m, src) -} -func (m *AddEventRequest) XXX_Size() int { - return xxx_messageInfo_AddEventRequest.Size(m) -} -func (m *AddEventRequest) XXX_DiscardUnknown() { - xxx_messageInfo_AddEventRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_AddEventRequest proto.InternalMessageInfo - -func (m *AddEventRequest) GetExchange() string { - if m != nil { - return m.Exchange +func (x *AddEventRequest) GetExchange() string { + if x != nil { + return x.Exchange } return "" } -func (m *AddEventRequest) GetItem() string { - if m != nil { - return m.Item +func (x *AddEventRequest) GetItem() string { + if x != nil { + return x.Item } return "" } -func (m *AddEventRequest) GetConditionParams() *ConditionParams { - if m != nil { - return m.ConditionParams +func (x *AddEventRequest) GetConditionParams() *ConditionParams { + if x != nil { + return x.ConditionParams } return nil } -func (m *AddEventRequest) GetPair() *CurrencyPair { - if m != nil { - return m.Pair +func (x *AddEventRequest) GetPair() *CurrencyPair { + if x != nil { + return x.Pair } return nil } -func (m *AddEventRequest) GetAssetType() string { - if m != nil { - return m.AssetType +func (x *AddEventRequest) GetAssetType() string { + if x != nil { + return x.AssetType } return "" } -func (m *AddEventRequest) GetAction() string { - if m != nil { - return m.Action +func (x *AddEventRequest) GetAction() string { + if x != nil { + return x.Action } return "" } type AddEventResponse struct { - Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` } -func (m *AddEventResponse) Reset() { *m = AddEventResponse{} } -func (m *AddEventResponse) String() string { return proto.CompactTextString(m) } -func (*AddEventResponse) ProtoMessage() {} +func (x *AddEventResponse) Reset() { + *x = AddEventResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[78] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AddEventResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AddEventResponse) ProtoMessage() {} + +func (x *AddEventResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[78] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AddEventResponse.ProtoReflect.Descriptor instead. func (*AddEventResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{78} + return file_rpc_proto_rawDescGZIP(), []int{78} } -func (m *AddEventResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_AddEventResponse.Unmarshal(m, b) -} -func (m *AddEventResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_AddEventResponse.Marshal(b, m, deterministic) -} -func (m *AddEventResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_AddEventResponse.Merge(m, src) -} -func (m *AddEventResponse) XXX_Size() int { - return xxx_messageInfo_AddEventResponse.Size(m) -} -func (m *AddEventResponse) XXX_DiscardUnknown() { - xxx_messageInfo_AddEventResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_AddEventResponse proto.InternalMessageInfo - -func (m *AddEventResponse) GetId() int64 { - if m != nil { - return m.Id +func (x *AddEventResponse) GetId() int64 { + if x != nil { + return x.Id } return 0 } type RemoveEventRequest struct { - Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` } -func (m *RemoveEventRequest) Reset() { *m = RemoveEventRequest{} } -func (m *RemoveEventRequest) String() string { return proto.CompactTextString(m) } -func (*RemoveEventRequest) ProtoMessage() {} +func (x *RemoveEventRequest) Reset() { + *x = RemoveEventRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[79] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RemoveEventRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RemoveEventRequest) ProtoMessage() {} + +func (x *RemoveEventRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[79] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RemoveEventRequest.ProtoReflect.Descriptor instead. func (*RemoveEventRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{79} + return file_rpc_proto_rawDescGZIP(), []int{79} } -func (m *RemoveEventRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_RemoveEventRequest.Unmarshal(m, b) -} -func (m *RemoveEventRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_RemoveEventRequest.Marshal(b, m, deterministic) -} -func (m *RemoveEventRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_RemoveEventRequest.Merge(m, src) -} -func (m *RemoveEventRequest) XXX_Size() int { - return xxx_messageInfo_RemoveEventRequest.Size(m) -} -func (m *RemoveEventRequest) XXX_DiscardUnknown() { - xxx_messageInfo_RemoveEventRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_RemoveEventRequest proto.InternalMessageInfo - -func (m *RemoveEventRequest) GetId() int64 { - if m != nil { - return m.Id +func (x *RemoveEventRequest) GetId() int64 { + if x != nil { + return x.Id } return 0 } type RemoveEventResponse struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields } -func (m *RemoveEventResponse) Reset() { *m = RemoveEventResponse{} } -func (m *RemoveEventResponse) String() string { return proto.CompactTextString(m) } -func (*RemoveEventResponse) ProtoMessage() {} +func (x *RemoveEventResponse) Reset() { + *x = RemoveEventResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[80] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RemoveEventResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RemoveEventResponse) ProtoMessage() {} + +func (x *RemoveEventResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[80] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RemoveEventResponse.ProtoReflect.Descriptor instead. func (*RemoveEventResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{80} + return file_rpc_proto_rawDescGZIP(), []int{80} } -func (m *RemoveEventResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_RemoveEventResponse.Unmarshal(m, b) -} -func (m *RemoveEventResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_RemoveEventResponse.Marshal(b, m, deterministic) -} -func (m *RemoveEventResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_RemoveEventResponse.Merge(m, src) -} -func (m *RemoveEventResponse) XXX_Size() int { - return xxx_messageInfo_RemoveEventResponse.Size(m) -} -func (m *RemoveEventResponse) XXX_DiscardUnknown() { - xxx_messageInfo_RemoveEventResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_RemoveEventResponse proto.InternalMessageInfo - type GetCryptocurrencyDepositAddressesRequest struct { - Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` } -func (m *GetCryptocurrencyDepositAddressesRequest) Reset() { - *m = GetCryptocurrencyDepositAddressesRequest{} +func (x *GetCryptocurrencyDepositAddressesRequest) Reset() { + *x = GetCryptocurrencyDepositAddressesRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[81] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GetCryptocurrencyDepositAddressesRequest) String() string { return proto.CompactTextString(m) } -func (*GetCryptocurrencyDepositAddressesRequest) ProtoMessage() {} + +func (x *GetCryptocurrencyDepositAddressesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetCryptocurrencyDepositAddressesRequest) ProtoMessage() {} + +func (x *GetCryptocurrencyDepositAddressesRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[81] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetCryptocurrencyDepositAddressesRequest.ProtoReflect.Descriptor instead. func (*GetCryptocurrencyDepositAddressesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{81} + return file_rpc_proto_rawDescGZIP(), []int{81} } -func (m *GetCryptocurrencyDepositAddressesRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetCryptocurrencyDepositAddressesRequest.Unmarshal(m, b) -} -func (m *GetCryptocurrencyDepositAddressesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetCryptocurrencyDepositAddressesRequest.Marshal(b, m, deterministic) -} -func (m *GetCryptocurrencyDepositAddressesRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetCryptocurrencyDepositAddressesRequest.Merge(m, src) -} -func (m *GetCryptocurrencyDepositAddressesRequest) XXX_Size() int { - return xxx_messageInfo_GetCryptocurrencyDepositAddressesRequest.Size(m) -} -func (m *GetCryptocurrencyDepositAddressesRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetCryptocurrencyDepositAddressesRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_GetCryptocurrencyDepositAddressesRequest proto.InternalMessageInfo - -func (m *GetCryptocurrencyDepositAddressesRequest) GetExchange() string { - if m != nil { - return m.Exchange +func (x *GetCryptocurrencyDepositAddressesRequest) GetExchange() string { + if x != nil { + return x.Exchange } return "" } type GetCryptocurrencyDepositAddressesResponse struct { - Addresses map[string]string `protobuf:"bytes,1,rep,name=addresses,proto3" json:"addresses,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Addresses map[string]string `protobuf:"bytes,1,rep,name=addresses,proto3" json:"addresses,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (m *GetCryptocurrencyDepositAddressesResponse) Reset() { - *m = GetCryptocurrencyDepositAddressesResponse{} +func (x *GetCryptocurrencyDepositAddressesResponse) Reset() { + *x = GetCryptocurrencyDepositAddressesResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[82] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GetCryptocurrencyDepositAddressesResponse) String() string { return proto.CompactTextString(m) } -func (*GetCryptocurrencyDepositAddressesResponse) ProtoMessage() {} + +func (x *GetCryptocurrencyDepositAddressesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetCryptocurrencyDepositAddressesResponse) ProtoMessage() {} + +func (x *GetCryptocurrencyDepositAddressesResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[82] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetCryptocurrencyDepositAddressesResponse.ProtoReflect.Descriptor instead. func (*GetCryptocurrencyDepositAddressesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{82} + return file_rpc_proto_rawDescGZIP(), []int{82} } -func (m *GetCryptocurrencyDepositAddressesResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetCryptocurrencyDepositAddressesResponse.Unmarshal(m, b) -} -func (m *GetCryptocurrencyDepositAddressesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetCryptocurrencyDepositAddressesResponse.Marshal(b, m, deterministic) -} -func (m *GetCryptocurrencyDepositAddressesResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetCryptocurrencyDepositAddressesResponse.Merge(m, src) -} -func (m *GetCryptocurrencyDepositAddressesResponse) XXX_Size() int { - return xxx_messageInfo_GetCryptocurrencyDepositAddressesResponse.Size(m) -} -func (m *GetCryptocurrencyDepositAddressesResponse) XXX_DiscardUnknown() { - xxx_messageInfo_GetCryptocurrencyDepositAddressesResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_GetCryptocurrencyDepositAddressesResponse proto.InternalMessageInfo - -func (m *GetCryptocurrencyDepositAddressesResponse) GetAddresses() map[string]string { - if m != nil { - return m.Addresses +func (x *GetCryptocurrencyDepositAddressesResponse) GetAddresses() map[string]string { + if x != nil { + return x.Addresses } return nil } type GetCryptocurrencyDepositAddressRequest struct { - Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` - Cryptocurrency string `protobuf:"bytes,2,opt,name=cryptocurrency,proto3" json:"cryptocurrency,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` + Cryptocurrency string `protobuf:"bytes,2,opt,name=cryptocurrency,proto3" json:"cryptocurrency,omitempty"` } -func (m *GetCryptocurrencyDepositAddressRequest) Reset() { - *m = GetCryptocurrencyDepositAddressRequest{} +func (x *GetCryptocurrencyDepositAddressRequest) Reset() { + *x = GetCryptocurrencyDepositAddressRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[83] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GetCryptocurrencyDepositAddressRequest) String() string { return proto.CompactTextString(m) } -func (*GetCryptocurrencyDepositAddressRequest) ProtoMessage() {} + +func (x *GetCryptocurrencyDepositAddressRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetCryptocurrencyDepositAddressRequest) ProtoMessage() {} + +func (x *GetCryptocurrencyDepositAddressRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[83] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetCryptocurrencyDepositAddressRequest.ProtoReflect.Descriptor instead. func (*GetCryptocurrencyDepositAddressRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{83} + return file_rpc_proto_rawDescGZIP(), []int{83} } -func (m *GetCryptocurrencyDepositAddressRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetCryptocurrencyDepositAddressRequest.Unmarshal(m, b) -} -func (m *GetCryptocurrencyDepositAddressRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetCryptocurrencyDepositAddressRequest.Marshal(b, m, deterministic) -} -func (m *GetCryptocurrencyDepositAddressRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetCryptocurrencyDepositAddressRequest.Merge(m, src) -} -func (m *GetCryptocurrencyDepositAddressRequest) XXX_Size() int { - return xxx_messageInfo_GetCryptocurrencyDepositAddressRequest.Size(m) -} -func (m *GetCryptocurrencyDepositAddressRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetCryptocurrencyDepositAddressRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_GetCryptocurrencyDepositAddressRequest proto.InternalMessageInfo - -func (m *GetCryptocurrencyDepositAddressRequest) GetExchange() string { - if m != nil { - return m.Exchange +func (x *GetCryptocurrencyDepositAddressRequest) GetExchange() string { + if x != nil { + return x.Exchange } return "" } -func (m *GetCryptocurrencyDepositAddressRequest) GetCryptocurrency() string { - if m != nil { - return m.Cryptocurrency +func (x *GetCryptocurrencyDepositAddressRequest) GetCryptocurrency() string { + if x != nil { + return x.Cryptocurrency } return "" } type GetCryptocurrencyDepositAddressResponse struct { - Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` } -func (m *GetCryptocurrencyDepositAddressResponse) Reset() { - *m = GetCryptocurrencyDepositAddressResponse{} +func (x *GetCryptocurrencyDepositAddressResponse) Reset() { + *x = GetCryptocurrencyDepositAddressResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[84] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -func (m *GetCryptocurrencyDepositAddressResponse) String() string { return proto.CompactTextString(m) } -func (*GetCryptocurrencyDepositAddressResponse) ProtoMessage() {} + +func (x *GetCryptocurrencyDepositAddressResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetCryptocurrencyDepositAddressResponse) ProtoMessage() {} + +func (x *GetCryptocurrencyDepositAddressResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[84] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetCryptocurrencyDepositAddressResponse.ProtoReflect.Descriptor instead. func (*GetCryptocurrencyDepositAddressResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{84} + return file_rpc_proto_rawDescGZIP(), []int{84} } -func (m *GetCryptocurrencyDepositAddressResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetCryptocurrencyDepositAddressResponse.Unmarshal(m, b) -} -func (m *GetCryptocurrencyDepositAddressResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetCryptocurrencyDepositAddressResponse.Marshal(b, m, deterministic) -} -func (m *GetCryptocurrencyDepositAddressResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetCryptocurrencyDepositAddressResponse.Merge(m, src) -} -func (m *GetCryptocurrencyDepositAddressResponse) XXX_Size() int { - return xxx_messageInfo_GetCryptocurrencyDepositAddressResponse.Size(m) -} -func (m *GetCryptocurrencyDepositAddressResponse) XXX_DiscardUnknown() { - xxx_messageInfo_GetCryptocurrencyDepositAddressResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_GetCryptocurrencyDepositAddressResponse proto.InternalMessageInfo - -func (m *GetCryptocurrencyDepositAddressResponse) GetAddress() string { - if m != nil { - return m.Address +func (x *GetCryptocurrencyDepositAddressResponse) GetAddress() string { + if x != nil { + return x.Address } return "" } type WithdrawFiatRequest struct { - Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` - Currency string `protobuf:"bytes,2,opt,name=currency,proto3" json:"currency,omitempty"` - Amount float64 `protobuf:"fixed64,3,opt,name=amount,proto3" json:"amount,omitempty"` - Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` - BankAccountId string `protobuf:"bytes,5,opt,name=bank_account_id,json=bankAccountId,proto3" json:"bank_account_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` + Currency string `protobuf:"bytes,2,opt,name=currency,proto3" json:"currency,omitempty"` + Amount float64 `protobuf:"fixed64,3,opt,name=amount,proto3" json:"amount,omitempty"` + Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` + BankAccountId string `protobuf:"bytes,5,opt,name=bank_account_id,json=bankAccountId,proto3" json:"bank_account_id,omitempty"` } -func (m *WithdrawFiatRequest) Reset() { *m = WithdrawFiatRequest{} } -func (m *WithdrawFiatRequest) String() string { return proto.CompactTextString(m) } -func (*WithdrawFiatRequest) ProtoMessage() {} +func (x *WithdrawFiatRequest) Reset() { + *x = WithdrawFiatRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[85] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *WithdrawFiatRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WithdrawFiatRequest) ProtoMessage() {} + +func (x *WithdrawFiatRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[85] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WithdrawFiatRequest.ProtoReflect.Descriptor instead. func (*WithdrawFiatRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{85} + return file_rpc_proto_rawDescGZIP(), []int{85} } -func (m *WithdrawFiatRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_WithdrawFiatRequest.Unmarshal(m, b) -} -func (m *WithdrawFiatRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_WithdrawFiatRequest.Marshal(b, m, deterministic) -} -func (m *WithdrawFiatRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_WithdrawFiatRequest.Merge(m, src) -} -func (m *WithdrawFiatRequest) XXX_Size() int { - return xxx_messageInfo_WithdrawFiatRequest.Size(m) -} -func (m *WithdrawFiatRequest) XXX_DiscardUnknown() { - xxx_messageInfo_WithdrawFiatRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_WithdrawFiatRequest proto.InternalMessageInfo - -func (m *WithdrawFiatRequest) GetExchange() string { - if m != nil { - return m.Exchange +func (x *WithdrawFiatRequest) GetExchange() string { + if x != nil { + return x.Exchange } return "" } -func (m *WithdrawFiatRequest) GetCurrency() string { - if m != nil { - return m.Currency +func (x *WithdrawFiatRequest) GetCurrency() string { + if x != nil { + return x.Currency } return "" } -func (m *WithdrawFiatRequest) GetAmount() float64 { - if m != nil { - return m.Amount +func (x *WithdrawFiatRequest) GetAmount() float64 { + if x != nil { + return x.Amount } return 0 } -func (m *WithdrawFiatRequest) GetDescription() string { - if m != nil { - return m.Description +func (x *WithdrawFiatRequest) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *WithdrawFiatRequest) GetBankAccountId() string { - if m != nil { - return m.BankAccountId +func (x *WithdrawFiatRequest) GetBankAccountId() string { + if x != nil { + return x.BankAccountId } return "" } type WithdrawCryptoRequest struct { - Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` - Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` - AddressTag string `protobuf:"bytes,3,opt,name=address_tag,json=addressTag,proto3" json:"address_tag,omitempty"` - Currency string `protobuf:"bytes,4,opt,name=currency,proto3" json:"currency,omitempty"` - Amount float64 `protobuf:"fixed64,5,opt,name=amount,proto3" json:"amount,omitempty"` - Fee float64 `protobuf:"fixed64,6,opt,name=fee,proto3" json:"fee,omitempty"` - Description string `protobuf:"bytes,7,opt,name=description,proto3" json:"description,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` + Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` + AddressTag string `protobuf:"bytes,3,opt,name=address_tag,json=addressTag,proto3" json:"address_tag,omitempty"` + Currency string `protobuf:"bytes,4,opt,name=currency,proto3" json:"currency,omitempty"` + Amount float64 `protobuf:"fixed64,5,opt,name=amount,proto3" json:"amount,omitempty"` + Fee float64 `protobuf:"fixed64,6,opt,name=fee,proto3" json:"fee,omitempty"` + Description string `protobuf:"bytes,7,opt,name=description,proto3" json:"description,omitempty"` } -func (m *WithdrawCryptoRequest) Reset() { *m = WithdrawCryptoRequest{} } -func (m *WithdrawCryptoRequest) String() string { return proto.CompactTextString(m) } -func (*WithdrawCryptoRequest) ProtoMessage() {} +func (x *WithdrawCryptoRequest) Reset() { + *x = WithdrawCryptoRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[86] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *WithdrawCryptoRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WithdrawCryptoRequest) ProtoMessage() {} + +func (x *WithdrawCryptoRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[86] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WithdrawCryptoRequest.ProtoReflect.Descriptor instead. func (*WithdrawCryptoRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{86} + return file_rpc_proto_rawDescGZIP(), []int{86} } -func (m *WithdrawCryptoRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_WithdrawCryptoRequest.Unmarshal(m, b) -} -func (m *WithdrawCryptoRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_WithdrawCryptoRequest.Marshal(b, m, deterministic) -} -func (m *WithdrawCryptoRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_WithdrawCryptoRequest.Merge(m, src) -} -func (m *WithdrawCryptoRequest) XXX_Size() int { - return xxx_messageInfo_WithdrawCryptoRequest.Size(m) -} -func (m *WithdrawCryptoRequest) XXX_DiscardUnknown() { - xxx_messageInfo_WithdrawCryptoRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_WithdrawCryptoRequest proto.InternalMessageInfo - -func (m *WithdrawCryptoRequest) GetExchange() string { - if m != nil { - return m.Exchange +func (x *WithdrawCryptoRequest) GetExchange() string { + if x != nil { + return x.Exchange } return "" } -func (m *WithdrawCryptoRequest) GetAddress() string { - if m != nil { - return m.Address +func (x *WithdrawCryptoRequest) GetAddress() string { + if x != nil { + return x.Address } return "" } -func (m *WithdrawCryptoRequest) GetAddressTag() string { - if m != nil { - return m.AddressTag +func (x *WithdrawCryptoRequest) GetAddressTag() string { + if x != nil { + return x.AddressTag } return "" } -func (m *WithdrawCryptoRequest) GetCurrency() string { - if m != nil { - return m.Currency +func (x *WithdrawCryptoRequest) GetCurrency() string { + if x != nil { + return x.Currency } return "" } -func (m *WithdrawCryptoRequest) GetAmount() float64 { - if m != nil { - return m.Amount +func (x *WithdrawCryptoRequest) GetAmount() float64 { + if x != nil { + return x.Amount } return 0 } -func (m *WithdrawCryptoRequest) GetFee() float64 { - if m != nil { - return m.Fee +func (x *WithdrawCryptoRequest) GetFee() float64 { + if x != nil { + return x.Fee } return 0 } -func (m *WithdrawCryptoRequest) GetDescription() string { - if m != nil { - return m.Description +func (x *WithdrawCryptoRequest) GetDescription() string { + if x != nil { + return x.Description } return "" } type WithdrawResponse struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Status string `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` } -func (m *WithdrawResponse) Reset() { *m = WithdrawResponse{} } -func (m *WithdrawResponse) String() string { return proto.CompactTextString(m) } -func (*WithdrawResponse) ProtoMessage() {} +func (x *WithdrawResponse) Reset() { + *x = WithdrawResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[87] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *WithdrawResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WithdrawResponse) ProtoMessage() {} + +func (x *WithdrawResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[87] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WithdrawResponse.ProtoReflect.Descriptor instead. func (*WithdrawResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{87} + return file_rpc_proto_rawDescGZIP(), []int{87} } -func (m *WithdrawResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_WithdrawResponse.Unmarshal(m, b) -} -func (m *WithdrawResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_WithdrawResponse.Marshal(b, m, deterministic) -} -func (m *WithdrawResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_WithdrawResponse.Merge(m, src) -} -func (m *WithdrawResponse) XXX_Size() int { - return xxx_messageInfo_WithdrawResponse.Size(m) -} -func (m *WithdrawResponse) XXX_DiscardUnknown() { - xxx_messageInfo_WithdrawResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_WithdrawResponse proto.InternalMessageInfo - -func (m *WithdrawResponse) GetId() string { - if m != nil { - return m.Id +func (x *WithdrawResponse) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *WithdrawResponse) GetStatus() string { - if m != nil { - return m.Status +func (x *WithdrawResponse) GetStatus() string { + if x != nil { + return x.Status } return "" } type WithdrawalEventByIDRequest struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } -func (m *WithdrawalEventByIDRequest) Reset() { *m = WithdrawalEventByIDRequest{} } -func (m *WithdrawalEventByIDRequest) String() string { return proto.CompactTextString(m) } -func (*WithdrawalEventByIDRequest) ProtoMessage() {} +func (x *WithdrawalEventByIDRequest) Reset() { + *x = WithdrawalEventByIDRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[88] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *WithdrawalEventByIDRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WithdrawalEventByIDRequest) ProtoMessage() {} + +func (x *WithdrawalEventByIDRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[88] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WithdrawalEventByIDRequest.ProtoReflect.Descriptor instead. func (*WithdrawalEventByIDRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{88} + return file_rpc_proto_rawDescGZIP(), []int{88} } -func (m *WithdrawalEventByIDRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_WithdrawalEventByIDRequest.Unmarshal(m, b) -} -func (m *WithdrawalEventByIDRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_WithdrawalEventByIDRequest.Marshal(b, m, deterministic) -} -func (m *WithdrawalEventByIDRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_WithdrawalEventByIDRequest.Merge(m, src) -} -func (m *WithdrawalEventByIDRequest) XXX_Size() int { - return xxx_messageInfo_WithdrawalEventByIDRequest.Size(m) -} -func (m *WithdrawalEventByIDRequest) XXX_DiscardUnknown() { - xxx_messageInfo_WithdrawalEventByIDRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_WithdrawalEventByIDRequest proto.InternalMessageInfo - -func (m *WithdrawalEventByIDRequest) GetId() string { - if m != nil { - return m.Id +func (x *WithdrawalEventByIDRequest) GetId() string { + if x != nil { + return x.Id } return "" } type WithdrawalEventByIDResponse struct { - Event *WithdrawalEventResponse `protobuf:"bytes,2,opt,name=event,proto3" json:"event,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Event *WithdrawalEventResponse `protobuf:"bytes,2,opt,name=event,proto3" json:"event,omitempty"` } -func (m *WithdrawalEventByIDResponse) Reset() { *m = WithdrawalEventByIDResponse{} } -func (m *WithdrawalEventByIDResponse) String() string { return proto.CompactTextString(m) } -func (*WithdrawalEventByIDResponse) ProtoMessage() {} +func (x *WithdrawalEventByIDResponse) Reset() { + *x = WithdrawalEventByIDResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[89] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *WithdrawalEventByIDResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WithdrawalEventByIDResponse) ProtoMessage() {} + +func (x *WithdrawalEventByIDResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[89] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WithdrawalEventByIDResponse.ProtoReflect.Descriptor instead. func (*WithdrawalEventByIDResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{89} + return file_rpc_proto_rawDescGZIP(), []int{89} } -func (m *WithdrawalEventByIDResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_WithdrawalEventByIDResponse.Unmarshal(m, b) -} -func (m *WithdrawalEventByIDResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_WithdrawalEventByIDResponse.Marshal(b, m, deterministic) -} -func (m *WithdrawalEventByIDResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_WithdrawalEventByIDResponse.Merge(m, src) -} -func (m *WithdrawalEventByIDResponse) XXX_Size() int { - return xxx_messageInfo_WithdrawalEventByIDResponse.Size(m) -} -func (m *WithdrawalEventByIDResponse) XXX_DiscardUnknown() { - xxx_messageInfo_WithdrawalEventByIDResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_WithdrawalEventByIDResponse proto.InternalMessageInfo - -func (m *WithdrawalEventByIDResponse) GetEvent() *WithdrawalEventResponse { - if m != nil { - return m.Event +func (x *WithdrawalEventByIDResponse) GetEvent() *WithdrawalEventResponse { + if x != nil { + return x.Event } return nil } type WithdrawalEventsByExchangeRequest struct { - Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` - Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` - Limit int32 `protobuf:"varint,3,opt,name=limit,proto3" json:"limit,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` + Limit int32 `protobuf:"varint,3,opt,name=limit,proto3" json:"limit,omitempty"` } -func (m *WithdrawalEventsByExchangeRequest) Reset() { *m = WithdrawalEventsByExchangeRequest{} } -func (m *WithdrawalEventsByExchangeRequest) String() string { return proto.CompactTextString(m) } -func (*WithdrawalEventsByExchangeRequest) ProtoMessage() {} +func (x *WithdrawalEventsByExchangeRequest) Reset() { + *x = WithdrawalEventsByExchangeRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[90] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *WithdrawalEventsByExchangeRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WithdrawalEventsByExchangeRequest) ProtoMessage() {} + +func (x *WithdrawalEventsByExchangeRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[90] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WithdrawalEventsByExchangeRequest.ProtoReflect.Descriptor instead. func (*WithdrawalEventsByExchangeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{90} + return file_rpc_proto_rawDescGZIP(), []int{90} } -func (m *WithdrawalEventsByExchangeRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_WithdrawalEventsByExchangeRequest.Unmarshal(m, b) -} -func (m *WithdrawalEventsByExchangeRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_WithdrawalEventsByExchangeRequest.Marshal(b, m, deterministic) -} -func (m *WithdrawalEventsByExchangeRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_WithdrawalEventsByExchangeRequest.Merge(m, src) -} -func (m *WithdrawalEventsByExchangeRequest) XXX_Size() int { - return xxx_messageInfo_WithdrawalEventsByExchangeRequest.Size(m) -} -func (m *WithdrawalEventsByExchangeRequest) XXX_DiscardUnknown() { - xxx_messageInfo_WithdrawalEventsByExchangeRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_WithdrawalEventsByExchangeRequest proto.InternalMessageInfo - -func (m *WithdrawalEventsByExchangeRequest) GetExchange() string { - if m != nil { - return m.Exchange +func (x *WithdrawalEventsByExchangeRequest) GetExchange() string { + if x != nil { + return x.Exchange } return "" } -func (m *WithdrawalEventsByExchangeRequest) GetId() string { - if m != nil { - return m.Id +func (x *WithdrawalEventsByExchangeRequest) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *WithdrawalEventsByExchangeRequest) GetLimit() int32 { - if m != nil { - return m.Limit +func (x *WithdrawalEventsByExchangeRequest) GetLimit() int32 { + if x != nil { + return x.Limit } return 0 } type WithdrawalEventsByDateRequest struct { - Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` - Start string `protobuf:"bytes,2,opt,name=start,proto3" json:"start,omitempty"` - End string `protobuf:"bytes,3,opt,name=end,proto3" json:"end,omitempty"` - Limit int32 `protobuf:"varint,4,opt,name=limit,proto3" json:"limit,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` + Start string `protobuf:"bytes,2,opt,name=start,proto3" json:"start,omitempty"` + End string `protobuf:"bytes,3,opt,name=end,proto3" json:"end,omitempty"` + Limit int32 `protobuf:"varint,4,opt,name=limit,proto3" json:"limit,omitempty"` } -func (m *WithdrawalEventsByDateRequest) Reset() { *m = WithdrawalEventsByDateRequest{} } -func (m *WithdrawalEventsByDateRequest) String() string { return proto.CompactTextString(m) } -func (*WithdrawalEventsByDateRequest) ProtoMessage() {} +func (x *WithdrawalEventsByDateRequest) Reset() { + *x = WithdrawalEventsByDateRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[91] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *WithdrawalEventsByDateRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WithdrawalEventsByDateRequest) ProtoMessage() {} + +func (x *WithdrawalEventsByDateRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[91] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WithdrawalEventsByDateRequest.ProtoReflect.Descriptor instead. func (*WithdrawalEventsByDateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{91} + return file_rpc_proto_rawDescGZIP(), []int{91} } -func (m *WithdrawalEventsByDateRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_WithdrawalEventsByDateRequest.Unmarshal(m, b) -} -func (m *WithdrawalEventsByDateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_WithdrawalEventsByDateRequest.Marshal(b, m, deterministic) -} -func (m *WithdrawalEventsByDateRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_WithdrawalEventsByDateRequest.Merge(m, src) -} -func (m *WithdrawalEventsByDateRequest) XXX_Size() int { - return xxx_messageInfo_WithdrawalEventsByDateRequest.Size(m) -} -func (m *WithdrawalEventsByDateRequest) XXX_DiscardUnknown() { - xxx_messageInfo_WithdrawalEventsByDateRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_WithdrawalEventsByDateRequest proto.InternalMessageInfo - -func (m *WithdrawalEventsByDateRequest) GetExchange() string { - if m != nil { - return m.Exchange +func (x *WithdrawalEventsByDateRequest) GetExchange() string { + if x != nil { + return x.Exchange } return "" } -func (m *WithdrawalEventsByDateRequest) GetStart() string { - if m != nil { - return m.Start +func (x *WithdrawalEventsByDateRequest) GetStart() string { + if x != nil { + return x.Start } return "" } -func (m *WithdrawalEventsByDateRequest) GetEnd() string { - if m != nil { - return m.End +func (x *WithdrawalEventsByDateRequest) GetEnd() string { + if x != nil { + return x.End } return "" } -func (m *WithdrawalEventsByDateRequest) GetLimit() int32 { - if m != nil { - return m.Limit +func (x *WithdrawalEventsByDateRequest) GetLimit() int32 { + if x != nil { + return x.Limit } return 0 } type WithdrawalEventsByExchangeResponse struct { - Event []*WithdrawalEventResponse `protobuf:"bytes,2,rep,name=event,proto3" json:"event,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Event []*WithdrawalEventResponse `protobuf:"bytes,2,rep,name=event,proto3" json:"event,omitempty"` } -func (m *WithdrawalEventsByExchangeResponse) Reset() { *m = WithdrawalEventsByExchangeResponse{} } -func (m *WithdrawalEventsByExchangeResponse) String() string { return proto.CompactTextString(m) } -func (*WithdrawalEventsByExchangeResponse) ProtoMessage() {} +func (x *WithdrawalEventsByExchangeResponse) Reset() { + *x = WithdrawalEventsByExchangeResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[92] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *WithdrawalEventsByExchangeResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WithdrawalEventsByExchangeResponse) ProtoMessage() {} + +func (x *WithdrawalEventsByExchangeResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[92] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WithdrawalEventsByExchangeResponse.ProtoReflect.Descriptor instead. func (*WithdrawalEventsByExchangeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{92} + return file_rpc_proto_rawDescGZIP(), []int{92} } -func (m *WithdrawalEventsByExchangeResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_WithdrawalEventsByExchangeResponse.Unmarshal(m, b) -} -func (m *WithdrawalEventsByExchangeResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_WithdrawalEventsByExchangeResponse.Marshal(b, m, deterministic) -} -func (m *WithdrawalEventsByExchangeResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_WithdrawalEventsByExchangeResponse.Merge(m, src) -} -func (m *WithdrawalEventsByExchangeResponse) XXX_Size() int { - return xxx_messageInfo_WithdrawalEventsByExchangeResponse.Size(m) -} -func (m *WithdrawalEventsByExchangeResponse) XXX_DiscardUnknown() { - xxx_messageInfo_WithdrawalEventsByExchangeResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_WithdrawalEventsByExchangeResponse proto.InternalMessageInfo - -func (m *WithdrawalEventsByExchangeResponse) GetEvent() []*WithdrawalEventResponse { - if m != nil { - return m.Event +func (x *WithdrawalEventsByExchangeResponse) GetEvent() []*WithdrawalEventResponse { + if x != nil { + return x.Event } return nil } type WithdrawalEventResponse struct { - Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` - Exchange *WithdrawlExchangeEvent `protobuf:"bytes,3,opt,name=exchange,proto3" json:"exchange,omitempty"` - Request *WithdrawalRequestEvent `protobuf:"bytes,4,opt,name=request,proto3" json:"request,omitempty"` - CreatedAt *timestamp.Timestamp `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt *timestamp.Timestamp `protobuf:"bytes,6,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` + Exchange *WithdrawlExchangeEvent `protobuf:"bytes,3,opt,name=exchange,proto3" json:"exchange,omitempty"` + Request *WithdrawalRequestEvent `protobuf:"bytes,4,opt,name=request,proto3" json:"request,omitempty"` + CreatedAt *timestamp.Timestamp `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamp.Timestamp `protobuf:"bytes,6,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` } -func (m *WithdrawalEventResponse) Reset() { *m = WithdrawalEventResponse{} } -func (m *WithdrawalEventResponse) String() string { return proto.CompactTextString(m) } -func (*WithdrawalEventResponse) ProtoMessage() {} +func (x *WithdrawalEventResponse) Reset() { + *x = WithdrawalEventResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[93] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *WithdrawalEventResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WithdrawalEventResponse) ProtoMessage() {} + +func (x *WithdrawalEventResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[93] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WithdrawalEventResponse.ProtoReflect.Descriptor instead. func (*WithdrawalEventResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{93} + return file_rpc_proto_rawDescGZIP(), []int{93} } -func (m *WithdrawalEventResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_WithdrawalEventResponse.Unmarshal(m, b) -} -func (m *WithdrawalEventResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_WithdrawalEventResponse.Marshal(b, m, deterministic) -} -func (m *WithdrawalEventResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_WithdrawalEventResponse.Merge(m, src) -} -func (m *WithdrawalEventResponse) XXX_Size() int { - return xxx_messageInfo_WithdrawalEventResponse.Size(m) -} -func (m *WithdrawalEventResponse) XXX_DiscardUnknown() { - xxx_messageInfo_WithdrawalEventResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_WithdrawalEventResponse proto.InternalMessageInfo - -func (m *WithdrawalEventResponse) GetId() string { - if m != nil { - return m.Id +func (x *WithdrawalEventResponse) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *WithdrawalEventResponse) GetExchange() *WithdrawlExchangeEvent { - if m != nil { - return m.Exchange +func (x *WithdrawalEventResponse) GetExchange() *WithdrawlExchangeEvent { + if x != nil { + return x.Exchange } return nil } -func (m *WithdrawalEventResponse) GetRequest() *WithdrawalRequestEvent { - if m != nil { - return m.Request +func (x *WithdrawalEventResponse) GetRequest() *WithdrawalRequestEvent { + if x != nil { + return x.Request } return nil } -func (m *WithdrawalEventResponse) GetCreatedAt() *timestamp.Timestamp { - if m != nil { - return m.CreatedAt +func (x *WithdrawalEventResponse) GetCreatedAt() *timestamp.Timestamp { + if x != nil { + return x.CreatedAt } return nil } -func (m *WithdrawalEventResponse) GetUpdatedAt() *timestamp.Timestamp { - if m != nil { - return m.UpdatedAt +func (x *WithdrawalEventResponse) GetUpdatedAt() *timestamp.Timestamp { + if x != nil { + return x.UpdatedAt } return nil } type WithdrawlExchangeEvent struct { - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` - Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` + Status string `protobuf:"bytes,3,opt,name=status,proto3" json:"status,omitempty"` } -func (m *WithdrawlExchangeEvent) Reset() { *m = WithdrawlExchangeEvent{} } -func (m *WithdrawlExchangeEvent) String() string { return proto.CompactTextString(m) } -func (*WithdrawlExchangeEvent) ProtoMessage() {} +func (x *WithdrawlExchangeEvent) Reset() { + *x = WithdrawlExchangeEvent{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[94] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *WithdrawlExchangeEvent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WithdrawlExchangeEvent) ProtoMessage() {} + +func (x *WithdrawlExchangeEvent) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[94] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WithdrawlExchangeEvent.ProtoReflect.Descriptor instead. func (*WithdrawlExchangeEvent) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{94} + return file_rpc_proto_rawDescGZIP(), []int{94} } -func (m *WithdrawlExchangeEvent) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_WithdrawlExchangeEvent.Unmarshal(m, b) -} -func (m *WithdrawlExchangeEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_WithdrawlExchangeEvent.Marshal(b, m, deterministic) -} -func (m *WithdrawlExchangeEvent) XXX_Merge(src proto.Message) { - xxx_messageInfo_WithdrawlExchangeEvent.Merge(m, src) -} -func (m *WithdrawlExchangeEvent) XXX_Size() int { - return xxx_messageInfo_WithdrawlExchangeEvent.Size(m) -} -func (m *WithdrawlExchangeEvent) XXX_DiscardUnknown() { - xxx_messageInfo_WithdrawlExchangeEvent.DiscardUnknown(m) -} - -var xxx_messageInfo_WithdrawlExchangeEvent proto.InternalMessageInfo - -func (m *WithdrawlExchangeEvent) GetName() string { - if m != nil { - return m.Name +func (x *WithdrawlExchangeEvent) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *WithdrawlExchangeEvent) GetId() string { - if m != nil { - return m.Id +func (x *WithdrawlExchangeEvent) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *WithdrawlExchangeEvent) GetStatus() string { - if m != nil { - return m.Status +func (x *WithdrawlExchangeEvent) GetStatus() string { + if x != nil { + return x.Status } return "" } type WithdrawalRequestEvent struct { - Currency string `protobuf:"bytes,2,opt,name=currency,proto3" json:"currency,omitempty"` - Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` - Amount float64 `protobuf:"fixed64,4,opt,name=amount,proto3" json:"amount,omitempty"` - Type int32 `protobuf:"varint,5,opt,name=type,proto3" json:"type,omitempty"` - Fiat *FiatWithdrawalEvent `protobuf:"bytes,6,opt,name=fiat,proto3" json:"fiat,omitempty"` - Crypto *CryptoWithdrawalEvent `protobuf:"bytes,7,opt,name=crypto,proto3" json:"crypto,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Currency string `protobuf:"bytes,2,opt,name=currency,proto3" json:"currency,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + Amount float64 `protobuf:"fixed64,4,opt,name=amount,proto3" json:"amount,omitempty"` + Type int32 `protobuf:"varint,5,opt,name=type,proto3" json:"type,omitempty"` + Fiat *FiatWithdrawalEvent `protobuf:"bytes,6,opt,name=fiat,proto3" json:"fiat,omitempty"` + Crypto *CryptoWithdrawalEvent `protobuf:"bytes,7,opt,name=crypto,proto3" json:"crypto,omitempty"` } -func (m *WithdrawalRequestEvent) Reset() { *m = WithdrawalRequestEvent{} } -func (m *WithdrawalRequestEvent) String() string { return proto.CompactTextString(m) } -func (*WithdrawalRequestEvent) ProtoMessage() {} +func (x *WithdrawalRequestEvent) Reset() { + *x = WithdrawalRequestEvent{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[95] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *WithdrawalRequestEvent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WithdrawalRequestEvent) ProtoMessage() {} + +func (x *WithdrawalRequestEvent) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[95] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WithdrawalRequestEvent.ProtoReflect.Descriptor instead. func (*WithdrawalRequestEvent) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{95} + return file_rpc_proto_rawDescGZIP(), []int{95} } -func (m *WithdrawalRequestEvent) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_WithdrawalRequestEvent.Unmarshal(m, b) -} -func (m *WithdrawalRequestEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_WithdrawalRequestEvent.Marshal(b, m, deterministic) -} -func (m *WithdrawalRequestEvent) XXX_Merge(src proto.Message) { - xxx_messageInfo_WithdrawalRequestEvent.Merge(m, src) -} -func (m *WithdrawalRequestEvent) XXX_Size() int { - return xxx_messageInfo_WithdrawalRequestEvent.Size(m) -} -func (m *WithdrawalRequestEvent) XXX_DiscardUnknown() { - xxx_messageInfo_WithdrawalRequestEvent.DiscardUnknown(m) -} - -var xxx_messageInfo_WithdrawalRequestEvent proto.InternalMessageInfo - -func (m *WithdrawalRequestEvent) GetCurrency() string { - if m != nil { - return m.Currency +func (x *WithdrawalRequestEvent) GetCurrency() string { + if x != nil { + return x.Currency } return "" } -func (m *WithdrawalRequestEvent) GetDescription() string { - if m != nil { - return m.Description +func (x *WithdrawalRequestEvent) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *WithdrawalRequestEvent) GetAmount() float64 { - if m != nil { - return m.Amount +func (x *WithdrawalRequestEvent) GetAmount() float64 { + if x != nil { + return x.Amount } return 0 } -func (m *WithdrawalRequestEvent) GetType() int32 { - if m != nil { - return m.Type +func (x *WithdrawalRequestEvent) GetType() int32 { + if x != nil { + return x.Type } return 0 } -func (m *WithdrawalRequestEvent) GetFiat() *FiatWithdrawalEvent { - if m != nil { - return m.Fiat +func (x *WithdrawalRequestEvent) GetFiat() *FiatWithdrawalEvent { + if x != nil { + return x.Fiat } return nil } -func (m *WithdrawalRequestEvent) GetCrypto() *CryptoWithdrawalEvent { - if m != nil { - return m.Crypto +func (x *WithdrawalRequestEvent) GetCrypto() *CryptoWithdrawalEvent { + if x != nil { + return x.Crypto } return nil } type FiatWithdrawalEvent struct { - BankName string `protobuf:"bytes,1,opt,name=bank_name,json=bankName,proto3" json:"bank_name,omitempty"` - AccountName string `protobuf:"bytes,2,opt,name=account_name,json=accountName,proto3" json:"account_name,omitempty"` - AccountNumber string `protobuf:"bytes,3,opt,name=account_number,json=accountNumber,proto3" json:"account_number,omitempty"` - Bsb string `protobuf:"bytes,4,opt,name=bsb,proto3" json:"bsb,omitempty"` - Swift string `protobuf:"bytes,5,opt,name=swift,proto3" json:"swift,omitempty"` - Iban string `protobuf:"bytes,6,opt,name=iban,proto3" json:"iban,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + BankName string `protobuf:"bytes,1,opt,name=bank_name,json=bankName,proto3" json:"bank_name,omitempty"` + AccountName string `protobuf:"bytes,2,opt,name=account_name,json=accountName,proto3" json:"account_name,omitempty"` + AccountNumber string `protobuf:"bytes,3,opt,name=account_number,json=accountNumber,proto3" json:"account_number,omitempty"` + Bsb string `protobuf:"bytes,4,opt,name=bsb,proto3" json:"bsb,omitempty"` + Swift string `protobuf:"bytes,5,opt,name=swift,proto3" json:"swift,omitempty"` + Iban string `protobuf:"bytes,6,opt,name=iban,proto3" json:"iban,omitempty"` } -func (m *FiatWithdrawalEvent) Reset() { *m = FiatWithdrawalEvent{} } -func (m *FiatWithdrawalEvent) String() string { return proto.CompactTextString(m) } -func (*FiatWithdrawalEvent) ProtoMessage() {} +func (x *FiatWithdrawalEvent) Reset() { + *x = FiatWithdrawalEvent{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[96] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *FiatWithdrawalEvent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FiatWithdrawalEvent) ProtoMessage() {} + +func (x *FiatWithdrawalEvent) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[96] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FiatWithdrawalEvent.ProtoReflect.Descriptor instead. func (*FiatWithdrawalEvent) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{96} + return file_rpc_proto_rawDescGZIP(), []int{96} } -func (m *FiatWithdrawalEvent) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_FiatWithdrawalEvent.Unmarshal(m, b) -} -func (m *FiatWithdrawalEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_FiatWithdrawalEvent.Marshal(b, m, deterministic) -} -func (m *FiatWithdrawalEvent) XXX_Merge(src proto.Message) { - xxx_messageInfo_FiatWithdrawalEvent.Merge(m, src) -} -func (m *FiatWithdrawalEvent) XXX_Size() int { - return xxx_messageInfo_FiatWithdrawalEvent.Size(m) -} -func (m *FiatWithdrawalEvent) XXX_DiscardUnknown() { - xxx_messageInfo_FiatWithdrawalEvent.DiscardUnknown(m) -} - -var xxx_messageInfo_FiatWithdrawalEvent proto.InternalMessageInfo - -func (m *FiatWithdrawalEvent) GetBankName() string { - if m != nil { - return m.BankName +func (x *FiatWithdrawalEvent) GetBankName() string { + if x != nil { + return x.BankName } return "" } -func (m *FiatWithdrawalEvent) GetAccountName() string { - if m != nil { - return m.AccountName +func (x *FiatWithdrawalEvent) GetAccountName() string { + if x != nil { + return x.AccountName } return "" } -func (m *FiatWithdrawalEvent) GetAccountNumber() string { - if m != nil { - return m.AccountNumber +func (x *FiatWithdrawalEvent) GetAccountNumber() string { + if x != nil { + return x.AccountNumber } return "" } -func (m *FiatWithdrawalEvent) GetBsb() string { - if m != nil { - return m.Bsb +func (x *FiatWithdrawalEvent) GetBsb() string { + if x != nil { + return x.Bsb } return "" } -func (m *FiatWithdrawalEvent) GetSwift() string { - if m != nil { - return m.Swift +func (x *FiatWithdrawalEvent) GetSwift() string { + if x != nil { + return x.Swift } return "" } -func (m *FiatWithdrawalEvent) GetIban() string { - if m != nil { - return m.Iban +func (x *FiatWithdrawalEvent) GetIban() string { + if x != nil { + return x.Iban } return "" } type CryptoWithdrawalEvent struct { - Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` - AddressTag string `protobuf:"bytes,2,opt,name=address_tag,json=addressTag,proto3" json:"address_tag,omitempty"` - Fee float64 `protobuf:"fixed64,3,opt,name=fee,proto3" json:"fee,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` + AddressTag string `protobuf:"bytes,2,opt,name=address_tag,json=addressTag,proto3" json:"address_tag,omitempty"` + Fee float64 `protobuf:"fixed64,3,opt,name=fee,proto3" json:"fee,omitempty"` } -func (m *CryptoWithdrawalEvent) Reset() { *m = CryptoWithdrawalEvent{} } -func (m *CryptoWithdrawalEvent) String() string { return proto.CompactTextString(m) } -func (*CryptoWithdrawalEvent) ProtoMessage() {} +func (x *CryptoWithdrawalEvent) Reset() { + *x = CryptoWithdrawalEvent{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[97] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CryptoWithdrawalEvent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CryptoWithdrawalEvent) ProtoMessage() {} + +func (x *CryptoWithdrawalEvent) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[97] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CryptoWithdrawalEvent.ProtoReflect.Descriptor instead. func (*CryptoWithdrawalEvent) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{97} + return file_rpc_proto_rawDescGZIP(), []int{97} } -func (m *CryptoWithdrawalEvent) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CryptoWithdrawalEvent.Unmarshal(m, b) -} -func (m *CryptoWithdrawalEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CryptoWithdrawalEvent.Marshal(b, m, deterministic) -} -func (m *CryptoWithdrawalEvent) XXX_Merge(src proto.Message) { - xxx_messageInfo_CryptoWithdrawalEvent.Merge(m, src) -} -func (m *CryptoWithdrawalEvent) XXX_Size() int { - return xxx_messageInfo_CryptoWithdrawalEvent.Size(m) -} -func (m *CryptoWithdrawalEvent) XXX_DiscardUnknown() { - xxx_messageInfo_CryptoWithdrawalEvent.DiscardUnknown(m) -} - -var xxx_messageInfo_CryptoWithdrawalEvent proto.InternalMessageInfo - -func (m *CryptoWithdrawalEvent) GetAddress() string { - if m != nil { - return m.Address +func (x *CryptoWithdrawalEvent) GetAddress() string { + if x != nil { + return x.Address } return "" } -func (m *CryptoWithdrawalEvent) GetAddressTag() string { - if m != nil { - return m.AddressTag +func (x *CryptoWithdrawalEvent) GetAddressTag() string { + if x != nil { + return x.AddressTag } return "" } -func (m *CryptoWithdrawalEvent) GetFee() float64 { - if m != nil { - return m.Fee +func (x *CryptoWithdrawalEvent) GetFee() float64 { + if x != nil { + return x.Fee } return 0 } type GetLoggerDetailsRequest struct { - Logger string `protobuf:"bytes,1,opt,name=logger,proto3" json:"logger,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Logger string `protobuf:"bytes,1,opt,name=logger,proto3" json:"logger,omitempty"` } -func (m *GetLoggerDetailsRequest) Reset() { *m = GetLoggerDetailsRequest{} } -func (m *GetLoggerDetailsRequest) String() string { return proto.CompactTextString(m) } -func (*GetLoggerDetailsRequest) ProtoMessage() {} +func (x *GetLoggerDetailsRequest) Reset() { + *x = GetLoggerDetailsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[98] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetLoggerDetailsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetLoggerDetailsRequest) ProtoMessage() {} + +func (x *GetLoggerDetailsRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[98] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetLoggerDetailsRequest.ProtoReflect.Descriptor instead. func (*GetLoggerDetailsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{98} + return file_rpc_proto_rawDescGZIP(), []int{98} } -func (m *GetLoggerDetailsRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetLoggerDetailsRequest.Unmarshal(m, b) -} -func (m *GetLoggerDetailsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetLoggerDetailsRequest.Marshal(b, m, deterministic) -} -func (m *GetLoggerDetailsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetLoggerDetailsRequest.Merge(m, src) -} -func (m *GetLoggerDetailsRequest) XXX_Size() int { - return xxx_messageInfo_GetLoggerDetailsRequest.Size(m) -} -func (m *GetLoggerDetailsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetLoggerDetailsRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_GetLoggerDetailsRequest proto.InternalMessageInfo - -func (m *GetLoggerDetailsRequest) GetLogger() string { - if m != nil { - return m.Logger +func (x *GetLoggerDetailsRequest) GetLogger() string { + if x != nil { + return x.Logger } return "" } type GetLoggerDetailsResponse struct { - Info bool `protobuf:"varint,1,opt,name=info,proto3" json:"info,omitempty"` - Debug bool `protobuf:"varint,2,opt,name=debug,proto3" json:"debug,omitempty"` - Warn bool `protobuf:"varint,3,opt,name=warn,proto3" json:"warn,omitempty"` - Error bool `protobuf:"varint,4,opt,name=error,proto3" json:"error,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Info bool `protobuf:"varint,1,opt,name=info,proto3" json:"info,omitempty"` + Debug bool `protobuf:"varint,2,opt,name=debug,proto3" json:"debug,omitempty"` + Warn bool `protobuf:"varint,3,opt,name=warn,proto3" json:"warn,omitempty"` + Error bool `protobuf:"varint,4,opt,name=error,proto3" json:"error,omitempty"` } -func (m *GetLoggerDetailsResponse) Reset() { *m = GetLoggerDetailsResponse{} } -func (m *GetLoggerDetailsResponse) String() string { return proto.CompactTextString(m) } -func (*GetLoggerDetailsResponse) ProtoMessage() {} +func (x *GetLoggerDetailsResponse) Reset() { + *x = GetLoggerDetailsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[99] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetLoggerDetailsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetLoggerDetailsResponse) ProtoMessage() {} + +func (x *GetLoggerDetailsResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[99] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetLoggerDetailsResponse.ProtoReflect.Descriptor instead. func (*GetLoggerDetailsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{99} + return file_rpc_proto_rawDescGZIP(), []int{99} } -func (m *GetLoggerDetailsResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetLoggerDetailsResponse.Unmarshal(m, b) -} -func (m *GetLoggerDetailsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetLoggerDetailsResponse.Marshal(b, m, deterministic) -} -func (m *GetLoggerDetailsResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetLoggerDetailsResponse.Merge(m, src) -} -func (m *GetLoggerDetailsResponse) XXX_Size() int { - return xxx_messageInfo_GetLoggerDetailsResponse.Size(m) -} -func (m *GetLoggerDetailsResponse) XXX_DiscardUnknown() { - xxx_messageInfo_GetLoggerDetailsResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_GetLoggerDetailsResponse proto.InternalMessageInfo - -func (m *GetLoggerDetailsResponse) GetInfo() bool { - if m != nil { - return m.Info +func (x *GetLoggerDetailsResponse) GetInfo() bool { + if x != nil { + return x.Info } return false } -func (m *GetLoggerDetailsResponse) GetDebug() bool { - if m != nil { - return m.Debug +func (x *GetLoggerDetailsResponse) GetDebug() bool { + if x != nil { + return x.Debug } return false } -func (m *GetLoggerDetailsResponse) GetWarn() bool { - if m != nil { - return m.Warn +func (x *GetLoggerDetailsResponse) GetWarn() bool { + if x != nil { + return x.Warn } return false } -func (m *GetLoggerDetailsResponse) GetError() bool { - if m != nil { - return m.Error +func (x *GetLoggerDetailsResponse) GetError() bool { + if x != nil { + return x.Error } return false } type SetLoggerDetailsRequest struct { - Logger string `protobuf:"bytes,1,opt,name=logger,proto3" json:"logger,omitempty"` - Level string `protobuf:"bytes,2,opt,name=level,proto3" json:"level,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Logger string `protobuf:"bytes,1,opt,name=logger,proto3" json:"logger,omitempty"` + Level string `protobuf:"bytes,2,opt,name=level,proto3" json:"level,omitempty"` } -func (m *SetLoggerDetailsRequest) Reset() { *m = SetLoggerDetailsRequest{} } -func (m *SetLoggerDetailsRequest) String() string { return proto.CompactTextString(m) } -func (*SetLoggerDetailsRequest) ProtoMessage() {} +func (x *SetLoggerDetailsRequest) Reset() { + *x = SetLoggerDetailsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[100] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SetLoggerDetailsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SetLoggerDetailsRequest) ProtoMessage() {} + +func (x *SetLoggerDetailsRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[100] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SetLoggerDetailsRequest.ProtoReflect.Descriptor instead. func (*SetLoggerDetailsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{100} + return file_rpc_proto_rawDescGZIP(), []int{100} } -func (m *SetLoggerDetailsRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SetLoggerDetailsRequest.Unmarshal(m, b) -} -func (m *SetLoggerDetailsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_SetLoggerDetailsRequest.Marshal(b, m, deterministic) -} -func (m *SetLoggerDetailsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_SetLoggerDetailsRequest.Merge(m, src) -} -func (m *SetLoggerDetailsRequest) XXX_Size() int { - return xxx_messageInfo_SetLoggerDetailsRequest.Size(m) -} -func (m *SetLoggerDetailsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_SetLoggerDetailsRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_SetLoggerDetailsRequest proto.InternalMessageInfo - -func (m *SetLoggerDetailsRequest) GetLogger() string { - if m != nil { - return m.Logger +func (x *SetLoggerDetailsRequest) GetLogger() string { + if x != nil { + return x.Logger } return "" } -func (m *SetLoggerDetailsRequest) GetLevel() string { - if m != nil { - return m.Level +func (x *SetLoggerDetailsRequest) GetLevel() string { + if x != nil { + return x.Level } return "" } type GetExchangePairsRequest struct { - Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` - Asset string `protobuf:"bytes,2,opt,name=asset,proto3" json:"asset,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` + Asset string `protobuf:"bytes,2,opt,name=asset,proto3" json:"asset,omitempty"` } -func (m *GetExchangePairsRequest) Reset() { *m = GetExchangePairsRequest{} } -func (m *GetExchangePairsRequest) String() string { return proto.CompactTextString(m) } -func (*GetExchangePairsRequest) ProtoMessage() {} +func (x *GetExchangePairsRequest) Reset() { + *x = GetExchangePairsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[101] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetExchangePairsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetExchangePairsRequest) ProtoMessage() {} + +func (x *GetExchangePairsRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[101] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetExchangePairsRequest.ProtoReflect.Descriptor instead. func (*GetExchangePairsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{101} + return file_rpc_proto_rawDescGZIP(), []int{101} } -func (m *GetExchangePairsRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetExchangePairsRequest.Unmarshal(m, b) -} -func (m *GetExchangePairsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetExchangePairsRequest.Marshal(b, m, deterministic) -} -func (m *GetExchangePairsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetExchangePairsRequest.Merge(m, src) -} -func (m *GetExchangePairsRequest) XXX_Size() int { - return xxx_messageInfo_GetExchangePairsRequest.Size(m) -} -func (m *GetExchangePairsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetExchangePairsRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_GetExchangePairsRequest proto.InternalMessageInfo - -func (m *GetExchangePairsRequest) GetExchange() string { - if m != nil { - return m.Exchange +func (x *GetExchangePairsRequest) GetExchange() string { + if x != nil { + return x.Exchange } return "" } -func (m *GetExchangePairsRequest) GetAsset() string { - if m != nil { - return m.Asset +func (x *GetExchangePairsRequest) GetAsset() string { + if x != nil { + return x.Asset } return "" } type GetExchangePairsResponse struct { - SupportedAssets map[string]*PairsSupported `protobuf:"bytes,1,rep,name=supported_assets,json=supportedAssets,proto3" json:"supported_assets,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SupportedAssets map[string]*PairsSupported `protobuf:"bytes,1,rep,name=supported_assets,json=supportedAssets,proto3" json:"supported_assets,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func (m *GetExchangePairsResponse) Reset() { *m = GetExchangePairsResponse{} } -func (m *GetExchangePairsResponse) String() string { return proto.CompactTextString(m) } -func (*GetExchangePairsResponse) ProtoMessage() {} +func (x *GetExchangePairsResponse) Reset() { + *x = GetExchangePairsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[102] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetExchangePairsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetExchangePairsResponse) ProtoMessage() {} + +func (x *GetExchangePairsResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[102] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetExchangePairsResponse.ProtoReflect.Descriptor instead. func (*GetExchangePairsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{102} + return file_rpc_proto_rawDescGZIP(), []int{102} } -func (m *GetExchangePairsResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetExchangePairsResponse.Unmarshal(m, b) -} -func (m *GetExchangePairsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetExchangePairsResponse.Marshal(b, m, deterministic) -} -func (m *GetExchangePairsResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetExchangePairsResponse.Merge(m, src) -} -func (m *GetExchangePairsResponse) XXX_Size() int { - return xxx_messageInfo_GetExchangePairsResponse.Size(m) -} -func (m *GetExchangePairsResponse) XXX_DiscardUnknown() { - xxx_messageInfo_GetExchangePairsResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_GetExchangePairsResponse proto.InternalMessageInfo - -func (m *GetExchangePairsResponse) GetSupportedAssets() map[string]*PairsSupported { - if m != nil { - return m.SupportedAssets +func (x *GetExchangePairsResponse) GetSupportedAssets() map[string]*PairsSupported { + if x != nil { + return x.SupportedAssets } return nil } type ExchangePairRequest struct { - Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` - AssetType string `protobuf:"bytes,2,opt,name=asset_type,json=assetType,proto3" json:"asset_type,omitempty"` - Pair *CurrencyPair `protobuf:"bytes,3,opt,name=pair,proto3" json:"pair,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` + AssetType string `protobuf:"bytes,2,opt,name=asset_type,json=assetType,proto3" json:"asset_type,omitempty"` + Pair *CurrencyPair `protobuf:"bytes,3,opt,name=pair,proto3" json:"pair,omitempty"` } -func (m *ExchangePairRequest) Reset() { *m = ExchangePairRequest{} } -func (m *ExchangePairRequest) String() string { return proto.CompactTextString(m) } -func (*ExchangePairRequest) ProtoMessage() {} +func (x *ExchangePairRequest) Reset() { + *x = ExchangePairRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[103] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ExchangePairRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExchangePairRequest) ProtoMessage() {} + +func (x *ExchangePairRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[103] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExchangePairRequest.ProtoReflect.Descriptor instead. func (*ExchangePairRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{103} + return file_rpc_proto_rawDescGZIP(), []int{103} } -func (m *ExchangePairRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ExchangePairRequest.Unmarshal(m, b) -} -func (m *ExchangePairRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ExchangePairRequest.Marshal(b, m, deterministic) -} -func (m *ExchangePairRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ExchangePairRequest.Merge(m, src) -} -func (m *ExchangePairRequest) XXX_Size() int { - return xxx_messageInfo_ExchangePairRequest.Size(m) -} -func (m *ExchangePairRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ExchangePairRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_ExchangePairRequest proto.InternalMessageInfo - -func (m *ExchangePairRequest) GetExchange() string { - if m != nil { - return m.Exchange +func (x *ExchangePairRequest) GetExchange() string { + if x != nil { + return x.Exchange } return "" } -func (m *ExchangePairRequest) GetAssetType() string { - if m != nil { - return m.AssetType +func (x *ExchangePairRequest) GetAssetType() string { + if x != nil { + return x.AssetType } return "" } -func (m *ExchangePairRequest) GetPair() *CurrencyPair { - if m != nil { - return m.Pair +func (x *ExchangePairRequest) GetPair() *CurrencyPair { + if x != nil { + return x.Pair } return nil } type GetOrderbookStreamRequest struct { - Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` - Pair *CurrencyPair `protobuf:"bytes,2,opt,name=pair,proto3" json:"pair,omitempty"` - AssetType string `protobuf:"bytes,3,opt,name=asset_type,json=assetType,proto3" json:"asset_type,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` + Pair *CurrencyPair `protobuf:"bytes,2,opt,name=pair,proto3" json:"pair,omitempty"` + AssetType string `protobuf:"bytes,3,opt,name=asset_type,json=assetType,proto3" json:"asset_type,omitempty"` } -func (m *GetOrderbookStreamRequest) Reset() { *m = GetOrderbookStreamRequest{} } -func (m *GetOrderbookStreamRequest) String() string { return proto.CompactTextString(m) } -func (*GetOrderbookStreamRequest) ProtoMessage() {} +func (x *GetOrderbookStreamRequest) Reset() { + *x = GetOrderbookStreamRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[104] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetOrderbookStreamRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetOrderbookStreamRequest) ProtoMessage() {} + +func (x *GetOrderbookStreamRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[104] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetOrderbookStreamRequest.ProtoReflect.Descriptor instead. func (*GetOrderbookStreamRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{104} + return file_rpc_proto_rawDescGZIP(), []int{104} } -func (m *GetOrderbookStreamRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetOrderbookStreamRequest.Unmarshal(m, b) -} -func (m *GetOrderbookStreamRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetOrderbookStreamRequest.Marshal(b, m, deterministic) -} -func (m *GetOrderbookStreamRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetOrderbookStreamRequest.Merge(m, src) -} -func (m *GetOrderbookStreamRequest) XXX_Size() int { - return xxx_messageInfo_GetOrderbookStreamRequest.Size(m) -} -func (m *GetOrderbookStreamRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetOrderbookStreamRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_GetOrderbookStreamRequest proto.InternalMessageInfo - -func (m *GetOrderbookStreamRequest) GetExchange() string { - if m != nil { - return m.Exchange +func (x *GetOrderbookStreamRequest) GetExchange() string { + if x != nil { + return x.Exchange } return "" } -func (m *GetOrderbookStreamRequest) GetPair() *CurrencyPair { - if m != nil { - return m.Pair +func (x *GetOrderbookStreamRequest) GetPair() *CurrencyPair { + if x != nil { + return x.Pair } return nil } -func (m *GetOrderbookStreamRequest) GetAssetType() string { - if m != nil { - return m.AssetType +func (x *GetOrderbookStreamRequest) GetAssetType() string { + if x != nil { + return x.AssetType } return "" } type GetExchangeOrderbookStreamRequest struct { - Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` } -func (m *GetExchangeOrderbookStreamRequest) Reset() { *m = GetExchangeOrderbookStreamRequest{} } -func (m *GetExchangeOrderbookStreamRequest) String() string { return proto.CompactTextString(m) } -func (*GetExchangeOrderbookStreamRequest) ProtoMessage() {} +func (x *GetExchangeOrderbookStreamRequest) Reset() { + *x = GetExchangeOrderbookStreamRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[105] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetExchangeOrderbookStreamRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetExchangeOrderbookStreamRequest) ProtoMessage() {} + +func (x *GetExchangeOrderbookStreamRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[105] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetExchangeOrderbookStreamRequest.ProtoReflect.Descriptor instead. func (*GetExchangeOrderbookStreamRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{105} + return file_rpc_proto_rawDescGZIP(), []int{105} } -func (m *GetExchangeOrderbookStreamRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetExchangeOrderbookStreamRequest.Unmarshal(m, b) -} -func (m *GetExchangeOrderbookStreamRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetExchangeOrderbookStreamRequest.Marshal(b, m, deterministic) -} -func (m *GetExchangeOrderbookStreamRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetExchangeOrderbookStreamRequest.Merge(m, src) -} -func (m *GetExchangeOrderbookStreamRequest) XXX_Size() int { - return xxx_messageInfo_GetExchangeOrderbookStreamRequest.Size(m) -} -func (m *GetExchangeOrderbookStreamRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetExchangeOrderbookStreamRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_GetExchangeOrderbookStreamRequest proto.InternalMessageInfo - -func (m *GetExchangeOrderbookStreamRequest) GetExchange() string { - if m != nil { - return m.Exchange +func (x *GetExchangeOrderbookStreamRequest) GetExchange() string { + if x != nil { + return x.Exchange } return "" } type GetTickerStreamRequest struct { - Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` - Pair *CurrencyPair `protobuf:"bytes,2,opt,name=pair,proto3" json:"pair,omitempty"` - AssetType string `protobuf:"bytes,3,opt,name=asset_type,json=assetType,proto3" json:"asset_type,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` + Pair *CurrencyPair `protobuf:"bytes,2,opt,name=pair,proto3" json:"pair,omitempty"` + AssetType string `protobuf:"bytes,3,opt,name=asset_type,json=assetType,proto3" json:"asset_type,omitempty"` } -func (m *GetTickerStreamRequest) Reset() { *m = GetTickerStreamRequest{} } -func (m *GetTickerStreamRequest) String() string { return proto.CompactTextString(m) } -func (*GetTickerStreamRequest) ProtoMessage() {} +func (x *GetTickerStreamRequest) Reset() { + *x = GetTickerStreamRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[106] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetTickerStreamRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetTickerStreamRequest) ProtoMessage() {} + +func (x *GetTickerStreamRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[106] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetTickerStreamRequest.ProtoReflect.Descriptor instead. func (*GetTickerStreamRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{106} + return file_rpc_proto_rawDescGZIP(), []int{106} } -func (m *GetTickerStreamRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetTickerStreamRequest.Unmarshal(m, b) -} -func (m *GetTickerStreamRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetTickerStreamRequest.Marshal(b, m, deterministic) -} -func (m *GetTickerStreamRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetTickerStreamRequest.Merge(m, src) -} -func (m *GetTickerStreamRequest) XXX_Size() int { - return xxx_messageInfo_GetTickerStreamRequest.Size(m) -} -func (m *GetTickerStreamRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetTickerStreamRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_GetTickerStreamRequest proto.InternalMessageInfo - -func (m *GetTickerStreamRequest) GetExchange() string { - if m != nil { - return m.Exchange +func (x *GetTickerStreamRequest) GetExchange() string { + if x != nil { + return x.Exchange } return "" } -func (m *GetTickerStreamRequest) GetPair() *CurrencyPair { - if m != nil { - return m.Pair +func (x *GetTickerStreamRequest) GetPair() *CurrencyPair { + if x != nil { + return x.Pair } return nil } -func (m *GetTickerStreamRequest) GetAssetType() string { - if m != nil { - return m.AssetType +func (x *GetTickerStreamRequest) GetAssetType() string { + if x != nil { + return x.AssetType } return "" } type GetExchangeTickerStreamRequest struct { - Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` } -func (m *GetExchangeTickerStreamRequest) Reset() { *m = GetExchangeTickerStreamRequest{} } -func (m *GetExchangeTickerStreamRequest) String() string { return proto.CompactTextString(m) } -func (*GetExchangeTickerStreamRequest) ProtoMessage() {} +func (x *GetExchangeTickerStreamRequest) Reset() { + *x = GetExchangeTickerStreamRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[107] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetExchangeTickerStreamRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetExchangeTickerStreamRequest) ProtoMessage() {} + +func (x *GetExchangeTickerStreamRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[107] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetExchangeTickerStreamRequest.ProtoReflect.Descriptor instead. func (*GetExchangeTickerStreamRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{107} + return file_rpc_proto_rawDescGZIP(), []int{107} } -func (m *GetExchangeTickerStreamRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetExchangeTickerStreamRequest.Unmarshal(m, b) -} -func (m *GetExchangeTickerStreamRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetExchangeTickerStreamRequest.Marshal(b, m, deterministic) -} -func (m *GetExchangeTickerStreamRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetExchangeTickerStreamRequest.Merge(m, src) -} -func (m *GetExchangeTickerStreamRequest) XXX_Size() int { - return xxx_messageInfo_GetExchangeTickerStreamRequest.Size(m) -} -func (m *GetExchangeTickerStreamRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetExchangeTickerStreamRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_GetExchangeTickerStreamRequest proto.InternalMessageInfo - -func (m *GetExchangeTickerStreamRequest) GetExchange() string { - if m != nil { - return m.Exchange +func (x *GetExchangeTickerStreamRequest) GetExchange() string { + if x != nil { + return x.Exchange } return "" } type GetAuditEventRequest struct { - StartDate string `protobuf:"bytes,1,opt,name=start_date,json=startDate,proto3" json:"start_date,omitempty"` - EndDate string `protobuf:"bytes,2,opt,name=end_date,json=endDate,proto3" json:"end_date,omitempty"` - OrderBy string `protobuf:"bytes,3,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"` - Limit int32 `protobuf:"varint,4,opt,name=limit,proto3" json:"limit,omitempty"` - Offset int32 `protobuf:"varint,5,opt,name=offset,proto3" json:"offset,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + StartDate string `protobuf:"bytes,1,opt,name=start_date,json=startDate,proto3" json:"start_date,omitempty"` + EndDate string `protobuf:"bytes,2,opt,name=end_date,json=endDate,proto3" json:"end_date,omitempty"` + OrderBy string `protobuf:"bytes,3,opt,name=order_by,json=orderBy,proto3" json:"order_by,omitempty"` + Limit int32 `protobuf:"varint,4,opt,name=limit,proto3" json:"limit,omitempty"` + Offset int32 `protobuf:"varint,5,opt,name=offset,proto3" json:"offset,omitempty"` } -func (m *GetAuditEventRequest) Reset() { *m = GetAuditEventRequest{} } -func (m *GetAuditEventRequest) String() string { return proto.CompactTextString(m) } -func (*GetAuditEventRequest) ProtoMessage() {} +func (x *GetAuditEventRequest) Reset() { + *x = GetAuditEventRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[108] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetAuditEventRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetAuditEventRequest) ProtoMessage() {} + +func (x *GetAuditEventRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[108] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetAuditEventRequest.ProtoReflect.Descriptor instead. func (*GetAuditEventRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{108} + return file_rpc_proto_rawDescGZIP(), []int{108} } -func (m *GetAuditEventRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetAuditEventRequest.Unmarshal(m, b) -} -func (m *GetAuditEventRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetAuditEventRequest.Marshal(b, m, deterministic) -} -func (m *GetAuditEventRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetAuditEventRequest.Merge(m, src) -} -func (m *GetAuditEventRequest) XXX_Size() int { - return xxx_messageInfo_GetAuditEventRequest.Size(m) -} -func (m *GetAuditEventRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetAuditEventRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_GetAuditEventRequest proto.InternalMessageInfo - -func (m *GetAuditEventRequest) GetStartDate() string { - if m != nil { - return m.StartDate +func (x *GetAuditEventRequest) GetStartDate() string { + if x != nil { + return x.StartDate } return "" } -func (m *GetAuditEventRequest) GetEndDate() string { - if m != nil { - return m.EndDate +func (x *GetAuditEventRequest) GetEndDate() string { + if x != nil { + return x.EndDate } return "" } -func (m *GetAuditEventRequest) GetOrderBy() string { - if m != nil { - return m.OrderBy +func (x *GetAuditEventRequest) GetOrderBy() string { + if x != nil { + return x.OrderBy } return "" } -func (m *GetAuditEventRequest) GetLimit() int32 { - if m != nil { - return m.Limit +func (x *GetAuditEventRequest) GetLimit() int32 { + if x != nil { + return x.Limit } return 0 } -func (m *GetAuditEventRequest) GetOffset() int32 { - if m != nil { - return m.Offset +func (x *GetAuditEventRequest) GetOffset() int32 { + if x != nil { + return x.Offset } return 0 } type GetAuditEventResponse struct { - Events []*AuditEvent `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Events []*AuditEvent `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"` } -func (m *GetAuditEventResponse) Reset() { *m = GetAuditEventResponse{} } -func (m *GetAuditEventResponse) String() string { return proto.CompactTextString(m) } -func (*GetAuditEventResponse) ProtoMessage() {} +func (x *GetAuditEventResponse) Reset() { + *x = GetAuditEventResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[109] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetAuditEventResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetAuditEventResponse) ProtoMessage() {} + +func (x *GetAuditEventResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[109] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetAuditEventResponse.ProtoReflect.Descriptor instead. func (*GetAuditEventResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{109} + return file_rpc_proto_rawDescGZIP(), []int{109} } -func (m *GetAuditEventResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetAuditEventResponse.Unmarshal(m, b) -} -func (m *GetAuditEventResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetAuditEventResponse.Marshal(b, m, deterministic) -} -func (m *GetAuditEventResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetAuditEventResponse.Merge(m, src) -} -func (m *GetAuditEventResponse) XXX_Size() int { - return xxx_messageInfo_GetAuditEventResponse.Size(m) -} -func (m *GetAuditEventResponse) XXX_DiscardUnknown() { - xxx_messageInfo_GetAuditEventResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_GetAuditEventResponse proto.InternalMessageInfo - -func (m *GetAuditEventResponse) GetEvents() []*AuditEvent { - if m != nil { - return m.Events +func (x *GetAuditEventResponse) GetEvents() []*AuditEvent { + if x != nil { + return x.Events } return nil } type GetHistoricCandlesRequest struct { - Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` - Pair *CurrencyPair `protobuf:"bytes,2,opt,name=pair,proto3" json:"pair,omitempty"` - AssetType string `protobuf:"bytes,3,opt,name=asset_type,json=assetType,proto3" json:"asset_type,omitempty"` - Start int64 `protobuf:"varint,4,opt,name=start,proto3" json:"start,omitempty"` - End int64 `protobuf:"varint,5,opt,name=end,proto3" json:"end,omitempty"` - TimeInterval int64 `protobuf:"varint,6,opt,name=time_interval,json=timeInterval,proto3" json:"time_interval,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` + Pair *CurrencyPair `protobuf:"bytes,2,opt,name=pair,proto3" json:"pair,omitempty"` + AssetType string `protobuf:"bytes,3,opt,name=asset_type,json=assetType,proto3" json:"asset_type,omitempty"` + Start int64 `protobuf:"varint,4,opt,name=start,proto3" json:"start,omitempty"` + End int64 `protobuf:"varint,5,opt,name=end,proto3" json:"end,omitempty"` + TimeInterval int64 `protobuf:"varint,6,opt,name=time_interval,json=timeInterval,proto3" json:"time_interval,omitempty"` + ExRequest bool `protobuf:"varint,7,opt,name=ex_request,json=exRequest,proto3" json:"ex_request,omitempty"` } -func (m *GetHistoricCandlesRequest) Reset() { *m = GetHistoricCandlesRequest{} } -func (m *GetHistoricCandlesRequest) String() string { return proto.CompactTextString(m) } -func (*GetHistoricCandlesRequest) ProtoMessage() {} +func (x *GetHistoricCandlesRequest) Reset() { + *x = GetHistoricCandlesRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[110] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetHistoricCandlesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetHistoricCandlesRequest) ProtoMessage() {} + +func (x *GetHistoricCandlesRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[110] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetHistoricCandlesRequest.ProtoReflect.Descriptor instead. func (*GetHistoricCandlesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{110} + return file_rpc_proto_rawDescGZIP(), []int{110} } -func (m *GetHistoricCandlesRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetHistoricCandlesRequest.Unmarshal(m, b) -} -func (m *GetHistoricCandlesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetHistoricCandlesRequest.Marshal(b, m, deterministic) -} -func (m *GetHistoricCandlesRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetHistoricCandlesRequest.Merge(m, src) -} -func (m *GetHistoricCandlesRequest) XXX_Size() int { - return xxx_messageInfo_GetHistoricCandlesRequest.Size(m) -} -func (m *GetHistoricCandlesRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetHistoricCandlesRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_GetHistoricCandlesRequest proto.InternalMessageInfo - -func (m *GetHistoricCandlesRequest) GetExchange() string { - if m != nil { - return m.Exchange +func (x *GetHistoricCandlesRequest) GetExchange() string { + if x != nil { + return x.Exchange } return "" } -func (m *GetHistoricCandlesRequest) GetPair() *CurrencyPair { - if m != nil { - return m.Pair +func (x *GetHistoricCandlesRequest) GetPair() *CurrencyPair { + if x != nil { + return x.Pair } return nil } -func (m *GetHistoricCandlesRequest) GetAssetType() string { - if m != nil { - return m.AssetType +func (x *GetHistoricCandlesRequest) GetAssetType() string { + if x != nil { + return x.AssetType } return "" } -func (m *GetHistoricCandlesRequest) GetStart() int64 { - if m != nil { - return m.Start +func (x *GetHistoricCandlesRequest) GetStart() int64 { + if x != nil { + return x.Start } return 0 } -func (m *GetHistoricCandlesRequest) GetEnd() int64 { - if m != nil { - return m.End +func (x *GetHistoricCandlesRequest) GetEnd() int64 { + if x != nil { + return x.End } return 0 } -func (m *GetHistoricCandlesRequest) GetTimeInterval() int64 { - if m != nil { - return m.TimeInterval +func (x *GetHistoricCandlesRequest) GetTimeInterval() int64 { + if x != nil { + return x.TimeInterval } return 0 } +func (x *GetHistoricCandlesRequest) GetExRequest() bool { + if x != nil { + return x.ExRequest + } + return false +} + type GetHistoricCandlesResponse struct { - Candle []*Candle `protobuf:"bytes,1,rep,name=candle,proto3" json:"candle,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` + Pair *CurrencyPair `protobuf:"bytes,2,opt,name=pair,proto3" json:"pair,omitempty"` + Start int64 `protobuf:"varint,3,opt,name=start,proto3" json:"start,omitempty"` + End int64 `protobuf:"varint,4,opt,name=end,proto3" json:"end,omitempty"` + Interval string `protobuf:"bytes,6,opt,name=interval,proto3" json:"interval,omitempty"` + Candle []*Candle `protobuf:"bytes,5,rep,name=candle,proto3" json:"candle,omitempty"` } -func (m *GetHistoricCandlesResponse) Reset() { *m = GetHistoricCandlesResponse{} } -func (m *GetHistoricCandlesResponse) String() string { return proto.CompactTextString(m) } -func (*GetHistoricCandlesResponse) ProtoMessage() {} +func (x *GetHistoricCandlesResponse) Reset() { + *x = GetHistoricCandlesResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[111] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetHistoricCandlesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetHistoricCandlesResponse) ProtoMessage() {} + +func (x *GetHistoricCandlesResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[111] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetHistoricCandlesResponse.ProtoReflect.Descriptor instead. func (*GetHistoricCandlesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{111} + return file_rpc_proto_rawDescGZIP(), []int{111} } -func (m *GetHistoricCandlesResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetHistoricCandlesResponse.Unmarshal(m, b) -} -func (m *GetHistoricCandlesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetHistoricCandlesResponse.Marshal(b, m, deterministic) -} -func (m *GetHistoricCandlesResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetHistoricCandlesResponse.Merge(m, src) -} -func (m *GetHistoricCandlesResponse) XXX_Size() int { - return xxx_messageInfo_GetHistoricCandlesResponse.Size(m) -} -func (m *GetHistoricCandlesResponse) XXX_DiscardUnknown() { - xxx_messageInfo_GetHistoricCandlesResponse.DiscardUnknown(m) +func (x *GetHistoricCandlesResponse) GetExchange() string { + if x != nil { + return x.Exchange + } + return "" } -var xxx_messageInfo_GetHistoricCandlesResponse proto.InternalMessageInfo +func (x *GetHistoricCandlesResponse) GetPair() *CurrencyPair { + if x != nil { + return x.Pair + } + return nil +} -func (m *GetHistoricCandlesResponse) GetCandle() []*Candle { - if m != nil { - return m.Candle +func (x *GetHistoricCandlesResponse) GetStart() int64 { + if x != nil { + return x.Start + } + return 0 +} + +func (x *GetHistoricCandlesResponse) GetEnd() int64 { + if x != nil { + return x.End + } + return 0 +} + +func (x *GetHistoricCandlesResponse) GetInterval() string { + if x != nil { + return x.Interval + } + return "" +} + +func (x *GetHistoricCandlesResponse) GetCandle() []*Candle { + if x != nil { + return x.Candle } return nil } type Candle struct { - Time int64 `protobuf:"varint,1,opt,name=time,proto3" json:"time,omitempty"` - Low float64 `protobuf:"fixed64,2,opt,name=low,proto3" json:"low,omitempty"` - High float64 `protobuf:"fixed64,3,opt,name=high,proto3" json:"high,omitempty"` - Open float64 `protobuf:"fixed64,4,opt,name=open,proto3" json:"open,omitempty"` - Close float64 `protobuf:"fixed64,5,opt,name=close,proto3" json:"close,omitempty"` - Volume float64 `protobuf:"fixed64,6,opt,name=volume,proto3" json:"volume,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Time int64 `protobuf:"varint,1,opt,name=time,proto3" json:"time,omitempty"` + Low float64 `protobuf:"fixed64,2,opt,name=low,proto3" json:"low,omitempty"` + High float64 `protobuf:"fixed64,3,opt,name=high,proto3" json:"high,omitempty"` + Open float64 `protobuf:"fixed64,4,opt,name=open,proto3" json:"open,omitempty"` + Close float64 `protobuf:"fixed64,5,opt,name=close,proto3" json:"close,omitempty"` + Volume float64 `protobuf:"fixed64,6,opt,name=volume,proto3" json:"volume,omitempty"` } -func (m *Candle) Reset() { *m = Candle{} } -func (m *Candle) String() string { return proto.CompactTextString(m) } -func (*Candle) ProtoMessage() {} +func (x *Candle) Reset() { + *x = Candle{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[112] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Candle) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Candle) ProtoMessage() {} + +func (x *Candle) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[112] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Candle.ProtoReflect.Descriptor instead. func (*Candle) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{112} + return file_rpc_proto_rawDescGZIP(), []int{112} } -func (m *Candle) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Candle.Unmarshal(m, b) -} -func (m *Candle) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Candle.Marshal(b, m, deterministic) -} -func (m *Candle) XXX_Merge(src proto.Message) { - xxx_messageInfo_Candle.Merge(m, src) -} -func (m *Candle) XXX_Size() int { - return xxx_messageInfo_Candle.Size(m) -} -func (m *Candle) XXX_DiscardUnknown() { - xxx_messageInfo_Candle.DiscardUnknown(m) -} - -var xxx_messageInfo_Candle proto.InternalMessageInfo - -func (m *Candle) GetTime() int64 { - if m != nil { - return m.Time +func (x *Candle) GetTime() int64 { + if x != nil { + return x.Time } return 0 } -func (m *Candle) GetLow() float64 { - if m != nil { - return m.Low +func (x *Candle) GetLow() float64 { + if x != nil { + return x.Low } return 0 } -func (m *Candle) GetHigh() float64 { - if m != nil { - return m.High +func (x *Candle) GetHigh() float64 { + if x != nil { + return x.High } return 0 } -func (m *Candle) GetOpen() float64 { - if m != nil { - return m.Open +func (x *Candle) GetOpen() float64 { + if x != nil { + return x.Open } return 0 } -func (m *Candle) GetClose() float64 { - if m != nil { - return m.Close +func (x *Candle) GetClose() float64 { + if x != nil { + return x.Close } return 0 } -func (m *Candle) GetVolume() float64 { - if m != nil { - return m.Volume +func (x *Candle) GetVolume() float64 { + if x != nil { + return x.Volume } return 0 } type AuditEvent struct { - Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` - Identifier string `protobuf:"bytes,2,opt,name=identifier,proto3" json:"identifier,omitempty"` - Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` - Timestamp string `protobuf:"bytes,4,opt,name=timestamp,proto3" json:"timestamp,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` + Identifier string `protobuf:"bytes,2,opt,name=identifier,proto3" json:"identifier,omitempty"` + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` + Timestamp string `protobuf:"bytes,4,opt,name=timestamp,proto3" json:"timestamp,omitempty"` } -func (m *AuditEvent) Reset() { *m = AuditEvent{} } -func (m *AuditEvent) String() string { return proto.CompactTextString(m) } -func (*AuditEvent) ProtoMessage() {} +func (x *AuditEvent) Reset() { + *x = AuditEvent{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[113] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AuditEvent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AuditEvent) ProtoMessage() {} + +func (x *AuditEvent) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[113] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AuditEvent.ProtoReflect.Descriptor instead. func (*AuditEvent) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{113} + return file_rpc_proto_rawDescGZIP(), []int{113} } -func (m *AuditEvent) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_AuditEvent.Unmarshal(m, b) -} -func (m *AuditEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_AuditEvent.Marshal(b, m, deterministic) -} -func (m *AuditEvent) XXX_Merge(src proto.Message) { - xxx_messageInfo_AuditEvent.Merge(m, src) -} -func (m *AuditEvent) XXX_Size() int { - return xxx_messageInfo_AuditEvent.Size(m) -} -func (m *AuditEvent) XXX_DiscardUnknown() { - xxx_messageInfo_AuditEvent.DiscardUnknown(m) -} - -var xxx_messageInfo_AuditEvent proto.InternalMessageInfo - -func (m *AuditEvent) GetType() string { - if m != nil { - return m.Type +func (x *AuditEvent) GetType() string { + if x != nil { + return x.Type } return "" } -func (m *AuditEvent) GetIdentifier() string { - if m != nil { - return m.Identifier +func (x *AuditEvent) GetIdentifier() string { + if x != nil { + return x.Identifier } return "" } -func (m *AuditEvent) GetMessage() string { - if m != nil { - return m.Message +func (x *AuditEvent) GetMessage() string { + if x != nil { + return x.Message } return "" } -func (m *AuditEvent) GetTimestamp() string { - if m != nil { - return m.Timestamp +func (x *AuditEvent) GetTimestamp() string { + if x != nil { + return x.Timestamp } return "" } type GCTScript struct { - UUID string `protobuf:"bytes,1,opt,name=UUID,proto3" json:"UUID,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Path string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"` - NextRun string `protobuf:"bytes,4,opt,name=next_run,json=nextRun,proto3" json:"next_run,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + UUID string `protobuf:"bytes,1,opt,name=UUID,proto3" json:"UUID,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Path string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"` + NextRun string `protobuf:"bytes,4,opt,name=next_run,json=nextRun,proto3" json:"next_run,omitempty"` } -func (m *GCTScript) Reset() { *m = GCTScript{} } -func (m *GCTScript) String() string { return proto.CompactTextString(m) } -func (*GCTScript) ProtoMessage() {} +func (x *GCTScript) Reset() { + *x = GCTScript{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[114] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GCTScript) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GCTScript) ProtoMessage() {} + +func (x *GCTScript) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[114] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GCTScript.ProtoReflect.Descriptor instead. func (*GCTScript) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{114} + return file_rpc_proto_rawDescGZIP(), []int{114} } -func (m *GCTScript) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GCTScript.Unmarshal(m, b) -} -func (m *GCTScript) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GCTScript.Marshal(b, m, deterministic) -} -func (m *GCTScript) XXX_Merge(src proto.Message) { - xxx_messageInfo_GCTScript.Merge(m, src) -} -func (m *GCTScript) XXX_Size() int { - return xxx_messageInfo_GCTScript.Size(m) -} -func (m *GCTScript) XXX_DiscardUnknown() { - xxx_messageInfo_GCTScript.DiscardUnknown(m) -} - -var xxx_messageInfo_GCTScript proto.InternalMessageInfo - -func (m *GCTScript) GetUUID() string { - if m != nil { - return m.UUID +func (x *GCTScript) GetUUID() string { + if x != nil { + return x.UUID } return "" } -func (m *GCTScript) GetName() string { - if m != nil { - return m.Name +func (x *GCTScript) GetName() string { + if x != nil { + return x.Name } return "" } -func (m *GCTScript) GetPath() string { - if m != nil { - return m.Path +func (x *GCTScript) GetPath() string { + if x != nil { + return x.Path } return "" } -func (m *GCTScript) GetNextRun() string { - if m != nil { - return m.NextRun +func (x *GCTScript) GetNextRun() string { + if x != nil { + return x.NextRun } return "" } type GCTScriptExecuteRequest struct { - Script *GCTScript `protobuf:"bytes,1,opt,name=script,proto3" json:"script,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Script *GCTScript `protobuf:"bytes,1,opt,name=script,proto3" json:"script,omitempty"` } -func (m *GCTScriptExecuteRequest) Reset() { *m = GCTScriptExecuteRequest{} } -func (m *GCTScriptExecuteRequest) String() string { return proto.CompactTextString(m) } -func (*GCTScriptExecuteRequest) ProtoMessage() {} +func (x *GCTScriptExecuteRequest) Reset() { + *x = GCTScriptExecuteRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[115] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GCTScriptExecuteRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GCTScriptExecuteRequest) ProtoMessage() {} + +func (x *GCTScriptExecuteRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[115] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GCTScriptExecuteRequest.ProtoReflect.Descriptor instead. func (*GCTScriptExecuteRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{115} + return file_rpc_proto_rawDescGZIP(), []int{115} } -func (m *GCTScriptExecuteRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GCTScriptExecuteRequest.Unmarshal(m, b) -} -func (m *GCTScriptExecuteRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GCTScriptExecuteRequest.Marshal(b, m, deterministic) -} -func (m *GCTScriptExecuteRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GCTScriptExecuteRequest.Merge(m, src) -} -func (m *GCTScriptExecuteRequest) XXX_Size() int { - return xxx_messageInfo_GCTScriptExecuteRequest.Size(m) -} -func (m *GCTScriptExecuteRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GCTScriptExecuteRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_GCTScriptExecuteRequest proto.InternalMessageInfo - -func (m *GCTScriptExecuteRequest) GetScript() *GCTScript { - if m != nil { - return m.Script +func (x *GCTScriptExecuteRequest) GetScript() *GCTScript { + if x != nil { + return x.Script } return nil } type GCTScriptStopRequest struct { - Script *GCTScript `protobuf:"bytes,1,opt,name=script,proto3" json:"script,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Script *GCTScript `protobuf:"bytes,1,opt,name=script,proto3" json:"script,omitempty"` } -func (m *GCTScriptStopRequest) Reset() { *m = GCTScriptStopRequest{} } -func (m *GCTScriptStopRequest) String() string { return proto.CompactTextString(m) } -func (*GCTScriptStopRequest) ProtoMessage() {} +func (x *GCTScriptStopRequest) Reset() { + *x = GCTScriptStopRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[116] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GCTScriptStopRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GCTScriptStopRequest) ProtoMessage() {} + +func (x *GCTScriptStopRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[116] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GCTScriptStopRequest.ProtoReflect.Descriptor instead. func (*GCTScriptStopRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{116} + return file_rpc_proto_rawDescGZIP(), []int{116} } -func (m *GCTScriptStopRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GCTScriptStopRequest.Unmarshal(m, b) -} -func (m *GCTScriptStopRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GCTScriptStopRequest.Marshal(b, m, deterministic) -} -func (m *GCTScriptStopRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GCTScriptStopRequest.Merge(m, src) -} -func (m *GCTScriptStopRequest) XXX_Size() int { - return xxx_messageInfo_GCTScriptStopRequest.Size(m) -} -func (m *GCTScriptStopRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GCTScriptStopRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_GCTScriptStopRequest proto.InternalMessageInfo - -func (m *GCTScriptStopRequest) GetScript() *GCTScript { - if m != nil { - return m.Script +func (x *GCTScriptStopRequest) GetScript() *GCTScript { + if x != nil { + return x.Script } return nil } type GCTScriptStopAllRequest struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields } -func (m *GCTScriptStopAllRequest) Reset() { *m = GCTScriptStopAllRequest{} } -func (m *GCTScriptStopAllRequest) String() string { return proto.CompactTextString(m) } -func (*GCTScriptStopAllRequest) ProtoMessage() {} +func (x *GCTScriptStopAllRequest) Reset() { + *x = GCTScriptStopAllRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[117] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GCTScriptStopAllRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GCTScriptStopAllRequest) ProtoMessage() {} + +func (x *GCTScriptStopAllRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[117] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GCTScriptStopAllRequest.ProtoReflect.Descriptor instead. func (*GCTScriptStopAllRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{117} + return file_rpc_proto_rawDescGZIP(), []int{117} } -func (m *GCTScriptStopAllRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GCTScriptStopAllRequest.Unmarshal(m, b) -} -func (m *GCTScriptStopAllRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GCTScriptStopAllRequest.Marshal(b, m, deterministic) -} -func (m *GCTScriptStopAllRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GCTScriptStopAllRequest.Merge(m, src) -} -func (m *GCTScriptStopAllRequest) XXX_Size() int { - return xxx_messageInfo_GCTScriptStopAllRequest.Size(m) -} -func (m *GCTScriptStopAllRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GCTScriptStopAllRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_GCTScriptStopAllRequest proto.InternalMessageInfo - type GCTScriptStatusRequest struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields } -func (m *GCTScriptStatusRequest) Reset() { *m = GCTScriptStatusRequest{} } -func (m *GCTScriptStatusRequest) String() string { return proto.CompactTextString(m) } -func (*GCTScriptStatusRequest) ProtoMessage() {} +func (x *GCTScriptStatusRequest) Reset() { + *x = GCTScriptStatusRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[118] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GCTScriptStatusRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GCTScriptStatusRequest) ProtoMessage() {} + +func (x *GCTScriptStatusRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[118] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GCTScriptStatusRequest.ProtoReflect.Descriptor instead. func (*GCTScriptStatusRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{118} + return file_rpc_proto_rawDescGZIP(), []int{118} } -func (m *GCTScriptStatusRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GCTScriptStatusRequest.Unmarshal(m, b) -} -func (m *GCTScriptStatusRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GCTScriptStatusRequest.Marshal(b, m, deterministic) -} -func (m *GCTScriptStatusRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GCTScriptStatusRequest.Merge(m, src) -} -func (m *GCTScriptStatusRequest) XXX_Size() int { - return xxx_messageInfo_GCTScriptStatusRequest.Size(m) -} -func (m *GCTScriptStatusRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GCTScriptStatusRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_GCTScriptStatusRequest proto.InternalMessageInfo - type GCTScriptListAllRequest struct { - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields } -func (m *GCTScriptListAllRequest) Reset() { *m = GCTScriptListAllRequest{} } -func (m *GCTScriptListAllRequest) String() string { return proto.CompactTextString(m) } -func (*GCTScriptListAllRequest) ProtoMessage() {} +func (x *GCTScriptListAllRequest) Reset() { + *x = GCTScriptListAllRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[119] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GCTScriptListAllRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GCTScriptListAllRequest) ProtoMessage() {} + +func (x *GCTScriptListAllRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[119] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GCTScriptListAllRequest.ProtoReflect.Descriptor instead. func (*GCTScriptListAllRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{119} + return file_rpc_proto_rawDescGZIP(), []int{119} } -func (m *GCTScriptListAllRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GCTScriptListAllRequest.Unmarshal(m, b) -} -func (m *GCTScriptListAllRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GCTScriptListAllRequest.Marshal(b, m, deterministic) -} -func (m *GCTScriptListAllRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GCTScriptListAllRequest.Merge(m, src) -} -func (m *GCTScriptListAllRequest) XXX_Size() int { - return xxx_messageInfo_GCTScriptListAllRequest.Size(m) -} -func (m *GCTScriptListAllRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GCTScriptListAllRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_GCTScriptListAllRequest proto.InternalMessageInfo - type GCTScriptUploadRequest struct { - ScriptName string `protobuf:"bytes,1,opt,name=script_name,json=scriptName,proto3" json:"script_name,omitempty"` - ScriptData string `protobuf:"bytes,2,opt,name=script_data,json=scriptData,proto3" json:"script_data,omitempty"` - Data []byte `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` - Archived bool `protobuf:"varint,4,opt,name=archived,proto3" json:"archived,omitempty"` - Overwrite bool `protobuf:"varint,5,opt,name=overwrite,proto3" json:"overwrite,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ScriptName string `protobuf:"bytes,1,opt,name=script_name,json=scriptName,proto3" json:"script_name,omitempty"` + ScriptData string `protobuf:"bytes,2,opt,name=script_data,json=scriptData,proto3" json:"script_data,omitempty"` + Data []byte `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` + Archived bool `protobuf:"varint,4,opt,name=archived,proto3" json:"archived,omitempty"` + Overwrite bool `protobuf:"varint,5,opt,name=overwrite,proto3" json:"overwrite,omitempty"` } -func (m *GCTScriptUploadRequest) Reset() { *m = GCTScriptUploadRequest{} } -func (m *GCTScriptUploadRequest) String() string { return proto.CompactTextString(m) } -func (*GCTScriptUploadRequest) ProtoMessage() {} +func (x *GCTScriptUploadRequest) Reset() { + *x = GCTScriptUploadRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[120] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GCTScriptUploadRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GCTScriptUploadRequest) ProtoMessage() {} + +func (x *GCTScriptUploadRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[120] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GCTScriptUploadRequest.ProtoReflect.Descriptor instead. func (*GCTScriptUploadRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{120} + return file_rpc_proto_rawDescGZIP(), []int{120} } -func (m *GCTScriptUploadRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GCTScriptUploadRequest.Unmarshal(m, b) -} -func (m *GCTScriptUploadRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GCTScriptUploadRequest.Marshal(b, m, deterministic) -} -func (m *GCTScriptUploadRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GCTScriptUploadRequest.Merge(m, src) -} -func (m *GCTScriptUploadRequest) XXX_Size() int { - return xxx_messageInfo_GCTScriptUploadRequest.Size(m) -} -func (m *GCTScriptUploadRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GCTScriptUploadRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_GCTScriptUploadRequest proto.InternalMessageInfo - -func (m *GCTScriptUploadRequest) GetScriptName() string { - if m != nil { - return m.ScriptName +func (x *GCTScriptUploadRequest) GetScriptName() string { + if x != nil { + return x.ScriptName } return "" } -func (m *GCTScriptUploadRequest) GetScriptData() string { - if m != nil { - return m.ScriptData +func (x *GCTScriptUploadRequest) GetScriptData() string { + if x != nil { + return x.ScriptData } return "" } -func (m *GCTScriptUploadRequest) GetData() []byte { - if m != nil { - return m.Data +func (x *GCTScriptUploadRequest) GetData() []byte { + if x != nil { + return x.Data } return nil } -func (m *GCTScriptUploadRequest) GetArchived() bool { - if m != nil { - return m.Archived +func (x *GCTScriptUploadRequest) GetArchived() bool { + if x != nil { + return x.Archived } return false } -func (m *GCTScriptUploadRequest) GetOverwrite() bool { - if m != nil { - return m.Overwrite +func (x *GCTScriptUploadRequest) GetOverwrite() bool { + if x != nil { + return x.Overwrite } return false } type GCTScriptReadScriptRequest struct { - Script *GCTScript `protobuf:"bytes,1,opt,name=script,proto3" json:"script,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Script *GCTScript `protobuf:"bytes,1,opt,name=script,proto3" json:"script,omitempty"` } -func (m *GCTScriptReadScriptRequest) Reset() { *m = GCTScriptReadScriptRequest{} } -func (m *GCTScriptReadScriptRequest) String() string { return proto.CompactTextString(m) } -func (*GCTScriptReadScriptRequest) ProtoMessage() {} +func (x *GCTScriptReadScriptRequest) Reset() { + *x = GCTScriptReadScriptRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[121] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GCTScriptReadScriptRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GCTScriptReadScriptRequest) ProtoMessage() {} + +func (x *GCTScriptReadScriptRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[121] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GCTScriptReadScriptRequest.ProtoReflect.Descriptor instead. func (*GCTScriptReadScriptRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{121} + return file_rpc_proto_rawDescGZIP(), []int{121} } -func (m *GCTScriptReadScriptRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GCTScriptReadScriptRequest.Unmarshal(m, b) -} -func (m *GCTScriptReadScriptRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GCTScriptReadScriptRequest.Marshal(b, m, deterministic) -} -func (m *GCTScriptReadScriptRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GCTScriptReadScriptRequest.Merge(m, src) -} -func (m *GCTScriptReadScriptRequest) XXX_Size() int { - return xxx_messageInfo_GCTScriptReadScriptRequest.Size(m) -} -func (m *GCTScriptReadScriptRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GCTScriptReadScriptRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_GCTScriptReadScriptRequest proto.InternalMessageInfo - -func (m *GCTScriptReadScriptRequest) GetScript() *GCTScript { - if m != nil { - return m.Script +func (x *GCTScriptReadScriptRequest) GetScript() *GCTScript { + if x != nil { + return x.Script } return nil } type GCTScriptQueryRequest struct { - Script *GCTScript `protobuf:"bytes,1,opt,name=script,proto3" json:"script,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Script *GCTScript `protobuf:"bytes,1,opt,name=script,proto3" json:"script,omitempty"` } -func (m *GCTScriptQueryRequest) Reset() { *m = GCTScriptQueryRequest{} } -func (m *GCTScriptQueryRequest) String() string { return proto.CompactTextString(m) } -func (*GCTScriptQueryRequest) ProtoMessage() {} +func (x *GCTScriptQueryRequest) Reset() { + *x = GCTScriptQueryRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[122] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GCTScriptQueryRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GCTScriptQueryRequest) ProtoMessage() {} + +func (x *GCTScriptQueryRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[122] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GCTScriptQueryRequest.ProtoReflect.Descriptor instead. func (*GCTScriptQueryRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{122} + return file_rpc_proto_rawDescGZIP(), []int{122} } -func (m *GCTScriptQueryRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GCTScriptQueryRequest.Unmarshal(m, b) -} -func (m *GCTScriptQueryRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GCTScriptQueryRequest.Marshal(b, m, deterministic) -} -func (m *GCTScriptQueryRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GCTScriptQueryRequest.Merge(m, src) -} -func (m *GCTScriptQueryRequest) XXX_Size() int { - return xxx_messageInfo_GCTScriptQueryRequest.Size(m) -} -func (m *GCTScriptQueryRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GCTScriptQueryRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_GCTScriptQueryRequest proto.InternalMessageInfo - -func (m *GCTScriptQueryRequest) GetScript() *GCTScript { - if m != nil { - return m.Script +func (x *GCTScriptQueryRequest) GetScript() *GCTScript { + if x != nil { + return x.Script } return nil } type GCTScriptAutoLoadRequest struct { - Script string `protobuf:"bytes,1,opt,name=script,proto3" json:"script,omitempty"` - Status bool `protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Script string `protobuf:"bytes,1,opt,name=script,proto3" json:"script,omitempty"` + Status bool `protobuf:"varint,2,opt,name=status,proto3" json:"status,omitempty"` } -func (m *GCTScriptAutoLoadRequest) Reset() { *m = GCTScriptAutoLoadRequest{} } -func (m *GCTScriptAutoLoadRequest) String() string { return proto.CompactTextString(m) } -func (*GCTScriptAutoLoadRequest) ProtoMessage() {} +func (x *GCTScriptAutoLoadRequest) Reset() { + *x = GCTScriptAutoLoadRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[123] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GCTScriptAutoLoadRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GCTScriptAutoLoadRequest) ProtoMessage() {} + +func (x *GCTScriptAutoLoadRequest) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[123] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GCTScriptAutoLoadRequest.ProtoReflect.Descriptor instead. func (*GCTScriptAutoLoadRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{123} + return file_rpc_proto_rawDescGZIP(), []int{123} } -func (m *GCTScriptAutoLoadRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GCTScriptAutoLoadRequest.Unmarshal(m, b) -} -func (m *GCTScriptAutoLoadRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GCTScriptAutoLoadRequest.Marshal(b, m, deterministic) -} -func (m *GCTScriptAutoLoadRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GCTScriptAutoLoadRequest.Merge(m, src) -} -func (m *GCTScriptAutoLoadRequest) XXX_Size() int { - return xxx_messageInfo_GCTScriptAutoLoadRequest.Size(m) -} -func (m *GCTScriptAutoLoadRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GCTScriptAutoLoadRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_GCTScriptAutoLoadRequest proto.InternalMessageInfo - -func (m *GCTScriptAutoLoadRequest) GetScript() string { - if m != nil { - return m.Script +func (x *GCTScriptAutoLoadRequest) GetScript() string { + if x != nil { + return x.Script } return "" } -func (m *GCTScriptAutoLoadRequest) GetStatus() bool { - if m != nil { - return m.Status +func (x *GCTScriptAutoLoadRequest) GetStatus() bool { + if x != nil { + return x.Status } return false } type GCTScriptStatusResponse struct { - Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` - Scripts []*GCTScript `protobuf:"bytes,2,rep,name=scripts,proto3" json:"scripts,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` + Scripts []*GCTScript `protobuf:"bytes,2,rep,name=scripts,proto3" json:"scripts,omitempty"` } -func (m *GCTScriptStatusResponse) Reset() { *m = GCTScriptStatusResponse{} } -func (m *GCTScriptStatusResponse) String() string { return proto.CompactTextString(m) } -func (*GCTScriptStatusResponse) ProtoMessage() {} +func (x *GCTScriptStatusResponse) Reset() { + *x = GCTScriptStatusResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[124] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GCTScriptStatusResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GCTScriptStatusResponse) ProtoMessage() {} + +func (x *GCTScriptStatusResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[124] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GCTScriptStatusResponse.ProtoReflect.Descriptor instead. func (*GCTScriptStatusResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{124} + return file_rpc_proto_rawDescGZIP(), []int{124} } -func (m *GCTScriptStatusResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GCTScriptStatusResponse.Unmarshal(m, b) -} -func (m *GCTScriptStatusResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GCTScriptStatusResponse.Marshal(b, m, deterministic) -} -func (m *GCTScriptStatusResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_GCTScriptStatusResponse.Merge(m, src) -} -func (m *GCTScriptStatusResponse) XXX_Size() int { - return xxx_messageInfo_GCTScriptStatusResponse.Size(m) -} -func (m *GCTScriptStatusResponse) XXX_DiscardUnknown() { - xxx_messageInfo_GCTScriptStatusResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_GCTScriptStatusResponse proto.InternalMessageInfo - -func (m *GCTScriptStatusResponse) GetStatus() string { - if m != nil { - return m.Status +func (x *GCTScriptStatusResponse) GetStatus() string { + if x != nil { + return x.Status } return "" } -func (m *GCTScriptStatusResponse) GetScripts() []*GCTScript { - if m != nil { - return m.Scripts +func (x *GCTScriptStatusResponse) GetScripts() []*GCTScript { + if x != nil { + return x.Scripts } return nil } type GCTScriptQueryResponse struct { - Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` - Script *GCTScript `protobuf:"bytes,2,opt,name=script,proto3" json:"script,omitempty"` - Data string `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` + Script *GCTScript `protobuf:"bytes,2,opt,name=script,proto3" json:"script,omitempty"` + Data string `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` } -func (m *GCTScriptQueryResponse) Reset() { *m = GCTScriptQueryResponse{} } -func (m *GCTScriptQueryResponse) String() string { return proto.CompactTextString(m) } -func (*GCTScriptQueryResponse) ProtoMessage() {} +func (x *GCTScriptQueryResponse) Reset() { + *x = GCTScriptQueryResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[125] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GCTScriptQueryResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GCTScriptQueryResponse) ProtoMessage() {} + +func (x *GCTScriptQueryResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[125] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GCTScriptQueryResponse.ProtoReflect.Descriptor instead. func (*GCTScriptQueryResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{125} + return file_rpc_proto_rawDescGZIP(), []int{125} } -func (m *GCTScriptQueryResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GCTScriptQueryResponse.Unmarshal(m, b) -} -func (m *GCTScriptQueryResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GCTScriptQueryResponse.Marshal(b, m, deterministic) -} -func (m *GCTScriptQueryResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_GCTScriptQueryResponse.Merge(m, src) -} -func (m *GCTScriptQueryResponse) XXX_Size() int { - return xxx_messageInfo_GCTScriptQueryResponse.Size(m) -} -func (m *GCTScriptQueryResponse) XXX_DiscardUnknown() { - xxx_messageInfo_GCTScriptQueryResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_GCTScriptQueryResponse proto.InternalMessageInfo - -func (m *GCTScriptQueryResponse) GetStatus() string { - if m != nil { - return m.Status +func (x *GCTScriptQueryResponse) GetStatus() string { + if x != nil { + return x.Status } return "" } -func (m *GCTScriptQueryResponse) GetScript() *GCTScript { - if m != nil { - return m.Script +func (x *GCTScriptQueryResponse) GetScript() *GCTScript { + if x != nil { + return x.Script } return nil } -func (m *GCTScriptQueryResponse) GetData() string { - if m != nil { - return m.Data +func (x *GCTScriptQueryResponse) GetData() string { + if x != nil { + return x.Data } return "" } type GCTScriptGenericResponse struct { - Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` - Data string `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` + Data string `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` } -func (m *GCTScriptGenericResponse) Reset() { *m = GCTScriptGenericResponse{} } -func (m *GCTScriptGenericResponse) String() string { return proto.CompactTextString(m) } -func (*GCTScriptGenericResponse) ProtoMessage() {} +func (x *GCTScriptGenericResponse) Reset() { + *x = GCTScriptGenericResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[126] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GCTScriptGenericResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GCTScriptGenericResponse) ProtoMessage() {} + +func (x *GCTScriptGenericResponse) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[126] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GCTScriptGenericResponse.ProtoReflect.Descriptor instead. func (*GCTScriptGenericResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{126} + return file_rpc_proto_rawDescGZIP(), []int{126} } -func (m *GCTScriptGenericResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GCTScriptGenericResponse.Unmarshal(m, b) -} -func (m *GCTScriptGenericResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GCTScriptGenericResponse.Marshal(b, m, deterministic) -} -func (m *GCTScriptGenericResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_GCTScriptGenericResponse.Merge(m, src) -} -func (m *GCTScriptGenericResponse) XXX_Size() int { - return xxx_messageInfo_GCTScriptGenericResponse.Size(m) -} -func (m *GCTScriptGenericResponse) XXX_DiscardUnknown() { - xxx_messageInfo_GCTScriptGenericResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_GCTScriptGenericResponse proto.InternalMessageInfo - -func (m *GCTScriptGenericResponse) GetStatus() string { - if m != nil { - return m.Status +func (x *GCTScriptGenericResponse) GetStatus() string { + if x != nil { + return x.Status } return "" } -func (m *GCTScriptGenericResponse) GetData() string { - if m != nil { - return m.Data +func (x *GCTScriptGenericResponse) GetData() string { + if x != nil { + return x.Data } return "" } -func init() { - proto.RegisterType((*GetInfoRequest)(nil), "gctrpc.GetInfoRequest") - proto.RegisterType((*GetInfoResponse)(nil), "gctrpc.GetInfoResponse") - proto.RegisterMapType((map[string]*RPCEndpoint)(nil), "gctrpc.GetInfoResponse.RpcEndpointsEntry") - proto.RegisterMapType((map[string]bool)(nil), "gctrpc.GetInfoResponse.SubsystemStatusEntry") - proto.RegisterType((*GetCommunicationRelayersRequest)(nil), "gctrpc.GetCommunicationRelayersRequest") - proto.RegisterType((*CommunicationRelayer)(nil), "gctrpc.CommunicationRelayer") - proto.RegisterType((*GetCommunicationRelayersResponse)(nil), "gctrpc.GetCommunicationRelayersResponse") - proto.RegisterMapType((map[string]*CommunicationRelayer)(nil), "gctrpc.GetCommunicationRelayersResponse.CommunicationRelayersEntry") - proto.RegisterType((*GenericSubsystemRequest)(nil), "gctrpc.GenericSubsystemRequest") - proto.RegisterType((*GenericSubsystemResponse)(nil), "gctrpc.GenericSubsystemResponse") - proto.RegisterType((*GetSubsystemsRequest)(nil), "gctrpc.GetSubsystemsRequest") - proto.RegisterType((*GetSusbsytemsResponse)(nil), "gctrpc.GetSusbsytemsResponse") - proto.RegisterMapType((map[string]bool)(nil), "gctrpc.GetSusbsytemsResponse.SubsystemsStatusEntry") - proto.RegisterType((*GetRPCEndpointsRequest)(nil), "gctrpc.GetRPCEndpointsRequest") - proto.RegisterType((*RPCEndpoint)(nil), "gctrpc.RPCEndpoint") - proto.RegisterType((*GetRPCEndpointsResponse)(nil), "gctrpc.GetRPCEndpointsResponse") - proto.RegisterMapType((map[string]*RPCEndpoint)(nil), "gctrpc.GetRPCEndpointsResponse.EndpointsEntry") - proto.RegisterType((*GenericExchangeNameRequest)(nil), "gctrpc.GenericExchangeNameRequest") - proto.RegisterType((*GenericExchangeNameResponse)(nil), "gctrpc.GenericExchangeNameResponse") - proto.RegisterType((*GetExchangesRequest)(nil), "gctrpc.GetExchangesRequest") - proto.RegisterType((*GetExchangesResponse)(nil), "gctrpc.GetExchangesResponse") - proto.RegisterType((*GetExchangeOTPReponse)(nil), "gctrpc.GetExchangeOTPReponse") - proto.RegisterType((*GetExchangeOTPsRequest)(nil), "gctrpc.GetExchangeOTPsRequest") - proto.RegisterType((*GetExchangeOTPsResponse)(nil), "gctrpc.GetExchangeOTPsResponse") - proto.RegisterMapType((map[string]string)(nil), "gctrpc.GetExchangeOTPsResponse.OtpCodesEntry") - proto.RegisterType((*DisableExchangeRequest)(nil), "gctrpc.DisableExchangeRequest") - proto.RegisterType((*PairsSupported)(nil), "gctrpc.PairsSupported") - proto.RegisterType((*GetExchangeInfoResponse)(nil), "gctrpc.GetExchangeInfoResponse") - proto.RegisterMapType((map[string]*PairsSupported)(nil), "gctrpc.GetExchangeInfoResponse.SupportedAssetsEntry") - proto.RegisterType((*GetTickerRequest)(nil), "gctrpc.GetTickerRequest") - proto.RegisterType((*CurrencyPair)(nil), "gctrpc.CurrencyPair") - proto.RegisterType((*TickerResponse)(nil), "gctrpc.TickerResponse") - proto.RegisterType((*GetTickersRequest)(nil), "gctrpc.GetTickersRequest") - proto.RegisterType((*Tickers)(nil), "gctrpc.Tickers") - proto.RegisterType((*GetTickersResponse)(nil), "gctrpc.GetTickersResponse") - proto.RegisterType((*GetOrderbookRequest)(nil), "gctrpc.GetOrderbookRequest") - proto.RegisterType((*OrderbookItem)(nil), "gctrpc.OrderbookItem") - proto.RegisterType((*OrderbookResponse)(nil), "gctrpc.OrderbookResponse") - proto.RegisterType((*GetOrderbooksRequest)(nil), "gctrpc.GetOrderbooksRequest") - proto.RegisterType((*Orderbooks)(nil), "gctrpc.Orderbooks") - proto.RegisterType((*GetOrderbooksResponse)(nil), "gctrpc.GetOrderbooksResponse") - proto.RegisterType((*GetAccountInfoRequest)(nil), "gctrpc.GetAccountInfoRequest") - proto.RegisterType((*Account)(nil), "gctrpc.Account") - proto.RegisterType((*AccountCurrencyInfo)(nil), "gctrpc.AccountCurrencyInfo") - proto.RegisterType((*GetAccountInfoResponse)(nil), "gctrpc.GetAccountInfoResponse") - proto.RegisterType((*GetConfigRequest)(nil), "gctrpc.GetConfigRequest") - proto.RegisterType((*GetConfigResponse)(nil), "gctrpc.GetConfigResponse") - proto.RegisterType((*PortfolioAddress)(nil), "gctrpc.PortfolioAddress") - proto.RegisterType((*GetPortfolioRequest)(nil), "gctrpc.GetPortfolioRequest") - proto.RegisterType((*GetPortfolioResponse)(nil), "gctrpc.GetPortfolioResponse") - proto.RegisterType((*GetPortfolioSummaryRequest)(nil), "gctrpc.GetPortfolioSummaryRequest") - proto.RegisterType((*Coin)(nil), "gctrpc.Coin") - proto.RegisterType((*OfflineCoinSummary)(nil), "gctrpc.OfflineCoinSummary") - proto.RegisterType((*OnlineCoinSummary)(nil), "gctrpc.OnlineCoinSummary") - proto.RegisterType((*OfflineCoins)(nil), "gctrpc.OfflineCoins") - proto.RegisterType((*OnlineCoins)(nil), "gctrpc.OnlineCoins") - proto.RegisterMapType((map[string]*OnlineCoinSummary)(nil), "gctrpc.OnlineCoins.CoinsEntry") - proto.RegisterType((*GetPortfolioSummaryResponse)(nil), "gctrpc.GetPortfolioSummaryResponse") - proto.RegisterMapType((map[string]*OfflineCoins)(nil), "gctrpc.GetPortfolioSummaryResponse.CoinsOfflineSummaryEntry") - proto.RegisterMapType((map[string]*OnlineCoins)(nil), "gctrpc.GetPortfolioSummaryResponse.CoinsOnlineSummaryEntry") - proto.RegisterType((*AddPortfolioAddressRequest)(nil), "gctrpc.AddPortfolioAddressRequest") - proto.RegisterType((*AddPortfolioAddressResponse)(nil), "gctrpc.AddPortfolioAddressResponse") - proto.RegisterType((*RemovePortfolioAddressRequest)(nil), "gctrpc.RemovePortfolioAddressRequest") - proto.RegisterType((*RemovePortfolioAddressResponse)(nil), "gctrpc.RemovePortfolioAddressResponse") - proto.RegisterType((*GetForexProvidersRequest)(nil), "gctrpc.GetForexProvidersRequest") - proto.RegisterType((*ForexProvider)(nil), "gctrpc.ForexProvider") - proto.RegisterType((*GetForexProvidersResponse)(nil), "gctrpc.GetForexProvidersResponse") - proto.RegisterType((*GetForexRatesRequest)(nil), "gctrpc.GetForexRatesRequest") - proto.RegisterType((*ForexRatesConversion)(nil), "gctrpc.ForexRatesConversion") - proto.RegisterType((*GetForexRatesResponse)(nil), "gctrpc.GetForexRatesResponse") - proto.RegisterType((*OrderDetails)(nil), "gctrpc.OrderDetails") - proto.RegisterType((*TradeHistory)(nil), "gctrpc.TradeHistory") - proto.RegisterType((*GetOrdersRequest)(nil), "gctrpc.GetOrdersRequest") - proto.RegisterType((*GetOrdersResponse)(nil), "gctrpc.GetOrdersResponse") - proto.RegisterType((*GetOrderRequest)(nil), "gctrpc.GetOrderRequest") - proto.RegisterType((*SubmitOrderRequest)(nil), "gctrpc.SubmitOrderRequest") - proto.RegisterType((*SubmitOrderResponse)(nil), "gctrpc.SubmitOrderResponse") - proto.RegisterType((*SimulateOrderRequest)(nil), "gctrpc.SimulateOrderRequest") - proto.RegisterType((*SimulateOrderResponse)(nil), "gctrpc.SimulateOrderResponse") - proto.RegisterType((*WhaleBombRequest)(nil), "gctrpc.WhaleBombRequest") - proto.RegisterType((*CancelOrderRequest)(nil), "gctrpc.CancelOrderRequest") - proto.RegisterType((*CancelOrderResponse)(nil), "gctrpc.CancelOrderResponse") - proto.RegisterType((*CancelAllOrdersRequest)(nil), "gctrpc.CancelAllOrdersRequest") - proto.RegisterType((*CancelAllOrdersResponse)(nil), "gctrpc.CancelAllOrdersResponse") - proto.RegisterType((*CancelAllOrdersResponse_Orders)(nil), "gctrpc.CancelAllOrdersResponse.Orders") - proto.RegisterMapType((map[string]string)(nil), "gctrpc.CancelAllOrdersResponse.Orders.OrderStatusEntry") - proto.RegisterType((*GetEventsRequest)(nil), "gctrpc.GetEventsRequest") - proto.RegisterType((*ConditionParams)(nil), "gctrpc.ConditionParams") - proto.RegisterType((*GetEventsResponse)(nil), "gctrpc.GetEventsResponse") - proto.RegisterType((*AddEventRequest)(nil), "gctrpc.AddEventRequest") - proto.RegisterType((*AddEventResponse)(nil), "gctrpc.AddEventResponse") - proto.RegisterType((*RemoveEventRequest)(nil), "gctrpc.RemoveEventRequest") - proto.RegisterType((*RemoveEventResponse)(nil), "gctrpc.RemoveEventResponse") - proto.RegisterType((*GetCryptocurrencyDepositAddressesRequest)(nil), "gctrpc.GetCryptocurrencyDepositAddressesRequest") - proto.RegisterType((*GetCryptocurrencyDepositAddressesResponse)(nil), "gctrpc.GetCryptocurrencyDepositAddressesResponse") - proto.RegisterMapType((map[string]string)(nil), "gctrpc.GetCryptocurrencyDepositAddressesResponse.AddressesEntry") - proto.RegisterType((*GetCryptocurrencyDepositAddressRequest)(nil), "gctrpc.GetCryptocurrencyDepositAddressRequest") - proto.RegisterType((*GetCryptocurrencyDepositAddressResponse)(nil), "gctrpc.GetCryptocurrencyDepositAddressResponse") - proto.RegisterType((*WithdrawFiatRequest)(nil), "gctrpc.WithdrawFiatRequest") - proto.RegisterType((*WithdrawCryptoRequest)(nil), "gctrpc.WithdrawCryptoRequest") - proto.RegisterType((*WithdrawResponse)(nil), "gctrpc.WithdrawResponse") - proto.RegisterType((*WithdrawalEventByIDRequest)(nil), "gctrpc.WithdrawalEventByIDRequest") - proto.RegisterType((*WithdrawalEventByIDResponse)(nil), "gctrpc.WithdrawalEventByIDResponse") - proto.RegisterType((*WithdrawalEventsByExchangeRequest)(nil), "gctrpc.WithdrawalEventsByExchangeRequest") - proto.RegisterType((*WithdrawalEventsByDateRequest)(nil), "gctrpc.WithdrawalEventsByDateRequest") - proto.RegisterType((*WithdrawalEventsByExchangeResponse)(nil), "gctrpc.WithdrawalEventsByExchangeResponse") - proto.RegisterType((*WithdrawalEventResponse)(nil), "gctrpc.WithdrawalEventResponse") - proto.RegisterType((*WithdrawlExchangeEvent)(nil), "gctrpc.WithdrawlExchangeEvent") - proto.RegisterType((*WithdrawalRequestEvent)(nil), "gctrpc.WithdrawalRequestEvent") - proto.RegisterType((*FiatWithdrawalEvent)(nil), "gctrpc.FiatWithdrawalEvent") - proto.RegisterType((*CryptoWithdrawalEvent)(nil), "gctrpc.CryptoWithdrawalEvent") - proto.RegisterType((*GetLoggerDetailsRequest)(nil), "gctrpc.GetLoggerDetailsRequest") - proto.RegisterType((*GetLoggerDetailsResponse)(nil), "gctrpc.GetLoggerDetailsResponse") - proto.RegisterType((*SetLoggerDetailsRequest)(nil), "gctrpc.SetLoggerDetailsRequest") - proto.RegisterType((*GetExchangePairsRequest)(nil), "gctrpc.GetExchangePairsRequest") - proto.RegisterType((*GetExchangePairsResponse)(nil), "gctrpc.GetExchangePairsResponse") - proto.RegisterMapType((map[string]*PairsSupported)(nil), "gctrpc.GetExchangePairsResponse.SupportedAssetsEntry") - proto.RegisterType((*ExchangePairRequest)(nil), "gctrpc.ExchangePairRequest") - proto.RegisterType((*GetOrderbookStreamRequest)(nil), "gctrpc.GetOrderbookStreamRequest") - proto.RegisterType((*GetExchangeOrderbookStreamRequest)(nil), "gctrpc.GetExchangeOrderbookStreamRequest") - proto.RegisterType((*GetTickerStreamRequest)(nil), "gctrpc.GetTickerStreamRequest") - proto.RegisterType((*GetExchangeTickerStreamRequest)(nil), "gctrpc.GetExchangeTickerStreamRequest") - proto.RegisterType((*GetAuditEventRequest)(nil), "gctrpc.GetAuditEventRequest") - proto.RegisterType((*GetAuditEventResponse)(nil), "gctrpc.GetAuditEventResponse") - proto.RegisterType((*GetHistoricCandlesRequest)(nil), "gctrpc.GetHistoricCandlesRequest") - proto.RegisterType((*GetHistoricCandlesResponse)(nil), "gctrpc.GetHistoricCandlesResponse") - proto.RegisterType((*Candle)(nil), "gctrpc.Candle") - proto.RegisterType((*AuditEvent)(nil), "gctrpc.AuditEvent") - proto.RegisterType((*GCTScript)(nil), "gctrpc.GCTScript") - proto.RegisterType((*GCTScriptExecuteRequest)(nil), "gctrpc.GCTScriptExecuteRequest") - proto.RegisterType((*GCTScriptStopRequest)(nil), "gctrpc.GCTScriptStopRequest") - proto.RegisterType((*GCTScriptStopAllRequest)(nil), "gctrpc.GCTScriptStopAllRequest") - proto.RegisterType((*GCTScriptStatusRequest)(nil), "gctrpc.GCTScriptStatusRequest") - proto.RegisterType((*GCTScriptListAllRequest)(nil), "gctrpc.GCTScriptListAllRequest") - proto.RegisterType((*GCTScriptUploadRequest)(nil), "gctrpc.GCTScriptUploadRequest") - proto.RegisterType((*GCTScriptReadScriptRequest)(nil), "gctrpc.GCTScriptReadScriptRequest") - proto.RegisterType((*GCTScriptQueryRequest)(nil), "gctrpc.GCTScriptQueryRequest") - proto.RegisterType((*GCTScriptAutoLoadRequest)(nil), "gctrpc.GCTScriptAutoLoadRequest") - proto.RegisterType((*GCTScriptStatusResponse)(nil), "gctrpc.GCTScriptStatusResponse") - proto.RegisterType((*GCTScriptQueryResponse)(nil), "gctrpc.GCTScriptQueryResponse") - proto.RegisterType((*GCTScriptGenericResponse)(nil), "gctrpc.GCTScriptGenericResponse") +type CancelAllOrdersResponse_Orders struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Exchange string `protobuf:"bytes,1,opt,name=exchange,proto3" json:"exchange,omitempty"` + OrderStatus map[string]string `protobuf:"bytes,2,rep,name=order_status,json=orderStatus,proto3" json:"order_status,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } -func init() { - proto.RegisterFile("rpc.proto", fileDescriptor_77a6da22d6a3feb1) +func (x *CancelAllOrdersResponse_Orders) Reset() { + *x = CancelAllOrdersResponse_Orders{} + if protoimpl.UnsafeEnabled { + mi := &file_rpc_proto_msgTypes[137] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } } -var fileDescriptor_77a6da22d6a3feb1 = []byte{ - // 5960 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x7c, 0x4d, 0x6c, 0x24, 0xc7, - 0x75, 0x30, 0x7a, 0x38, 0xfc, 0x99, 0xc7, 0xdf, 0x2d, 0xfe, 0xcd, 0xce, 0x92, 0xcb, 0x65, 0xc9, - 0x5a, 0xed, 0xca, 0x12, 0x29, 0xad, 0xe4, 0xcf, 0xb2, 0xec, 0xcf, 0x0e, 0x97, 0x2b, 0xd1, 0x6b, - 0xcb, 0xd2, 0xba, 0x49, 0x49, 0x80, 0x1c, 0x68, 0xd2, 0x33, 0x5d, 0x24, 0x3b, 0xdb, 0xd3, 0x3d, - 0xea, 0xee, 0xe1, 0xee, 0xc8, 0x08, 0x62, 0x08, 0x49, 0x10, 0x20, 0x41, 0x82, 0xc0, 0x30, 0x92, - 0x00, 0x39, 0xe5, 0x14, 0xe4, 0x62, 0x20, 0xc8, 0x21, 0xc8, 0xc1, 0xc8, 0x35, 0x08, 0x7c, 0x0a, - 0x10, 0xf8, 0x92, 0x53, 0x82, 0x1c, 0x02, 0x24, 0x87, 0x00, 0xb9, 0xe4, 0x14, 0xd4, 0xab, 0x9f, - 0xae, 0xea, 0xee, 0x19, 0x0e, 0xed, 0xb5, 0x72, 0xd9, 0x9d, 0x7e, 0xf5, 0xea, 0xbd, 0x57, 0xaf, - 0x5e, 0xbd, 0x7a, 0xf5, 0xea, 0x15, 0xa1, 0x91, 0xf4, 0xbb, 0x7b, 0xfd, 0x24, 0xce, 0x62, 0x32, - 0x73, 0xd6, 0xcd, 0x92, 0x7e, 0xb7, 0xb5, 0x75, 0x16, 0xc7, 0x67, 0x21, 0xdb, 0xf7, 0xfa, 0xc1, - 0xbe, 0x17, 0x45, 0x71, 0xe6, 0x65, 0x41, 0x1c, 0xa5, 0x02, 0xab, 0xb5, 0x23, 0x5b, 0xf1, 0xab, - 0x33, 0x38, 0xdd, 0xcf, 0x82, 0x1e, 0x4b, 0x33, 0xaf, 0xd7, 0x17, 0x08, 0x74, 0x05, 0x96, 0x8e, - 0x58, 0xf6, 0x30, 0x3a, 0x8d, 0x5d, 0xf6, 0xc9, 0x80, 0xa5, 0x19, 0xfd, 0xeb, 0x3a, 0x2c, 0x6b, - 0x50, 0xda, 0x8f, 0xa3, 0x94, 0x91, 0x0d, 0x98, 0x19, 0xf4, 0x79, 0xd7, 0xa6, 0x73, 0xcb, 0xb9, - 0xd3, 0x70, 0xe5, 0x17, 0xd9, 0x87, 0x55, 0xef, 0xc2, 0x0b, 0x42, 0xaf, 0x13, 0xb2, 0x36, 0x7b, - 0xda, 0x3d, 0xf7, 0xa2, 0x33, 0x96, 0x36, 0x6b, 0xb7, 0x9c, 0x3b, 0x53, 0x2e, 0xd1, 0x4d, 0x6f, - 0xa9, 0x16, 0xf2, 0x45, 0xb8, 0xc6, 0x22, 0x0e, 0xf2, 0x0d, 0xf4, 0x29, 0x44, 0x5f, 0x91, 0x0d, - 0x39, 0xf2, 0xeb, 0xb0, 0xe1, 0xb3, 0x53, 0x6f, 0x10, 0x66, 0xed, 0xd3, 0x38, 0x61, 0x4f, 0xdb, - 0xfd, 0x24, 0xbe, 0x08, 0x7c, 0x96, 0x34, 0xeb, 0x28, 0xc5, 0x9a, 0x6c, 0x7d, 0x9b, 0x37, 0x3e, - 0x92, 0x6d, 0xe4, 0x1e, 0xac, 0xeb, 0x5e, 0x81, 0x97, 0xb5, 0xbb, 0x83, 0x24, 0x61, 0x51, 0x77, - 0xd8, 0x9c, 0xc6, 0x4e, 0xab, 0xaa, 0x53, 0xe0, 0x65, 0x87, 0xb2, 0x89, 0x7c, 0x08, 0x2b, 0xe9, - 0xa0, 0x93, 0x0e, 0xd3, 0x8c, 0xf5, 0xda, 0x69, 0xe6, 0x65, 0x83, 0xb4, 0x39, 0x73, 0x6b, 0xea, - 0xce, 0xfc, 0xbd, 0x97, 0xf6, 0x84, 0x9e, 0xf7, 0x0a, 0x2a, 0xd9, 0x3b, 0x56, 0xf8, 0xc7, 0x88, - 0xfe, 0x56, 0x94, 0x25, 0x43, 0x77, 0x39, 0xb5, 0xa1, 0xe4, 0x5d, 0x58, 0x4c, 0xfa, 0xdd, 0x36, - 0x8b, 0xfc, 0x7e, 0x1c, 0x44, 0x59, 0xda, 0x9c, 0x45, 0xaa, 0x77, 0x47, 0x51, 0x75, 0xfb, 0xdd, - 0xb7, 0x14, 0xae, 0x20, 0xb9, 0x90, 0x18, 0xa0, 0xd6, 0x7d, 0x58, 0xab, 0x62, 0x4c, 0x56, 0x60, - 0xea, 0x31, 0x1b, 0xca, 0xd9, 0xe1, 0x3f, 0xc9, 0x1a, 0x4c, 0x5f, 0x78, 0xe1, 0x80, 0xe1, 0x64, - 0xcc, 0xb9, 0xe2, 0xe3, 0xcd, 0xda, 0x1b, 0x4e, 0xeb, 0x04, 0xae, 0x95, 0xd8, 0x54, 0x10, 0xb8, - 0x6b, 0x12, 0x98, 0xbf, 0xb7, 0xaa, 0x44, 0x76, 0x1f, 0x1d, 0xaa, 0xbe, 0x06, 0x55, 0xba, 0x0b, - 0x3b, 0x47, 0x2c, 0x3b, 0x8c, 0x7b, 0xbd, 0x41, 0x14, 0x74, 0xd1, 0x08, 0x5d, 0x16, 0x7a, 0x43, - 0x96, 0xa4, 0xca, 0xb2, 0xde, 0x85, 0xb5, 0xaa, 0x76, 0xd2, 0x84, 0x59, 0x39, 0xf7, 0xc8, 0x7f, - 0xce, 0x55, 0x9f, 0x64, 0x0b, 0x1a, 0xdd, 0x38, 0x8a, 0x58, 0x37, 0x63, 0xbe, 0x1c, 0x48, 0x0e, - 0xa0, 0xbf, 0x53, 0x83, 0x5b, 0xa3, 0x79, 0x4a, 0xd3, 0xfd, 0x14, 0x36, 0xba, 0x26, 0x42, 0x3b, - 0x91, 0x18, 0x4d, 0x07, 0xa7, 0xe2, 0xd0, 0x98, 0x8a, 0xb1, 0x94, 0xf6, 0x2a, 0x5b, 0xc5, 0x24, - 0xad, 0x77, 0xab, 0xda, 0x5a, 0xa7, 0xd0, 0x1a, 0xdd, 0xa9, 0x42, 0xe5, 0xf7, 0x6c, 0x95, 0x6f, - 0x29, 0xd1, 0xaa, 0x88, 0x98, 0xba, 0xff, 0x32, 0x6c, 0x1e, 0xb1, 0x88, 0x25, 0x41, 0x57, 0x1b, - 0x87, 0xd4, 0x39, 0xd7, 0xa0, 0xb6, 0x49, 0xc9, 0x2a, 0x07, 0xd0, 0x16, 0x34, 0xcb, 0x1d, 0xc5, - 0x70, 0xe9, 0x06, 0xac, 0x1d, 0xb1, 0x4c, 0xc3, 0xf5, 0x2c, 0xfe, 0xc4, 0x81, 0x75, 0x6c, 0x48, - 0x3b, 0xe9, 0x50, 0x34, 0x48, 0x55, 0xff, 0x1a, 0x5c, 0xd3, 0xa4, 0x53, 0xb5, 0x8c, 0x84, 0x96, - 0x5f, 0x33, 0xb4, 0x5c, 0xee, 0x99, 0x2f, 0xa6, 0xd4, 0x5c, 0x4d, 0xf9, 0x9a, 0x94, 0xe0, 0xd6, - 0x21, 0xac, 0x57, 0xa2, 0x5e, 0xc5, 0xfe, 0x69, 0x13, 0x36, 0x8e, 0x58, 0x66, 0x98, 0xb1, 0x61, - 0xa0, 0xf3, 0x06, 0x98, 0xdb, 0x65, 0x9a, 0x79, 0x49, 0x96, 0xdb, 0xa5, 0xfc, 0x24, 0xcf, 0xc3, - 0x52, 0x18, 0xa4, 0x19, 0x8b, 0xda, 0x9e, 0xef, 0x27, 0x2c, 0x15, 0x2e, 0xaf, 0xe1, 0x2e, 0x0a, - 0xe8, 0x81, 0x00, 0xd2, 0xbf, 0x75, 0xf8, 0xc4, 0x14, 0x58, 0x49, 0x65, 0xbd, 0x03, 0x8d, 0xdc, - 0x2b, 0x08, 0x25, 0xed, 0x19, 0x4a, 0xaa, 0xea, 0xb3, 0x57, 0x70, 0x0d, 0x39, 0x81, 0xd6, 0x77, - 0x61, 0xe9, 0x59, 0x2f, 0xe8, 0x37, 0xa0, 0x25, 0x6d, 0x43, 0x79, 0xe4, 0x77, 0xbd, 0x1e, 0x53, - 0x76, 0xd5, 0x82, 0x39, 0xe5, 0xc0, 0x25, 0x0f, 0xfd, 0x4d, 0xb7, 0xe1, 0x46, 0x65, 0x4f, 0x69, - 0x58, 0xfb, 0xb0, 0x7a, 0xc4, 0x32, 0xed, 0xe6, 0x15, 0xc5, 0x91, 0x5e, 0x80, 0xbe, 0x8e, 0x96, - 0x68, 0x74, 0x90, 0x2a, 0xdc, 0x82, 0x46, 0xbe, 0x89, 0x48, 0xdb, 0xd6, 0x00, 0x7a, 0x0f, 0xcd, - 0x54, 0xf5, 0x7a, 0xef, 0xe4, 0x91, 0xcb, 0x44, 0xb7, 0xeb, 0x30, 0x17, 0x67, 0xfd, 0x76, 0x37, - 0xf6, 0x95, 0xe8, 0xb3, 0x71, 0xd6, 0x3f, 0x8c, 0x7d, 0x26, 0x4d, 0xc3, 0xe8, 0xa3, 0x4d, 0xe3, - 0xcf, 0xc5, 0x54, 0xda, 0x4d, 0x52, 0x8e, 0x6f, 0x41, 0x43, 0x11, 0x54, 0x53, 0xf9, 0xb2, 0x31, - 0x95, 0x55, 0x7d, 0xf6, 0xde, 0x13, 0x1c, 0xe5, 0x4c, 0xce, 0x49, 0x01, 0xd2, 0xd6, 0x57, 0x61, - 0xd1, 0x6a, 0xba, 0xcc, 0xb2, 0x1b, 0xe6, 0x94, 0xbd, 0x0e, 0x1b, 0x0f, 0x82, 0xd4, 0xdc, 0x71, - 0x27, 0x99, 0xae, 0x8f, 0x61, 0xe9, 0x91, 0x17, 0x24, 0xe9, 0xf1, 0xa0, 0xdf, 0x8f, 0xd1, 0xbc, - 0x5f, 0x80, 0xe5, 0x7c, 0x5b, 0xef, 0xf3, 0x36, 0xd9, 0x69, 0x49, 0x83, 0xb1, 0x07, 0x79, 0x0e, - 0x16, 0xd5, 0x76, 0x2e, 0xd0, 0x84, 0x48, 0x0b, 0x12, 0x88, 0x48, 0xf4, 0xb3, 0xba, 0xa5, 0x3a, - 0x2b, 0xb0, 0x20, 0x50, 0x8f, 0x3c, 0x1d, 0x56, 0xe0, 0x6f, 0xd3, 0x10, 0x6a, 0xf6, 0x76, 0xd0, - 0x84, 0xd9, 0x0b, 0x96, 0x74, 0xe2, 0x94, 0x61, 0xcc, 0x30, 0xe7, 0xaa, 0x4f, 0x2e, 0xc8, 0x20, - 0x0d, 0xa2, 0xb3, 0x76, 0xea, 0x45, 0x7e, 0x27, 0x7e, 0x8a, 0x11, 0xc2, 0x9c, 0xbb, 0x80, 0xc0, - 0x63, 0x01, 0x23, 0xbb, 0xb0, 0x70, 0x9e, 0x65, 0xfd, 0x36, 0x0f, 0x5d, 0xe2, 0x41, 0x26, 0x03, - 0x82, 0x79, 0x0e, 0x3b, 0x11, 0x20, 0xbe, 0xb0, 0x11, 0x65, 0x90, 0xb2, 0xc4, 0x3b, 0x63, 0x51, - 0xd6, 0x9c, 0x11, 0x0b, 0x9b, 0x43, 0xdf, 0x57, 0x40, 0xb2, 0x0d, 0x80, 0x68, 0xfd, 0x24, 0x7e, - 0x3a, 0x6c, 0xce, 0x0a, 0xd3, 0xe3, 0x90, 0x47, 0x1c, 0xc0, 0xf5, 0xd7, 0xf1, 0x52, 0xa6, 0x42, - 0x8f, 0x80, 0xa5, 0xcd, 0x39, 0xa1, 0x3f, 0x0e, 0x3e, 0xd4, 0x50, 0xd2, 0xe6, 0x71, 0x87, 0xd4, - 0x7a, 0xdb, 0x4b, 0x53, 0x96, 0xa5, 0xcd, 0x06, 0x1a, 0xd0, 0xeb, 0x15, 0x06, 0x54, 0x88, 0x3f, - 0x64, 0xbf, 0x03, 0xec, 0xa6, 0xe3, 0x0f, 0x0b, 0xca, 0xe3, 0x2d, 0x6f, 0x90, 0x9d, 0xb3, 0x28, - 0xe3, 0xbb, 0x07, 0x67, 0xd2, 0x0f, 0x9a, 0x80, 0xba, 0x59, 0xb1, 0x1a, 0x0e, 0xfa, 0x41, 0xeb, - 0x23, 0x1e, 0x5c, 0x94, 0xa9, 0x56, 0x98, 0xe0, 0x4b, 0xb6, 0x2b, 0xd9, 0x50, 0xc2, 0xda, 0x76, - 0x64, 0x9a, 0xe6, 0x13, 0x58, 0x39, 0x62, 0xd9, 0x49, 0xd0, 0x7d, 0xcc, 0x92, 0x09, 0x8c, 0x92, - 0xdc, 0x81, 0x3a, 0xb7, 0x28, 0xc9, 0x60, 0x4d, 0xef, 0x84, 0x32, 0x62, 0xe3, 0x8c, 0x5c, 0xc4, - 0xe0, 0x73, 0x81, 0x9a, 0x6b, 0x67, 0xc3, 0xbe, 0xb0, 0x8b, 0x86, 0xdb, 0x40, 0xc8, 0xc9, 0xb0, - 0xcf, 0xe8, 0x07, 0xb0, 0x60, 0x76, 0xe2, 0x4e, 0xc3, 0x67, 0x61, 0xd0, 0x0b, 0x32, 0x96, 0x28, - 0xa7, 0xa1, 0x01, 0xdc, 0x1e, 0xf9, 0x14, 0x49, 0x3b, 0xc6, 0xdf, 0x7c, 0xbd, 0x7d, 0x32, 0x88, - 0x33, 0x45, 0x5b, 0x7c, 0xd0, 0x1f, 0xd5, 0x60, 0x49, 0x0d, 0x47, 0x1a, 0xb3, 0x92, 0xd9, 0xb9, - 0x54, 0xe6, 0x5d, 0x58, 0x08, 0xbd, 0x34, 0x6b, 0x0f, 0xfa, 0xbe, 0xa7, 0x42, 0x9b, 0x29, 0x77, - 0x9e, 0xc3, 0xde, 0x17, 0x20, 0x6e, 0xd1, 0x2a, 0x72, 0xc5, 0xb5, 0x25, 0xb9, 0x2f, 0x74, 0xcd, - 0xc1, 0x10, 0xa8, 0xf3, 0x3e, 0x68, 0xed, 0x8e, 0x8b, 0xbf, 0x39, 0xec, 0x3c, 0x38, 0x3b, 0x47, - 0xeb, 0x76, 0x5c, 0xfc, 0xcd, 0x67, 0x30, 0x8c, 0x9f, 0xa0, 0x2d, 0x3b, 0x2e, 0xff, 0xc9, 0x21, - 0x9d, 0xc0, 0x47, 0xd3, 0x75, 0x5c, 0xfe, 0x93, 0x43, 0xbc, 0xf4, 0x31, 0x1a, 0xaa, 0xe3, 0xf2, - 0x9f, 0x3c, 0xea, 0xbf, 0x88, 0xc3, 0x41, 0x8f, 0x35, 0x1b, 0x08, 0x94, 0x5f, 0xe4, 0x06, 0x34, - 0xfa, 0x49, 0xd0, 0x65, 0x6d, 0x2f, 0x3b, 0x47, 0x63, 0x72, 0xdc, 0x39, 0x04, 0x1c, 0x64, 0xe7, - 0x74, 0x15, 0xae, 0xe9, 0x89, 0xd6, 0xde, 0xf3, 0x43, 0x98, 0x95, 0x90, 0xb1, 0x93, 0xfe, 0x0a, - 0xcc, 0x66, 0x02, 0xad, 0x59, 0xc3, 0x55, 0xa0, 0x0d, 0xcb, 0xd6, 0xb4, 0xab, 0xd0, 0xe8, 0x37, - 0x80, 0x98, 0xdc, 0xe4, 0x44, 0xdc, 0xcd, 0xe9, 0x08, 0x77, 0xbc, 0x6c, 0xd3, 0x49, 0x73, 0x02, - 0x9f, 0xe2, 0x66, 0xf4, 0x5e, 0xe2, 0x73, 0x47, 0x12, 0x3f, 0xfe, 0x5c, 0x4d, 0xf3, 0x3b, 0xb0, - 0xa8, 0x19, 0x3f, 0xcc, 0x58, 0x8f, 0x2b, 0xdc, 0xeb, 0xc5, 0x83, 0x28, 0x43, 0x9e, 0x8e, 0x2b, - 0xbf, 0xb8, 0x05, 0xa2, 0x7e, 0x91, 0xa5, 0xe3, 0x8a, 0x0f, 0xb2, 0x04, 0xb5, 0xc0, 0x97, 0x87, - 0xa7, 0x5a, 0xe0, 0xd3, 0xff, 0x71, 0xe0, 0x9a, 0x31, 0x90, 0x2b, 0x1b, 0x65, 0xc9, 0xe2, 0x6a, - 0x15, 0x16, 0x77, 0x17, 0xea, 0x9d, 0xc0, 0xe7, 0x67, 0x36, 0xae, 0xd7, 0x75, 0x45, 0xce, 0x1a, - 0x87, 0x8b, 0x28, 0x1c, 0xd5, 0x4b, 0x1f, 0xa7, 0xcd, 0xfa, 0x58, 0x54, 0x8e, 0x52, 0x5a, 0x0f, - 0xd3, 0xe5, 0xf5, 0x60, 0xeb, 0x72, 0xa6, 0xa8, 0x4b, 0x11, 0xad, 0x6a, 0xda, 0xda, 0xf2, 0xba, - 0x00, 0x39, 0x70, 0xec, 0xb4, 0x7e, 0x05, 0x20, 0xd6, 0x98, 0xd2, 0xfe, 0xae, 0x97, 0x84, 0xd6, - 0x26, 0x68, 0x20, 0xd3, 0x6f, 0x63, 0xa8, 0x61, 0x32, 0x97, 0xca, 0xbf, 0x67, 0xd1, 0x14, 0xb6, - 0x48, 0x4a, 0x34, 0x53, 0x8b, 0xd8, 0x6b, 0x48, 0xec, 0xa0, 0xdb, 0xe5, 0x53, 0x6f, 0x1c, 0xcc, - 0xc7, 0xee, 0xe1, 0x1f, 0xc0, 0xac, 0xec, 0x21, 0xcd, 0x42, 0x20, 0xd4, 0x02, 0x9f, 0x7c, 0x15, - 0xc0, 0xd8, 0x87, 0xc4, 0xb8, 0x6e, 0x28, 0x19, 0x64, 0x27, 0x65, 0x0d, 0xc8, 0xce, 0x40, 0xa7, - 0xa7, 0xb0, 0x5a, 0x81, 0xc2, 0x45, 0xd1, 0xc7, 0x6a, 0x29, 0x8a, 0xfa, 0x26, 0x3b, 0x30, 0x9f, - 0xc5, 0x99, 0x17, 0xb6, 0xf3, 0x1d, 0xc2, 0x71, 0x01, 0x41, 0x1f, 0x70, 0x08, 0x3a, 0xa8, 0x38, - 0x14, 0x96, 0xcb, 0x1d, 0x54, 0x1c, 0xfa, 0xd4, 0xc3, 0xc0, 0xcb, 0x1a, 0xb4, 0x54, 0xe1, 0xb8, - 0x29, 0xfb, 0x22, 0xcc, 0x79, 0xa2, 0x8b, 0x1a, 0xd8, 0x72, 0x61, 0x60, 0xae, 0x46, 0xa0, 0x04, - 0x77, 0xa0, 0xc3, 0x38, 0x3a, 0x0d, 0xce, 0x94, 0x75, 0xbc, 0x80, 0xce, 0x4a, 0xc1, 0xf2, 0x98, - 0xc4, 0xf7, 0x32, 0x0f, 0xb9, 0x2d, 0xb8, 0xf8, 0x9b, 0xfe, 0xb6, 0x03, 0x2b, 0x8f, 0xe2, 0x24, - 0x3b, 0x8d, 0xc3, 0x20, 0x96, 0xe1, 0x3d, 0x0f, 0x47, 0x54, 0xf8, 0x2f, 0xe3, 0x48, 0xf9, 0xc9, - 0x3d, 0x64, 0x37, 0x0e, 0x22, 0x61, 0xab, 0x35, 0xa9, 0xa0, 0x38, 0x88, 0xb8, 0xa9, 0x92, 0x5b, - 0x30, 0xef, 0xb3, 0xb4, 0x9b, 0x04, 0x7d, 0x7e, 0x9c, 0x93, 0x6e, 0xc1, 0x04, 0x71, 0xc2, 0x1d, - 0x2f, 0xf4, 0xa2, 0x2e, 0x93, 0x9e, 0x5d, 0x7d, 0xd2, 0x75, 0x74, 0x57, 0x5a, 0x12, 0xe3, 0x64, - 0x6d, 0x83, 0xe5, 0x50, 0xfe, 0x1f, 0x34, 0xfa, 0x0a, 0x28, 0xcd, 0xaf, 0xa9, 0xf7, 0xea, 0xc2, - 0x70, 0xdc, 0x1c, 0x95, 0x6e, 0xf1, 0xd8, 0x3f, 0xa7, 0x77, 0x3c, 0xe8, 0xf5, 0xbc, 0x64, 0xa8, - 0xb8, 0x45, 0x50, 0x3f, 0x8c, 0x83, 0x88, 0x2b, 0x8a, 0x0f, 0x4a, 0x05, 0x6f, 0xfc, 0xb7, 0x29, - 0x7a, 0xcd, 0x12, 0xdd, 0xd4, 0xd6, 0x94, 0xad, 0xad, 0x9b, 0x00, 0x7d, 0x96, 0x74, 0x59, 0x94, - 0x79, 0x67, 0x6a, 0xc4, 0x06, 0x84, 0x9e, 0x03, 0x79, 0xef, 0xf4, 0x34, 0x0c, 0x22, 0xc6, 0xd9, - 0x4a, 0x61, 0xc6, 0x68, 0x7f, 0xb4, 0x0c, 0x36, 0xa7, 0xa9, 0x12, 0xa7, 0xef, 0xc0, 0xb5, 0xf7, - 0xa2, 0x0a, 0x46, 0x8a, 0x9c, 0x33, 0x8e, 0x5c, 0xad, 0x44, 0xee, 0x9b, 0xb0, 0x60, 0x08, 0x9e, - 0x92, 0x37, 0xa0, 0x21, 0x65, 0xd4, 0x07, 0x85, 0x96, 0xf6, 0x06, 0xa5, 0x11, 0xba, 0x39, 0x32, - 0xfd, 0x13, 0x07, 0xe6, 0x73, 0xc9, 0x52, 0xf2, 0x3a, 0x4c, 0x73, 0x75, 0x2b, 0x2a, 0x37, 0x35, - 0x95, 0x1c, 0x67, 0x0f, 0xff, 0x15, 0x71, 0xa1, 0x40, 0x6e, 0x1d, 0x03, 0xe4, 0xc0, 0x8a, 0xb0, - 0x6e, 0xdf, 0x0e, 0xeb, 0xae, 0x97, 0xa9, 0x2a, 0xd1, 0x8c, 0xc8, 0xee, 0x1f, 0xea, 0xfc, 0xb8, - 0x57, 0x61, 0x2c, 0xd2, 0x06, 0x5f, 0x86, 0x79, 0xb1, 0x16, 0xb8, 0x07, 0x50, 0x02, 0x2f, 0xe4, - 0xa9, 0x8d, 0x20, 0x72, 0x01, 0xd7, 0x06, 0xb6, 0x93, 0x57, 0x61, 0x11, 0x85, 0x6d, 0xc7, 0x42, - 0x21, 0x72, 0x61, 0xdb, 0x1d, 0x16, 0x10, 0x45, 0xaa, 0x8c, 0xf4, 0x61, 0xdd, 0xea, 0xd2, 0x4e, - 0x85, 0x08, 0x72, 0x93, 0xfa, 0x9a, 0x11, 0x4a, 0x8f, 0x92, 0x52, 0x28, 0x4b, 0x12, 0x94, 0x6d, - 0x42, 0x75, 0xab, 0xdd, 0x72, 0x0b, 0xd9, 0x87, 0x05, 0xc9, 0x11, 0x35, 0x23, 0xb7, 0x38, 0x5b, - 0xc6, 0x79, 0xd1, 0x11, 0x11, 0x48, 0x0f, 0xd6, 0xcc, 0x0e, 0x5a, 0xc2, 0x69, 0xec, 0xf8, 0xd5, - 0xc9, 0x25, 0x8c, 0x4a, 0x02, 0x92, 0x6e, 0xa9, 0xa1, 0xf5, 0xab, 0xd0, 0x1c, 0x35, 0xa0, 0x8a, - 0x69, 0x7f, 0xd1, 0x9e, 0xf6, 0xb5, 0x0a, 0x93, 0x4c, 0xcd, 0x04, 0xe2, 0x47, 0xb0, 0x39, 0x42, - 0x98, 0x2b, 0x64, 0x1d, 0x0c, 0x4b, 0x35, 0xad, 0xe9, 0x5f, 0x1c, 0x68, 0x1d, 0xf8, 0x7e, 0xc9, - 0x39, 0xe5, 0x49, 0x82, 0xcf, 0xd9, 0xe5, 0x92, 0x7d, 0x58, 0xcd, 0xcf, 0x68, 0x79, 0xbe, 0x41, - 0x1c, 0x1e, 0x89, 0x6e, 0xca, 0xd3, 0xd6, 0xbb, 0xdc, 0x38, 0x42, 0xbf, 0x9d, 0x66, 0x31, 0x3f, - 0x2e, 0x62, 0xac, 0x32, 0xc7, 0xcd, 0x21, 0xf4, 0x8f, 0x05, 0x88, 0x6e, 0xc3, 0x8d, 0xca, 0x41, - 0xca, 0x0c, 0xc9, 0x53, 0xd8, 0x76, 0x59, 0x2f, 0xbe, 0x60, 0x9f, 0xb7, 0x1a, 0xe8, 0x2d, 0xb8, - 0x39, 0x8a, 0xb3, 0x94, 0x0d, 0x53, 0x86, 0x76, 0xca, 0x5d, 0x07, 0x5b, 0xff, 0xe1, 0xc0, 0xa2, - 0x9d, 0x8c, 0x7f, 0x56, 0xe7, 0xfb, 0x97, 0x80, 0x24, 0x2c, 0xcd, 0xda, 0xfd, 0x38, 0x0c, 0xf9, - 0x31, 0xdf, 0x67, 0xa1, 0x37, 0x94, 0xd7, 0x00, 0x2b, 0xbc, 0xe5, 0x91, 0x68, 0x78, 0xc0, 0xe1, - 0x64, 0x13, 0x66, 0xbd, 0x7e, 0xd0, 0xe6, 0x96, 0x28, 0xa6, 0x69, 0xc6, 0xeb, 0x07, 0xdf, 0x66, - 0x43, 0x42, 0x61, 0x51, 0x36, 0xb4, 0x43, 0x76, 0xc1, 0x42, 0x9c, 0x9b, 0x29, 0x77, 0x5e, 0x34, - 0xbf, 0xc3, 0x41, 0xe4, 0x2e, 0xac, 0xf4, 0x93, 0x80, 0x9b, 0x74, 0x7e, 0xdf, 0x30, 0x8b, 0xd2, - 0x2c, 0x4b, 0xb8, 0x1a, 0x1d, 0xfd, 0x1e, 0x5c, 0xaf, 0xd0, 0x85, 0xf4, 0x7b, 0x5f, 0x87, 0x65, - 0xfb, 0xd6, 0x42, 0xf9, 0x3e, 0x1d, 0x09, 0x5b, 0x1d, 0xdd, 0xa5, 0x53, 0x8b, 0x8e, 0x8c, 0x68, - 0x11, 0xc7, 0xf5, 0x32, 0x9d, 0x27, 0xa3, 0x9f, 0xc0, 0x5a, 0x0e, 0x3c, 0x8c, 0xa3, 0x0b, 0x96, - 0xa4, 0xdc, 0x82, 0x09, 0xd4, 0x4f, 0x93, 0x58, 0x25, 0x79, 0xf1, 0x37, 0x8f, 0x05, 0xb3, 0x58, - 0x9a, 0x41, 0x2d, 0x8b, 0x39, 0x4e, 0xe2, 0x65, 0x6a, 0xe7, 0xc3, 0xdf, 0xdc, 0x5c, 0x03, 0x24, - 0xc2, 0xda, 0xd8, 0x26, 0xcc, 0x7f, 0x5e, 0xc2, 0x38, 0x17, 0xfa, 0x01, 0x86, 0xa4, 0xa6, 0x28, - 0x72, 0x8c, 0xff, 0x1f, 0xe6, 0xc5, 0x18, 0x79, 0x4f, 0x35, 0xbe, 0x2d, 0x6b, 0x7c, 0x05, 0x31, - 0x5d, 0x38, 0xd5, 0x50, 0xfa, 0xe3, 0x29, 0x58, 0xc0, 0x28, 0xf8, 0x01, 0xcb, 0xbc, 0x20, 0x1c, - 0x1f, 0x9f, 0x8b, 0xb8, 0xb6, 0xa6, 0xe3, 0xda, 0xe7, 0x60, 0xd1, 0x4c, 0xb2, 0x0c, 0xd5, 0x01, - 0xd9, 0x48, 0xb1, 0x0c, 0xc9, 0xf3, 0xb0, 0x84, 0xc7, 0xf5, 0x1c, 0x4b, 0xd8, 0xcc, 0x22, 0x42, - 0x35, 0x9a, 0x7d, 0xb8, 0x98, 0x2e, 0x1c, 0x2e, 0x78, 0x33, 0x06, 0xe8, 0xed, 0x34, 0xf0, 0xf5, - 0xd9, 0x03, 0x21, 0xc7, 0x81, 0x6f, 0x34, 0x63, 0xef, 0x59, 0xa3, 0x19, 0x7b, 0xf3, 0x73, 0x55, - 0xc2, 0xc4, 0xe5, 0x03, 0xde, 0xa1, 0xcd, 0xa1, 0xd1, 0x2d, 0x28, 0xe0, 0x49, 0xd0, 0xc3, 0x1b, - 0x36, 0x99, 0x30, 0x6f, 0x08, 0x8b, 0x15, 0x5f, 0xf9, 0xd1, 0x0f, 0xcc, 0xa3, 0x5f, 0x7e, 0x50, - 0x9c, 0xb7, 0x0e, 0x8a, 0x3b, 0x30, 0x1f, 0xf7, 0x59, 0xd4, 0x96, 0xc7, 0xf6, 0x05, 0x11, 0x91, - 0x70, 0xd0, 0x07, 0xe2, 0xe8, 0xbe, 0x02, 0x53, 0xa7, 0x8c, 0x35, 0x17, 0xc5, 0x21, 0xff, 0x94, - 0xf1, 0x95, 0x35, 0x93, 0x25, 0x9e, 0xcf, 0xd2, 0xe6, 0x12, 0xce, 0x9e, 0xf6, 0xfe, 0x27, 0x1c, - 0xfa, 0xcd, 0x80, 0x7b, 0xb1, 0xa1, 0x2b, 0x71, 0xe8, 0x3f, 0x3b, 0xb0, 0x60, 0x36, 0x94, 0x07, - 0xe7, 0x54, 0x0c, 0xae, 0x38, 0x75, 0x7a, 0x50, 0x53, 0xd5, 0x83, 0xaa, 0x5b, 0x83, 0x32, 0x8d, - 0x62, 0xba, 0x60, 0x14, 0xe3, 0x4f, 0x85, 0x85, 0x89, 0x9b, 0x2d, 0x4e, 0x9c, 0xd4, 0xc6, 0x9c, - 0xd6, 0x86, 0x4c, 0x53, 0xa1, 0x4d, 0xa6, 0x93, 0xe4, 0x02, 0x6c, 0xfe, 0xb5, 0x22, 0x7f, 0x75, - 0xf8, 0x9e, 0xba, 0xec, 0xf0, 0x4d, 0x0f, 0xf0, 0x24, 0xa2, 0x18, 0xcb, 0xe5, 0xf5, 0x12, 0xcc, - 0xa0, 0xb0, 0x6a, 0x65, 0xad, 0x59, 0x47, 0x47, 0xb9, 0x68, 0x5c, 0x89, 0x43, 0xbf, 0x89, 0xf7, - 0xb6, 0xd8, 0x34, 0x89, 0xe8, 0xd7, 0x61, 0x4e, 0xe8, 0x46, 0x4f, 0xcd, 0x2c, 0x7e, 0x3f, 0xf4, - 0xe9, 0xcf, 0x1c, 0x20, 0xc7, 0x83, 0x4e, 0x2f, 0x98, 0x9c, 0xda, 0xe4, 0x49, 0x11, 0x02, 0x75, - 0x9c, 0x0d, 0xb1, 0x5c, 0xf1, 0x77, 0x61, 0x05, 0xd5, 0x8b, 0x2b, 0x28, 0xb7, 0x8c, 0xe9, 0xea, - 0xbc, 0xc8, 0x8c, 0x69, 0x47, 0x7c, 0x0b, 0x0c, 0x03, 0x16, 0x65, 0x6d, 0x99, 0xe0, 0xe2, 0x5b, - 0x20, 0x02, 0x1e, 0xfa, 0xf4, 0x18, 0x56, 0xad, 0x91, 0x49, 0x4d, 0xef, 0xc2, 0x82, 0x10, 0xa0, - 0x1f, 0x7a, 0x5d, 0x7d, 0x03, 0x31, 0x8f, 0xb0, 0x47, 0x08, 0x1a, 0xa7, 0xaf, 0xdf, 0x75, 0x60, - 0xed, 0x38, 0xe8, 0x0d, 0x42, 0x2f, 0x63, 0xbf, 0x04, 0x8d, 0xe5, 0xc3, 0x9f, 0xb2, 0x86, 0xaf, - 0x34, 0x59, 0xcf, 0x35, 0x49, 0xff, 0xcb, 0x81, 0xf5, 0x82, 0x28, 0x3a, 0x0e, 0xb7, 0x8d, 0x69, - 0x44, 0x42, 0x46, 0x22, 0x19, 0x4c, 0x6b, 0x16, 0xd3, 0xe7, 0x60, 0xb1, 0x17, 0x44, 0x41, 0x6f, - 0xd0, 0x6b, 0x9b, 0x6b, 0x78, 0x41, 0x02, 0x1f, 0xe1, 0x14, 0x70, 0x24, 0xef, 0xa9, 0x81, 0x54, - 0x97, 0x48, 0x02, 0x28, 0x90, 0x5e, 0x81, 0xb5, 0xfc, 0xac, 0xd4, 0x3e, 0xf3, 0x82, 0xa8, 0x1d, - 0xc6, 0x69, 0x2a, 0xe7, 0x98, 0xe4, 0x6d, 0x47, 0x5e, 0x10, 0xbd, 0x13, 0xa7, 0xa9, 0xe1, 0x24, - 0x67, 0x4c, 0x27, 0x49, 0xff, 0xd0, 0x81, 0x95, 0x0f, 0xcf, 0xbd, 0x90, 0xdd, 0x8f, 0x7b, 0x9d, - 0x67, 0xab, 0xfb, 0x5d, 0x58, 0x10, 0xb9, 0xce, 0xcc, 0x4b, 0xce, 0x98, 0x9a, 0x81, 0x79, 0x84, - 0x9d, 0x20, 0xa8, 0x72, 0x1a, 0xfe, 0xd3, 0x01, 0x72, 0xc8, 0xc3, 0xc7, 0x70, 0x62, 0x7b, 0xe0, - 0xae, 0x44, 0xe4, 0x2a, 0x72, 0x0b, 0x6b, 0x48, 0xc8, 0x43, 0xdb, 0xfc, 0xa6, 0x2c, 0xf3, 0xd3, - 0xa3, 0xa9, 0x5f, 0x31, 0x21, 0x59, 0xda, 0xe7, 0x9e, 0x87, 0xa5, 0x27, 0x5e, 0x18, 0xb2, 0x4c, - 0x5f, 0x6b, 0xca, 0xdb, 0x0f, 0x01, 0x55, 0x79, 0x0f, 0x35, 0xe0, 0x59, 0x63, 0xc0, 0xeb, 0xb0, - 0x6a, 0x8d, 0x57, 0x46, 0x8b, 0xaf, 0xc3, 0x86, 0x00, 0x1f, 0x84, 0xe1, 0xc4, 0x5e, 0x95, 0xfe, - 0x59, 0x0d, 0x36, 0x4b, 0xdd, 0x74, 0x58, 0x65, 0x9b, 0xf1, 0x6d, 0x3d, 0xdc, 0xea, 0x0e, 0x7b, - 0xf2, 0x53, 0xf6, 0x6a, 0xfd, 0x9d, 0x03, 0x33, 0x02, 0x34, 0x76, 0x36, 0x3e, 0x52, 0x0e, 0x41, - 0x1a, 0x9c, 0x38, 0x85, 0x7e, 0x79, 0x32, 0x66, 0xe2, 0x3f, 0xf3, 0x2a, 0x5b, 0x78, 0x12, 0x79, - 0x8b, 0xfd, 0x75, 0x58, 0x29, 0x22, 0x5c, 0xe9, 0x9a, 0x4f, 0x64, 0xb2, 0xde, 0xba, 0x60, 0xc6, - 0xd5, 0xf5, 0x4f, 0x1c, 0x58, 0x3e, 0x8c, 0x23, 0x3f, 0xe0, 0x9b, 0xee, 0x23, 0x2f, 0xf1, 0x7a, - 0xa9, 0xac, 0x9e, 0x10, 0x20, 0x75, 0xd5, 0xa1, 0x01, 0x23, 0x92, 0xca, 0xdb, 0x00, 0xdd, 0x73, - 0xd6, 0x7d, 0xdc, 0x96, 0x59, 0x5e, 0x51, 0x72, 0xc1, 0x21, 0xf7, 0x03, 0x3f, 0x25, 0x2f, 0xc3, - 0x6a, 0xde, 0xdc, 0xf6, 0x22, 0xbf, 0x2d, 0x53, 0xbc, 0x78, 0xa3, 0xa4, 0xf1, 0x0e, 0x22, 0xff, - 0x20, 0x7d, 0x9c, 0xf2, 0x58, 0x5a, 0x67, 0x36, 0xdb, 0x96, 0x0b, 0x5f, 0xd6, 0xf0, 0x03, 0x04, - 0xd3, 0xff, 0x76, 0x70, 0x07, 0x54, 0xa3, 0x92, 0xb3, 0x9d, 0x27, 0x33, 0x31, 0xc7, 0x6d, 0x4d, - 0x59, 0xad, 0x30, 0x65, 0x04, 0xea, 0x41, 0xc6, 0x7a, 0x6a, 0x63, 0xe1, 0xbf, 0xc9, 0x7d, 0x58, - 0xd1, 0x23, 0x6e, 0xf7, 0x51, 0x2d, 0x72, 0x99, 0x6c, 0xe6, 0x87, 0x75, 0x4b, 0x6b, 0xee, 0x72, - 0xb7, 0xa0, 0x46, 0xb5, 0xbc, 0xa6, 0x27, 0x72, 0xd4, 0x5d, 0xd4, 0xb6, 0xf4, 0x4f, 0xe2, 0x4b, - 0x48, 0xcd, 0xba, 0x83, 0x8c, 0xf9, 0xf2, 0x28, 0xa1, 0xbf, 0xe9, 0xbf, 0x39, 0xb0, 0x7c, 0xe0, - 0xfb, 0x38, 0xee, 0x49, 0xdc, 0x84, 0x1a, 0x65, 0xed, 0x92, 0x51, 0x4e, 0xfd, 0x9c, 0xa3, 0xfc, - 0x85, 0x9d, 0xc8, 0x08, 0x25, 0x50, 0x0a, 0x2b, 0xf9, 0x38, 0xab, 0xa7, 0x97, 0x7e, 0x01, 0x88, - 0x38, 0x7e, 0x5a, 0xea, 0x28, 0x62, 0xad, 0xc3, 0xaa, 0x85, 0x25, 0x7d, 0xcd, 0xdb, 0x70, 0xe7, - 0x88, 0x65, 0x87, 0xc9, 0xb0, 0x9f, 0xc5, 0x2a, 0xdc, 0x7f, 0xc0, 0xfa, 0x71, 0x1a, 0x28, 0xcf, - 0xc5, 0x26, 0xf2, 0x3e, 0x7f, 0xef, 0xc0, 0xdd, 0x09, 0x08, 0xc9, 0x21, 0x7c, 0x5c, 0xce, 0xe9, - 0xfd, 0x8a, 0x59, 0x52, 0x34, 0x11, 0x95, 0x3d, 0x0d, 0x91, 0x95, 0x1d, 0x9a, 0x64, 0xeb, 0x6b, - 0xb0, 0x64, 0x37, 0x5e, 0xc9, 0x55, 0x84, 0x70, 0xfb, 0x12, 0x21, 0x26, 0xb1, 0xb9, 0xdb, 0xb0, - 0xd4, 0xb5, 0x48, 0x48, 0x46, 0x05, 0x28, 0x3d, 0x84, 0x17, 0x2e, 0xe5, 0x26, 0xd5, 0x36, 0x32, - 0x83, 0x41, 0x7f, 0xec, 0xc0, 0xea, 0x87, 0x41, 0x76, 0xee, 0x27, 0xde, 0x93, 0xb7, 0x03, 0x6f, - 0xa2, 0x45, 0x61, 0xde, 0x47, 0xd4, 0x0a, 0xf7, 0x11, 0xa3, 0xa2, 0xa7, 0x42, 0x32, 0xa4, 0x5e, - 0xce, 0x09, 0xdd, 0x86, 0xe5, 0x8e, 0x17, 0x3d, 0x6e, 0x1b, 0xdb, 0xb2, 0xb0, 0xf6, 0x45, 0x0e, - 0x56, 0x97, 0x15, 0x3e, 0xfd, 0x27, 0x07, 0xd6, 0x95, 0xc4, 0x62, 0xf0, 0x93, 0xc8, 0x6c, 0x68, - 0xa0, 0x66, 0xe7, 0x70, 0x76, 0x60, 0x5e, 0xfe, 0x6c, 0x67, 0xde, 0x99, 0xf4, 0x67, 0x20, 0x41, - 0x27, 0xde, 0x99, 0x35, 0xdc, 0xfa, 0xc8, 0xe1, 0xda, 0xb1, 0xb2, 0x3c, 0xeb, 0xcc, 0xe4, 0x27, - 0xbf, 0x82, 0x02, 0x66, 0xcb, 0xd9, 0xa0, 0x37, 0x61, 0x45, 0x8d, 0xab, 0x62, 0xc9, 0x8a, 0xb3, - 0x5c, 0x1e, 0x93, 0xd5, 0xac, 0x98, 0xec, 0x25, 0x68, 0xa9, 0xbe, 0x5e, 0x88, 0x0b, 0xf5, 0xfe, - 0xf0, 0xe1, 0x83, 0xf2, 0x92, 0x46, 0x2a, 0xf4, 0x04, 0x6e, 0x54, 0x62, 0x4b, 0xa6, 0x5f, 0x82, - 0x69, 0xc6, 0x81, 0x32, 0x60, 0xdb, 0x51, 0x0b, 0xac, 0xd0, 0x47, 0x5f, 0xce, 0x09, 0x6c, 0xca, - 0x60, 0xb7, 0x80, 0x91, 0xde, 0x1f, 0x5e, 0xa1, 0x34, 0xa6, 0xea, 0xe0, 0x8a, 0x95, 0x02, 0x38, - 0x27, 0xd3, 0xae, 0xf8, 0xa0, 0x43, 0xd8, 0x2e, 0xb3, 0x79, 0xe0, 0x65, 0x13, 0xb1, 0x58, 0x83, - 0x69, 0xac, 0x2a, 0x53, 0x6b, 0x17, 0x3f, 0xf8, 0x6c, 0xb1, 0x48, 0x05, 0x7a, 0xfc, 0x67, 0xce, - 0xba, 0x6e, 0xb2, 0xfe, 0x1e, 0xd0, 0x71, 0x23, 0x2c, 0xab, 0x6f, 0xea, 0x0a, 0xea, 0xfb, 0x51, - 0x0d, 0x36, 0x47, 0xa0, 0x94, 0x34, 0xf3, 0xa6, 0x31, 0x44, 0xb1, 0xf5, 0xdc, 0x2c, 0x72, 0x09, - 0x95, 0x5c, 0x82, 0x52, 0xae, 0x82, 0x37, 0x60, 0x36, 0x11, 0x9a, 0x92, 0xbb, 0xcf, 0xcd, 0xb2, - 0x80, 0x52, 0x95, 0xa2, 0xab, 0x42, 0x27, 0x5f, 0x01, 0xc0, 0x44, 0x03, 0xf3, 0xdb, 0x5e, 0x26, - 0x37, 0xe8, 0xd6, 0x9e, 0xa8, 0x79, 0xde, 0x53, 0x35, 0xcf, 0x7b, 0x27, 0xaa, 0xe6, 0xd9, 0x6d, - 0x48, 0xec, 0x03, 0xec, 0x2a, 0x6f, 0x9b, 0x79, 0xd7, 0x99, 0xcb, 0xbb, 0x4a, 0xec, 0x83, 0x8c, - 0x9e, 0xc0, 0x46, 0xf5, 0x98, 0x2a, 0xd3, 0x9d, 0x45, 0x4d, 0xe5, 0x0b, 0x66, 0xca, 0x5a, 0x30, - 0xff, 0xee, 0xe4, 0x64, 0xed, 0xf1, 0x8e, 0x75, 0x6f, 0x97, 0xa7, 0xb6, 0x47, 0xe5, 0x55, 0x08, - 0xd4, 0xf5, 0x0e, 0x3e, 0xed, 0xe2, 0x6f, 0xb2, 0x0f, 0xf5, 0xd3, 0x40, 0xeb, 0x43, 0x5f, 0x13, - 0x73, 0x3f, 0x5c, 0xb4, 0x04, 0x44, 0x24, 0x5f, 0x82, 0x19, 0xb1, 0x09, 0xa0, 0xff, 0x98, 0xbf, - 0xb7, 0xad, 0x03, 0x07, 0x84, 0x16, 0x3b, 0x49, 0x64, 0xfa, 0x37, 0x0e, 0xac, 0x56, 0x10, 0xe5, - 0x67, 0x77, 0x74, 0xb9, 0x86, 0x16, 0xe7, 0x38, 0xe0, 0x5d, 0xae, 0xc9, 0x5d, 0x58, 0x50, 0xae, - 0x18, 0xdb, 0x85, 0x2a, 0xe6, 0x25, 0x0c, 0x51, 0x9e, 0x87, 0x25, 0x8d, 0x32, 0xe8, 0x75, 0x98, - 0x2a, 0x9b, 0x59, 0x54, 0x48, 0x08, 0xc4, 0xea, 0x97, 0xb4, 0x23, 0x7d, 0x27, 0xff, 0x89, 0xcb, - 0xf0, 0x49, 0x70, 0xaa, 0x8a, 0xc2, 0xc4, 0x07, 0x06, 0x5b, 0x1d, 0x4f, 0x45, 0x32, 0xf8, 0x9b, - 0xfa, 0xb0, 0x5e, 0x39, 0xb6, 0x31, 0x49, 0xf9, 0x82, 0x43, 0xaf, 0x95, 0x1c, 0xba, 0x74, 0xce, - 0x53, 0x79, 0x22, 0xea, 0x55, 0xac, 0x99, 0x7b, 0x27, 0x3e, 0x3b, 0xcb, 0x13, 0x3d, 0xd2, 0xe8, - 0x37, 0x60, 0x26, 0x44, 0xb8, 0x2a, 0xc6, 0x17, 0x5f, 0x34, 0xc2, 0xcc, 0x7c, 0xa1, 0x4b, 0x7e, - 0xa7, 0x1d, 0x44, 0xa7, 0xb1, 0xcc, 0x6b, 0xe0, 0x6f, 0x3e, 0x64, 0x9f, 0x75, 0x06, 0x67, 0xaa, - 0x42, 0x16, 0x3f, 0x38, 0xe6, 0x13, 0x2f, 0x89, 0x64, 0xe8, 0x8f, 0xbf, 0x39, 0x26, 0x4b, 0x92, - 0x38, 0x91, 0x71, 0xbe, 0xf8, 0xa0, 0x47, 0xb0, 0x79, 0x7c, 0x35, 0x11, 0xd1, 0x89, 0x61, 0xde, - 0x5d, 0x3a, 0x3b, 0xfc, 0xa0, 0xdf, 0xb6, 0xea, 0x03, 0xb1, 0x86, 0x6c, 0x42, 0xcf, 0x89, 0x51, - 0xa7, 0x22, 0x86, 0x1f, 0xf4, 0x67, 0x0e, 0xaa, 0xa1, 0x40, 0x4d, 0x57, 0x28, 0x97, 0xeb, 0xed, - 0x44, 0xcc, 0xf6, 0xa5, 0x8a, 0x7a, 0x3b, 0xab, 0xef, 0x64, 0x05, 0x77, 0xbf, 0xd4, 0x1a, 0xba, - 0x4f, 0x61, 0xd5, 0x14, 0xed, 0x73, 0xcd, 0x4f, 0xfe, 0xc0, 0xc1, 0xbb, 0x0e, 0x9d, 0x2b, 0x3a, - 0xce, 0x12, 0xe6, 0xf5, 0x3e, 0xd7, 0x72, 0xa9, 0x6f, 0xc0, 0xae, 0x59, 0x4d, 0x7b, 0x65, 0x49, - 0xe8, 0x6f, 0x60, 0x91, 0x89, 0x28, 0x01, 0xfb, 0x3f, 0x90, 0xff, 0x6b, 0x70, 0xd3, 0x90, 0xff, - 0x8a, 0x62, 0xd0, 0x3f, 0x75, 0xf0, 0x3e, 0xe8, 0x60, 0xe0, 0x07, 0x99, 0x75, 0x3a, 0xda, 0x06, - 0xc0, 0x98, 0xa1, 0xcd, 0xb7, 0x27, 0x5d, 0xe2, 0xcf, 0x21, 0x3c, 0x04, 0x21, 0xd7, 0x61, 0x8e, - 0x45, 0xbe, 0x68, 0x94, 0x71, 0x26, 0x8b, 0x7c, 0xd5, 0x24, 0x72, 0x1c, 0x9d, 0xa1, 0x95, 0x52, - 0xba, 0x3f, 0xac, 0x8e, 0x36, 0xf8, 0xb2, 0x8e, 0x4f, 0x4f, 0xf9, 0x92, 0x13, 0x7b, 0x86, 0xfc, - 0xa2, 0x87, 0xa2, 0x64, 0xc9, 0x10, 0x4d, 0xae, 0xb7, 0x17, 0x61, 0x06, 0x43, 0x89, 0x52, 0xed, - 0x93, 0x81, 0x2b, 0x31, 0xe8, 0x4f, 0x85, 0x85, 0x89, 0x8b, 0x85, 0xa0, 0x7b, 0xe8, 0x45, 0x7e, - 0x38, 0xd1, 0x81, 0xed, 0x99, 0xcd, 0x50, 0x1e, 0x8b, 0xd5, 0xf1, 0xac, 0x69, 0xc7, 0x62, 0xa2, - 0x26, 0x0d, 0x63, 0xb1, 0xe7, 0x60, 0x31, 0x0b, 0x7a, 0xac, 0x1d, 0x44, 0x19, 0x4b, 0x2e, 0x3c, - 0x75, 0x8d, 0xb8, 0xc0, 0x81, 0x0f, 0x25, 0x8c, 0x3e, 0xc0, 0x1a, 0x9a, 0xd2, 0x70, 0xa4, 0x66, - 0x6e, 0xc3, 0x4c, 0x17, 0x41, 0x52, 0x33, 0x4b, 0x46, 0x66, 0xc9, 0x0f, 0x99, 0x2b, 0x5b, 0xe9, - 0x6f, 0x39, 0x30, 0x23, 0x40, 0xb8, 0x5f, 0xe7, 0x37, 0x2c, 0xf8, 0x5b, 0x15, 0x76, 0xd6, 0xf2, - 0xc2, 0x4e, 0x55, 0xfe, 0x39, 0x65, 0x94, 0x7f, 0x12, 0xa8, 0xc7, 0x7d, 0x16, 0xa9, 0x32, 0x51, - 0xfe, 0x9b, 0x8f, 0xb5, 0x1b, 0xc6, 0x29, 0x93, 0xc7, 0x04, 0xf1, 0x61, 0x94, 0x7c, 0xce, 0x98, - 0x25, 0x9f, 0xf4, 0x29, 0x40, 0x3e, 0x65, 0x3a, 0x72, 0x90, 0x61, 0x0e, 0x46, 0x0e, 0x37, 0x01, - 0x02, 0x9f, 0x45, 0x59, 0x70, 0x1a, 0x30, 0x55, 0x3a, 0x68, 0x40, 0xf8, 0xee, 0xd8, 0x63, 0x69, - 0xaa, 0xea, 0x6e, 0x1a, 0xae, 0xfa, 0x24, 0x5b, 0xd0, 0xd0, 0xaf, 0xd2, 0x54, 0xee, 0x5f, 0x03, - 0x68, 0x07, 0x1a, 0x47, 0x87, 0x27, 0xc7, 0x18, 0xcd, 0x70, 0xc6, 0xef, 0xbf, 0xff, 0xf0, 0x81, - 0x62, 0xcc, 0x7f, 0xeb, 0x98, 0xab, 0x66, 0xc4, 0x5c, 0x84, 0x5b, 0x44, 0x76, 0xae, 0x52, 0x41, - 0xfc, 0x37, 0xb7, 0xf6, 0x88, 0x3d, 0xcd, 0xda, 0xc9, 0x40, 0x1d, 0xf6, 0x66, 0xf9, 0xb7, 0x3b, - 0x88, 0xe8, 0x03, 0xd8, 0xd4, 0x3c, 0xde, 0x12, 0x89, 0x19, 0x65, 0x77, 0x77, 0x61, 0x46, 0x44, - 0x52, 0xb2, 0x80, 0xf2, 0x9a, 0xde, 0x27, 0x54, 0x07, 0x57, 0x22, 0xd0, 0x03, 0x58, 0xd3, 0xc0, - 0xe3, 0x2c, 0xee, 0xff, 0x1c, 0x24, 0xae, 0x1b, 0x82, 0x70, 0x12, 0x07, 0xa1, 0x0a, 0x04, 0xf1, - 0x69, 0x42, 0xde, 0xc4, 0x23, 0x46, 0xd5, 0x62, 0x76, 0x7a, 0x27, 0x48, 0x33, 0xa3, 0xd3, 0x5f, - 0x38, 0x46, 0xaf, 0xf7, 0xfb, 0x61, 0xec, 0xf9, 0x4a, 0xaa, 0x1d, 0x98, 0x17, 0x4c, 0xcd, 0x58, - 0x0b, 0x04, 0x08, 0x43, 0xa9, 0x1c, 0x01, 0xab, 0xe1, 0x6a, 0x26, 0xc2, 0x03, 0x2f, 0xf3, 0x74, - 0x9d, 0xdc, 0x54, 0x5e, 0x27, 0xc7, 0x97, 0xa9, 0x97, 0x74, 0xcf, 0x83, 0x0b, 0xe6, 0xcb, 0x60, - 0x41, 0x7f, 0xf3, 0x79, 0x8e, 0x2f, 0x58, 0xf2, 0x24, 0x09, 0x32, 0x61, 0x75, 0x73, 0x6e, 0x0e, - 0xa0, 0x47, 0xd0, 0xca, 0xf5, 0xc1, 0x3c, 0x5f, 0xfd, 0xba, 0xb2, 0x0e, 0xef, 0xc3, 0xba, 0x06, - 0x7e, 0x77, 0xc0, 0x74, 0xd9, 0xda, 0x55, 0x68, 0x7c, 0x0b, 0x9a, 0x1a, 0x78, 0x30, 0xc8, 0xe2, - 0x77, 0x0c, 0xc5, 0x6d, 0x58, 0x64, 0x1a, 0xaa, 0x4f, 0xe1, 0x20, 0x3c, 0xa7, 0xe3, 0xfa, 0x8f, - 0xad, 0x39, 0x15, 0x13, 0x97, 0x3f, 0xab, 0xd4, 0xaf, 0xa4, 0xcc, 0x4b, 0xdf, 0x2f, 0xc2, 0xac, - 0x20, 0xaa, 0xf2, 0xce, 0x15, 0xa2, 0x2a, 0x0c, 0x1a, 0x1b, 0x53, 0x2c, 0xc7, 0x7b, 0x09, 0xf9, - 0x5c, 0x11, 0xb5, 0x4b, 0x14, 0x61, 0xcd, 0x71, 0x43, 0xd6, 0x42, 0xbe, 0x6d, 0x28, 0x47, 0xbe, - 0xf3, 0xb9, 0x94, 0xa5, 0xa2, 0x53, 0xcb, 0xe9, 0xdc, 0xfb, 0xe9, 0x1b, 0xb0, 0x74, 0x14, 0x8b, - 0x58, 0x1a, 0xef, 0x94, 0x13, 0xf2, 0x1e, 0xcc, 0xca, 0x17, 0x91, 0x64, 0xa3, 0xf4, 0x44, 0x12, - 0xd5, 0xdf, 0xda, 0x1c, 0xf1, 0x74, 0x92, 0xae, 0x7e, 0xf6, 0x8f, 0xff, 0xfa, 0xc3, 0xda, 0x22, - 0x99, 0xdf, 0xbf, 0x78, 0x75, 0xff, 0x8c, 0x65, 0x18, 0xe3, 0x9e, 0xc1, 0xa2, 0xf5, 0x88, 0x8d, - 0x6c, 0x59, 0x0f, 0xd1, 0x0a, 0x6f, 0xdb, 0x5a, 0xdb, 0x63, 0x9f, 0xa9, 0xd1, 0xeb, 0xc8, 0x62, - 0x95, 0x5c, 0x93, 0x2c, 0xf2, 0xf7, 0x69, 0xe4, 0x13, 0x58, 0x7e, 0x0b, 0xab, 0x58, 0x34, 0x51, - 0xb2, 0x93, 0x13, 0xab, 0x7c, 0x9b, 0xd7, 0xba, 0x35, 0x1a, 0x41, 0x32, 0xbc, 0x81, 0x0c, 0xd7, - 0xc9, 0x2a, 0x67, 0x28, 0xaa, 0x64, 0x34, 0x4f, 0x92, 0xc2, 0x8a, 0x7c, 0xed, 0xf3, 0x4c, 0x79, - 0x6e, 0x21, 0xcf, 0x0d, 0xb2, 0xc6, 0x79, 0xfa, 0x82, 0x41, 0xce, 0x34, 0xc6, 0x4b, 0x66, 0xf3, - 0x75, 0x1a, 0xb9, 0x39, 0xf2, 0xd9, 0x9a, 0x60, 0xb9, 0x73, 0xc9, 0xb3, 0x36, 0x7b, 0x94, 0x67, - 0x8c, 0xe3, 0xea, 0x97, 0x6d, 0xe4, 0x87, 0x22, 0x9e, 0xaf, 0x7c, 0x47, 0x49, 0x5e, 0xb8, 0xfc, - 0xf1, 0xa6, 0x90, 0xe1, 0xce, 0xa4, 0xaf, 0x3c, 0xe9, 0x17, 0x50, 0x98, 0x9b, 0x64, 0x4b, 0x0a, - 0x63, 0xbd, 0xec, 0x54, 0x6f, 0x47, 0x49, 0x17, 0x16, 0xcc, 0x27, 0x69, 0xe4, 0x46, 0xc5, 0xf1, - 0x41, 0x33, 0xdf, 0xaa, 0x6e, 0x94, 0x0c, 0x9b, 0xc8, 0x90, 0x90, 0x15, 0xc9, 0x50, 0x97, 0x98, - 0x91, 0x4f, 0x61, 0xb9, 0xf0, 0x9c, 0x8b, 0xd0, 0xc2, 0xf4, 0x55, 0x3c, 0xcd, 0x6b, 0x3d, 0x37, - 0x16, 0x47, 0x72, 0xbd, 0x89, 0x5c, 0x9b, 0x74, 0xd5, 0x98, 0x65, 0xc5, 0xf9, 0x4d, 0xe7, 0x45, - 0x92, 0xe2, 0x3c, 0x9b, 0x2f, 0x8f, 0x26, 0xe2, 0xbd, 0x73, 0xc9, 0xb3, 0xa5, 0xd2, 0x5c, 0x2b, - 0x9e, 0xb8, 0x5a, 0x53, 0x7c, 0xcd, 0x61, 0xbc, 0x97, 0x3b, 0x8c, 0xfd, 0xc9, 0xc6, 0xbc, 0x5d, - 0xfd, 0xde, 0x4e, 0x3e, 0xf9, 0xa3, 0x2d, 0xe4, 0xba, 0x46, 0x48, 0x81, 0x6b, 0x9c, 0xf5, 0x49, - 0x6a, 0x3d, 0x47, 0x94, 0x4c, 0x6d, 0xab, 0xae, 0x78, 0x10, 0x58, 0x39, 0x52, 0xf3, 0x85, 0xdf, - 0xc8, 0x91, 0xc6, 0x59, 0x3f, 0x25, 0x4f, 0x61, 0x49, 0xb8, 0x8b, 0x67, 0x3f, 0xb3, 0xdb, 0xc8, - 0x77, 0x93, 0x92, 0xdc, 0x67, 0x98, 0x13, 0xfb, 0x21, 0x34, 0xf4, 0x21, 0x88, 0x34, 0x8d, 0x41, - 0x58, 0x6f, 0xb3, 0x5a, 0x23, 0x5e, 0xde, 0x28, 0x6b, 0xa5, 0x8b, 0x72, 0x54, 0xe2, 0x1d, 0x0d, - 0x27, 0xfc, 0x3d, 0x80, 0xfc, 0x29, 0x0e, 0xb9, 0x5e, 0xa2, 0xac, 0x35, 0xd7, 0xaa, 0x6a, 0x52, - 0x8f, 0x8e, 0x91, 0xfc, 0x0a, 0x59, 0xb2, 0xc8, 0xab, 0xf5, 0xa6, 0xcf, 0x7c, 0xd6, 0x7a, 0x2b, - 0x3e, 0xde, 0x69, 0x8d, 0x7e, 0xb5, 0xa1, 0x26, 0x85, 0xaa, 0xc5, 0xa6, 0x6f, 0x21, 0xf9, 0x08, - 0xc4, 0x66, 0x61, 0x3c, 0x17, 0xd9, 0xaa, 0xe2, 0x52, 0xb9, 0x59, 0x94, 0xdf, 0x7e, 0x94, 0x36, - 0x8b, 0xfc, 0x89, 0x07, 0x79, 0x8c, 0x7f, 0x74, 0xc1, 0x78, 0xed, 0x40, 0x4c, 0x5a, 0xe5, 0xa7, - 0x1f, 0xad, 0x9b, 0xa3, 0x9a, 0xd3, 0x6a, 0xfb, 0x96, 0xd9, 0x2e, 0x5c, 0x54, 0x43, 0x71, 0x6e, - 0xcc, 0x7b, 0x89, 0x33, 0xe7, 0x2f, 0xca, 0xf2, 0x16, 0xb2, 0x6c, 0x91, 0x66, 0x99, 0x65, 0x8a, - 0x0c, 0x5e, 0x71, 0xa4, 0xad, 0x89, 0xe7, 0x15, 0x96, 0xad, 0x59, 0xaf, 0x30, 0x5a, 0xd7, 0x2b, - 0x5a, 0x24, 0x97, 0x75, 0xe4, 0xb2, 0x4c, 0x16, 0xb5, 0x37, 0x46, 0x5a, 0xc2, 0x1c, 0x74, 0x8d, - 0xaa, 0x65, 0x0e, 0xc5, 0xc7, 0x11, 0x96, 0xfb, 0x2d, 0x3d, 0x91, 0x28, 0xb9, 0x5f, 0xfd, 0x08, - 0x82, 0xfc, 0xa6, 0xfd, 0xd6, 0x42, 0xd5, 0x7e, 0xd3, 0xb1, 0xc5, 0xda, 0xa5, 0x85, 0x3a, 0xb2, - 0xa0, 0x9b, 0xee, 0x20, 0xe7, 0xeb, 0x64, 0xb3, 0xc8, 0x59, 0x16, 0x87, 0x93, 0xcf, 0x1c, 0x58, - 0xad, 0x28, 0x13, 0xce, 0x25, 0x18, 0x5d, 0x28, 0x9d, 0x4b, 0x30, 0xae, 0xce, 0x98, 0xa2, 0x04, - 0x5b, 0x14, 0x25, 0xf0, 0x7c, 0x5f, 0x4b, 0x20, 0x53, 0x93, 0x7c, 0x51, 0xfc, 0x81, 0x03, 0x1b, - 0xd5, 0x25, 0xc1, 0xe4, 0x79, 0xfd, 0x82, 0x7c, 0x5c, 0xb1, 0x72, 0xeb, 0xf6, 0x65, 0x68, 0x52, - 0x9a, 0xe7, 0x51, 0x9a, 0x1d, 0xda, 0xe2, 0xd2, 0x24, 0x88, 0x5b, 0x25, 0xd0, 0x13, 0xac, 0x13, - 0xb0, 0x8b, 0x6e, 0x89, 0x11, 0xd6, 0x54, 0xd7, 0x26, 0xb7, 0x76, 0xc7, 0x60, 0xd8, 0x9e, 0x93, - 0xac, 0xcb, 0x09, 0xc1, 0x4a, 0x55, 0x5d, 0xbd, 0x2b, 0xdd, 0x43, 0x5e, 0xd4, 0x6a, 0xb9, 0x87, - 0x52, 0x9d, 0xae, 0xe5, 0x1e, 0xca, 0xa5, 0xb3, 0x25, 0xf7, 0x80, 0xcc, 0xb0, 0x8c, 0x96, 0x7c, - 0x84, 0xcb, 0x46, 0x16, 0xa9, 0x34, 0x8b, 0x5e, 0x26, 0xad, 0x5a, 0x36, 0x76, 0x19, 0x4a, 0xc9, - 0x4b, 0x8b, 0xda, 0x17, 0xae, 0x3d, 0x17, 0xe6, 0x14, 0x3a, 0xd9, 0x2c, 0x12, 0x50, 0x94, 0x2b, - 0xeb, 0x0c, 0xe9, 0x26, 0x12, 0xbd, 0x46, 0x17, 0x4c, 0xa2, 0x9c, 0x66, 0x07, 0xe6, 0x8d, 0x9a, - 0x3a, 0xa2, 0xfd, 0x7b, 0xb9, 0x84, 0xb0, 0x75, 0xa3, 0xb2, 0xcd, 0xf6, 0x62, 0x74, 0x99, 0x33, - 0x48, 0x11, 0x41, 0xf3, 0xf8, 0x75, 0x58, 0xb4, 0xca, 0xda, 0x72, 0xe5, 0x57, 0x15, 0xde, 0xe5, - 0xca, 0xaf, 0xac, 0x85, 0x53, 0x31, 0x2e, 0x45, 0xe5, 0xa7, 0x12, 0x45, 0xf3, 0xfa, 0x18, 0x1a, - 0xba, 0x9a, 0x2c, 0xd7, 0x7f, 0xb1, 0xc0, 0xec, 0x32, 0x1e, 0xd6, 0x1c, 0x3c, 0xe1, 0x9d, 0x3b, - 0x71, 0xaf, 0x23, 0xf5, 0x65, 0xd4, 0x4a, 0xe5, 0xfa, 0x2a, 0x17, 0x8c, 0xe5, 0xfa, 0xaa, 0x2a, - 0xae, 0xb2, 0xf4, 0xd5, 0x45, 0x04, 0x3d, 0x86, 0x04, 0x96, 0x0b, 0x35, 0x4a, 0x79, 0x44, 0x53, - 0x5d, 0x91, 0x95, 0x47, 0x34, 0x23, 0x8a, 0x9b, 0xec, 0x98, 0x51, 0xf0, 0xf3, 0xc2, 0x30, 0xb7, - 0x2d, 0xe1, 0xee, 0xc5, 0x2d, 0xa4, 0x65, 0xb7, 0x56, 0xa9, 0x92, 0x65, 0xb7, 0x76, 0xb9, 0x4f, - 0xc9, 0xdd, 0x8b, 0xd4, 0x20, 0xf9, 0x00, 0xe6, 0x54, 0xe9, 0x48, 0x6e, 0xb4, 0x85, 0xa2, 0x99, - 0x56, 0xb3, 0xdc, 0x20, 0xa9, 0x5a, 0x86, 0xeb, 0xf9, 0x3e, 0x52, 0x95, 0x13, 0x61, 0x14, 0x92, - 0xe4, 0x13, 0x51, 0xae, 0x41, 0xc9, 0x27, 0xa2, 0xaa, 0xf2, 0xc4, 0x9a, 0x08, 0xe1, 0xb9, 0x34, - 0x8f, 0xbf, 0x72, 0x30, 0x6d, 0x3d, 0xbe, 0x0e, 0x84, 0xbc, 0x72, 0x85, 0x92, 0x11, 0x21, 0xd0, - 0xab, 0x57, 0x2e, 0x32, 0xa1, 0x77, 0x50, 0x4c, 0x4a, 0xb7, 0xd5, 0x66, 0x8a, 0xdd, 0x7c, 0x81, - 0xae, 0x2b, 0x4e, 0xb8, 0xd0, 0x7f, 0xe9, 0x88, 0xbf, 0xe6, 0x33, 0x86, 0x2e, 0xd9, 0x9b, 0x50, - 0x00, 0x25, 0xf0, 0xfe, 0xc4, 0xf8, 0x52, 0xdc, 0xdb, 0x28, 0xee, 0x2d, 0x7a, 0x63, 0x8c, 0xb8, - 0x5c, 0xd8, 0x10, 0xae, 0x99, 0xf5, 0x22, 0x6f, 0x0f, 0x22, 0xdf, 0x38, 0x90, 0x55, 0x94, 0x92, - 0xe4, 0xa6, 0x52, 0xac, 0x6e, 0x50, 0x51, 0x0d, 0xc5, 0x2d, 0xe0, 0x89, 0x6c, 0x3d, 0x0d, 0xbc, - 0xec, 0x94, 0x53, 0xe5, 0xdc, 0x7e, 0xcf, 0xc9, 0x4b, 0x15, 0xec, 0x61, 0x08, 0xc6, 0xdb, 0x45, - 0xda, 0x56, 0x45, 0xc8, 0x18, 0xd6, 0xaf, 0x21, 0xeb, 0x97, 0xe9, 0x1d, 0x93, 0xb5, 0xfc, 0x4f, - 0x0c, 0x1d, 0x65, 0xb0, 0xa5, 0xf9, 0xcc, 0x28, 0x96, 0x31, 0x0a, 0x27, 0xf2, 0x10, 0x61, 0x74, - 0x0d, 0x46, 0x1e, 0x22, 0x8c, 0xa9, 0xbc, 0xb0, 0x43, 0x84, 0x27, 0x1a, 0x11, 0xcd, 0xbb, 0x33, - 0x0c, 0x7c, 0x2e, 0xc4, 0x1f, 0x3b, 0xa5, 0x5a, 0x0f, 0xa3, 0x0a, 0x81, 0xdc, 0x1d, 0xc1, 0xa7, - 0x5c, 0x8b, 0xd1, 0x7a, 0x71, 0x12, 0xd4, 0x2b, 0x48, 0xf6, 0x47, 0xd6, 0x9d, 0xba, 0x59, 0x9a, - 0x91, 0x07, 0x2f, 0x63, 0x4b, 0x37, 0xae, 0x24, 0x91, 0x4c, 0x1d, 0xd0, 0xeb, 0x95, 0x12, 0xf9, - 0x5e, 0x26, 0x4f, 0xd6, 0x2b, 0xc5, 0x6b, 0x5a, 0x33, 0x6d, 0x53, 0x79, 0xa1, 0x6a, 0xa6, 0x6d, - 0xaa, 0x6f, 0x78, 0xed, 0xb4, 0xcd, 0x19, 0xcb, 0xc4, 0x8d, 0xab, 0x2f, 0x19, 0x5c, 0xc0, 0xca, - 0xf1, 0x48, 0xa6, 0xc7, 0x3f, 0x37, 0x53, 0x19, 0xc2, 0x52, 0x64, 0x9a, 0x16, 0x98, 0xf2, 0xc1, - 0x5e, 0x88, 0x52, 0x55, 0xf3, 0x42, 0x95, 0xec, 0x8c, 0xbe, 0x6a, 0x2d, 0xf3, 0xad, 0xbc, 0x8b, - 0xb5, 0xf9, 0x1a, 0x67, 0x6b, 0xfc, 0x23, 0x34, 0x9c, 0xef, 0x10, 0x88, 0x7d, 0xbe, 0xc6, 0x3f, - 0x5e, 0xa0, 0x9d, 0x42, 0xc5, 0x35, 0xea, 0x64, 0x87, 0xeb, 0x5d, 0x64, 0x7c, 0x83, 0x6e, 0x94, - 0x0f, 0xd7, 0x9c, 0x37, 0x67, 0xfd, 0x7d, 0x58, 0x2d, 0x64, 0x6d, 0x9e, 0x11, 0x6f, 0xcb, 0xe0, - 0x0b, 0x29, 0x1b, 0xc5, 0x3c, 0xc3, 0x0c, 0x4a, 0xe1, 0x6e, 0x94, 0xec, 0x56, 0x9d, 0x54, 0xad, - 0xab, 0xc7, 0x71, 0x67, 0x66, 0xb9, 0xed, 0x93, 0x8d, 0xd2, 0x41, 0x56, 0x9d, 0xf3, 0x7e, 0xdf, - 0xc1, 0xbb, 0xae, 0x11, 0x57, 0xb3, 0xe4, 0x6e, 0x55, 0xaa, 0xe4, 0xca, 0x62, 0xc8, 0xed, 0x80, - 0xdc, 0x2c, 0xe6, 0x53, 0x4a, 0xe2, 0x9c, 0x63, 0xee, 0xca, 0xbc, 0x60, 0xb5, 0xb2, 0x39, 0x15, - 0x37, 0xaf, 0x23, 0xd3, 0x1d, 0xc5, 0x24, 0x8e, 0xcc, 0x47, 0x28, 0x4e, 0x3f, 0xb0, 0xff, 0x2a, - 0x94, 0xc5, 0xf2, 0x76, 0xc5, 0xa8, 0xaf, 0xc2, 0xfa, 0x39, 0x64, 0xbd, 0x4d, 0x6e, 0x14, 0xc6, - 0x5b, 0x10, 0x41, 0x9c, 0x4a, 0x8c, 0xcb, 0x39, 0xf3, 0x54, 0x52, 0xba, 0x2d, 0xb6, 0x4e, 0x25, - 0xe5, 0x0b, 0xdb, 0xd2, 0xa9, 0xc4, 0xe3, 0x28, 0xe8, 0xc0, 0x48, 0x06, 0x2b, 0xc5, 0x4b, 0x32, - 0x63, 0x29, 0x57, 0x5f, 0x9f, 0x19, 0x4b, 0x79, 0xc4, 0x8d, 0x41, 0xe1, 0xd0, 0xd5, 0xcd, 0xc4, - 0xc5, 0xc3, 0xbe, 0xac, 0x8f, 0x26, 0x19, 0x2c, 0x17, 0x2e, 0xb0, 0x8c, 0xb9, 0xac, 0xbc, 0xd9, - 0x9a, 0x80, 0xa7, 0xed, 0x3e, 0x34, 0xcf, 0x01, 0x92, 0xe1, 0xcb, 0xe8, 0x29, 0xac, 0x56, 0x5c, - 0x46, 0x19, 0x47, 0xff, 0x91, 0x37, 0x55, 0xad, 0xb2, 0x74, 0xd6, 0xa5, 0x8c, 0x9d, 0x9e, 0xcb, - 0x79, 0x27, 0x4c, 0x70, 0xee, 0x1b, 0xe3, 0x95, 0x7f, 0x43, 0xb2, 0x4c, 0xd1, 0xba, 0xff, 0x6b, - 0xed, 0x8c, 0x6c, 0xaf, 0xdc, 0x1a, 0x34, 0x4b, 0x79, 0x35, 0x13, 0xc2, 0x92, 0x2d, 0xaa, 0x91, - 0x19, 0xaa, 0xba, 0x47, 0xbb, 0x74, 0x84, 0xf6, 0x9a, 0xd1, 0xec, 0x3e, 0x41, 0xda, 0x11, 0x2c, - 0x5a, 0x37, 0x9c, 0x86, 0xb9, 0x56, 0xdc, 0x9d, 0x4e, 0x6e, 0x3f, 0x45, 0x7d, 0xa6, 0x59, 0xdc, - 0x17, 0x0e, 0x71, 0xa5, 0x78, 0xa3, 0x4a, 0x76, 0x2a, 0x59, 0xe6, 0xd7, 0xa6, 0xbf, 0x38, 0xd7, - 0xd4, 0xe0, 0x2a, 0xaf, 0x64, 0x2b, 0xb8, 0xda, 0x97, 0xb5, 0x97, 0xcf, 0xe3, 0x25, 0x4c, 0xd1, - 0x19, 0x15, 0x6f, 0x2d, 0x4f, 0xe2, 0xb3, 0xb3, 0x90, 0x91, 0xf2, 0x88, 0x0a, 0xd7, 0x9a, 0x13, - 0x8c, 0xd9, 0xda, 0xfb, 0x72, 0xf6, 0xde, 0x20, 0x8b, 0xd5, 0xba, 0xf9, 0x3e, 0x6e, 0x3f, 0x85, - 0x9a, 0x07, 0x6b, 0xfb, 0xa9, 0x2e, 0xef, 0x68, 0xd1, 0x71, 0x28, 0x23, 0xf6, 0xa1, 0x73, 0x89, - 0x27, 0x2a, 0x25, 0xd2, 0xce, 0x0c, 0x56, 0x6d, 0xbe, 0xf6, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, - 0xfd, 0xda, 0xc4, 0x0d, 0x25, 0x57, 0x00, 0x00, +func (x *CancelAllOrdersResponse_Orders) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CancelAllOrdersResponse_Orders) ProtoMessage() {} + +func (x *CancelAllOrdersResponse_Orders) ProtoReflect() protoreflect.Message { + mi := &file_rpc_proto_msgTypes[137] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CancelAllOrdersResponse_Orders.ProtoReflect.Descriptor instead. +func (*CancelAllOrdersResponse_Orders) Descriptor() ([]byte, []int) { + return file_rpc_proto_rawDescGZIP(), []int{73, 0} +} + +func (x *CancelAllOrdersResponse_Orders) GetExchange() string { + if x != nil { + return x.Exchange + } + return "" +} + +func (x *CancelAllOrdersResponse_Orders) GetOrderStatus() map[string]string { + if x != nil { + return x.OrderStatus + } + return nil +} + +var File_rpc_proto protoreflect.FileDescriptor + +var file_rpc_proto_rawDesc = []byte{ + 0x0a, 0x09, 0x72, 0x70, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, 0x67, 0x63, 0x74, + 0x72, 0x70, 0x63, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x22, 0x10, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x22, 0xb4, 0x04, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x70, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, + 0x12, 0x2f, 0x0a, 0x13, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x65, 0x78, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x12, 0x61, + 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x65, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x65, 0x6e, + 0x61, 0x62, 0x6c, 0x65, 0x64, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x34, + 0x0a, 0x16, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x65, 0x78, 0x5f, + 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, + 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x6f, 0x72, 0x65, 0x78, 0x50, 0x72, 0x6f, 0x76, + 0x69, 0x64, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x15, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, + 0x66, 0x69, 0x61, 0x74, 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x13, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x46, 0x69, 0x61, 0x74, + 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x57, 0x0a, 0x10, 0x73, 0x75, 0x62, 0x73, + 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x75, 0x62, 0x73, + 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x0f, 0x73, 0x75, 0x62, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x4e, 0x0a, 0x0d, 0x72, 0x70, 0x63, 0x5f, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, + 0x63, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x2e, 0x52, 0x70, 0x63, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x0c, 0x72, 0x70, 0x63, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, + 0x73, 0x1a, 0x42, 0x0a, 0x14, 0x53, 0x75, 0x62, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x54, 0x0a, 0x11, 0x52, 0x70, 0x63, 0x45, 0x6e, 0x64, 0x70, + 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x29, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x63, + 0x74, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x21, 0x0a, 0x1f, 0x47, + 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x4e, + 0x0a, 0x14, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, + 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x65, 0x64, 0x22, 0x86, + 0x02, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x7a, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x43, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, + 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6c, + 0x61, 0x79, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x6f, + 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x15, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, + 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x1a, + 0x66, 0x0a, 0x1a, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x32, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, + 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x37, 0x0a, 0x17, 0x47, 0x65, 0x6e, 0x65, 0x72, + 0x69, 0x63, 0x53, 0x75, 0x62, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x75, 0x62, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x75, 0x62, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, + 0x22, 0x1a, 0x0a, 0x18, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x53, 0x75, 0x62, 0x73, 0x79, + 0x73, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x16, 0x0a, 0x14, + 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x22, 0xbe, 0x01, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x53, 0x75, 0x73, 0x62, + 0x73, 0x79, 0x74, 0x65, 0x6d, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x60, + 0x0a, 0x11, 0x73, 0x75, 0x62, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x73, 0x5f, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x67, 0x63, 0x74, 0x72, + 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x75, 0x73, 0x62, 0x73, 0x79, 0x74, 0x65, 0x6d, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x79, 0x73, 0x74, + 0x65, 0x6d, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, + 0x73, 0x75, 0x62, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x1a, 0x43, 0x0a, 0x15, 0x53, 0x75, 0x62, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x73, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x18, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x52, 0x50, 0x43, 0x45, + 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, + 0x4e, 0x0a, 0x0b, 0x52, 0x50, 0x43, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x18, + 0x0a, 0x07, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x07, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x6c, 0x69, 0x73, 0x74, + 0x65, 0x6e, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0d, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, + 0xba, 0x01, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x52, 0x50, 0x43, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, + 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4c, 0x0a, 0x09, 0x65, + 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, + 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x50, 0x43, 0x45, 0x6e, + 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, + 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, + 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x1a, 0x51, 0x0a, 0x0e, 0x45, 0x6e, 0x64, + 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, + 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x29, 0x0a, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, + 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x50, 0x43, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, + 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x38, 0x0a, 0x1a, + 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, + 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x1d, 0x0a, 0x1b, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, + 0x63, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2f, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, + 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x34, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1c, + 0x0a, 0x09, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x22, 0x32, 0x0a, 0x15, + 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x54, 0x50, 0x52, 0x65, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x74, 0x70, 0x5f, 0x63, 0x6f, 0x64, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x74, 0x70, 0x43, 0x6f, 0x64, 0x65, + 0x22, 0x18, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, + 0x54, 0x50, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xa2, 0x01, 0x0a, 0x17, 0x47, + 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x54, 0x50, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x09, 0x6f, 0x74, 0x70, 0x5f, 0x63, 0x6f, + 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x67, 0x63, 0x74, 0x72, + 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x54, + 0x50, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4f, 0x74, 0x70, 0x43, 0x6f, + 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x6f, 0x74, 0x70, 0x43, 0x6f, 0x64, + 0x65, 0x73, 0x1a, 0x3b, 0x0a, 0x0d, 0x4f, 0x74, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, + 0x34, 0x0a, 0x16, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x5e, 0x0a, 0x0e, 0x50, 0x61, 0x69, 0x72, 0x73, 0x53, 0x75, + 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x61, 0x76, 0x61, 0x69, 0x6c, + 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x69, 0x72, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0e, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x61, 0x69, 0x72, 0x73, + 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x69, 0x72, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, + 0x50, 0x61, 0x69, 0x72, 0x73, 0x22, 0x82, 0x04, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, + 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x07, 0x76, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x75, 0x73, 0x69, + 0x6e, 0x67, 0x5f, 0x73, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0c, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x53, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x78, 0x12, 0x21, + 0x0a, 0x0c, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x68, 0x74, 0x74, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, + 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x68, 0x74, 0x74, 0x70, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x61, 0x67, + 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x68, 0x74, 0x74, 0x70, 0x55, + 0x73, 0x65, 0x72, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x68, 0x74, 0x74, 0x70, + 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x68, 0x74, + 0x74, 0x70, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x12, 0x27, 0x0a, 0x0f, 0x62, 0x61, 0x73, 0x65, 0x5f, + 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0e, 0x62, 0x61, 0x73, 0x65, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, + 0x12, 0x5f, 0x0a, 0x10, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x73, + 0x73, 0x65, 0x74, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x67, 0x63, 0x74, + 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x75, 0x70, 0x70, + 0x6f, 0x72, 0x74, 0x65, 0x64, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x0f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x41, 0x73, 0x73, 0x65, 0x74, + 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x61, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x61, 0x70, 0x69, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x61, 0x75, + 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x41, 0x70, 0x69, 0x1a, 0x5a, + 0x0a, 0x14, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x41, 0x73, 0x73, 0x65, 0x74, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, + 0x2e, 0x50, 0x61, 0x69, 0x72, 0x73, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x77, 0x0a, 0x10, 0x47, 0x65, + 0x74, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, + 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x70, 0x61, + 0x69, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, + 0x63, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x61, 0x69, 0x72, 0x52, 0x04, + 0x70, 0x61, 0x69, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x54, + 0x79, 0x70, 0x65, 0x22, 0x56, 0x0a, 0x0c, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x50, + 0x61, 0x69, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, + 0x72, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x61, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x62, 0x61, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x22, 0x95, 0x02, 0x0a, 0x0e, + 0x54, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x28, + 0x0a, 0x04, 0x70, 0x61, 0x69, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, + 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x61, + 0x69, 0x72, 0x52, 0x04, 0x70, 0x61, 0x69, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x6c, 0x61, 0x73, 0x74, + 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, + 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x63, + 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x70, 0x61, 0x69, 0x72, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x61, 0x69, 0x72, + 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x61, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, + 0x6c, 0x61, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x69, 0x67, 0x68, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x01, 0x52, 0x04, 0x68, 0x69, 0x67, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x6f, 0x77, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x6c, 0x6f, 0x77, 0x12, 0x10, 0x0a, 0x03, 0x62, 0x69, + 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x62, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, + 0x61, 0x73, 0x6b, 0x18, 0x08, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x61, 0x73, 0x6b, 0x12, 0x16, + 0x0a, 0x06, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, + 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, + 0x61, 0x74, 0x68, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x70, 0x72, 0x69, 0x63, 0x65, + 0x41, 0x74, 0x68, 0x22, 0x13, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x72, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x57, 0x0a, 0x07, 0x54, 0x69, 0x63, 0x6b, + 0x65, 0x72, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, + 0x30, 0x0a, 0x07, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x16, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x72, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x07, 0x74, 0x69, 0x63, 0x6b, 0x65, 0x72, + 0x73, 0x22, 0x3f, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x07, 0x74, 0x69, 0x63, 0x6b, 0x65, + 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, + 0x63, 0x2e, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x73, 0x52, 0x07, 0x74, 0x69, 0x63, 0x6b, 0x65, + 0x72, 0x73, 0x22, 0x7a, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, + 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x70, 0x61, 0x69, 0x72, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x61, 0x69, 0x72, 0x52, 0x04, 0x70, 0x61, 0x69, 0x72, 0x12, + 0x1d, 0x0a, 0x0a, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0x4d, + 0x0a, 0x0d, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x12, + 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, + 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x22, 0xfa, 0x01, + 0x0a, 0x11, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x70, 0x61, 0x69, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x63, 0x79, 0x50, 0x61, 0x69, 0x72, 0x52, 0x04, 0x70, 0x61, 0x69, 0x72, 0x12, 0x23, 0x0a, + 0x0d, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x70, 0x61, 0x69, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x61, + 0x69, 0x72, 0x12, 0x29, 0x0a, 0x04, 0x62, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, + 0x6f, 0x6f, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x62, 0x69, 0x64, 0x73, 0x12, 0x29, 0x0a, + 0x04, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x63, + 0x74, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x49, 0x74, + 0x65, 0x6d, 0x52, 0x04, 0x61, 0x73, 0x6b, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6c, 0x61, 0x73, 0x74, + 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, + 0x6c, 0x61, 0x73, 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x61, + 0x73, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0x16, 0x0a, 0x14, 0x47, 0x65, + 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x22, 0x63, 0x0a, 0x0a, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x73, + 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x39, 0x0a, 0x0a, + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, + 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0a, 0x6f, 0x72, 0x64, + 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x22, 0x4b, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4f, 0x72, + 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x32, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, + 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x62, + 0x6f, 0x6f, 0x6b, 0x73, 0x22, 0x33, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, + 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x56, 0x0a, 0x07, 0x41, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x3b, 0x0a, 0x0a, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x69, + 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, + 0x63, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, + 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x69, 0x65, + 0x73, 0x22, 0x66, 0x0a, 0x13, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x43, 0x75, 0x72, 0x72, + 0x65, 0x6e, 0x63, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x75, 0x72, 0x72, + 0x65, 0x6e, 0x63, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x75, 0x72, 0x72, + 0x65, 0x6e, 0x63, 0x79, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x01, 0x52, 0x04, 0x68, 0x6f, 0x6c, 0x64, 0x22, 0x61, 0x0a, 0x16, 0x47, 0x65, 0x74, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, + 0x2b, 0x0a, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x0f, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x52, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x22, 0x12, 0x0a, 0x10, + 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x22, 0x27, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x85, 0x01, 0x0a, 0x10, 0x50, 0x6f, + 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x18, + 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x69, 0x6e, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x69, + 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, + 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, + 0x65, 0x22, 0x15, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, + 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x4e, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x50, + 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x36, 0x0a, 0x09, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x6f, 0x72, + 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x09, 0x70, + 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x22, 0x1c, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x50, + 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x6e, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x12, + 0x0a, 0x04, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, + 0x69, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x01, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, + 0x74, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x63, + 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x22, 0x68, 0x0a, 0x12, 0x4f, 0x66, 0x66, 0x6c, 0x69, 0x6e, + 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x18, 0x0a, 0x07, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, + 0x12, 0x1e, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, + 0x22, 0x4d, 0x0a, 0x11, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x53, 0x75, + 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x12, + 0x1e, 0x0a, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x01, 0x52, 0x0a, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x22, + 0x48, 0x0a, 0x0c, 0x4f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x12, + 0x38, 0x0a, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x66, 0x66, 0x6c, + 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x09, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x22, 0x98, 0x01, 0x0a, 0x0b, 0x4f, 0x6e, + 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x12, 0x34, 0x0a, 0x05, 0x63, 0x6f, 0x69, + 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, + 0x63, 0x2e, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x2e, 0x43, 0x6f, + 0x69, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x1a, + 0x53, 0x0a, 0x0a, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, + 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, + 0x2f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x6f, + 0x69, 0x6e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x3a, 0x02, 0x38, 0x01, 0x22, 0xcb, 0x04, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, + 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x0b, 0x63, 0x6f, 0x69, 0x6e, 0x5f, 0x74, 0x6f, 0x74, + 0x61, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x67, 0x63, 0x74, 0x72, + 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x0a, 0x63, 0x6f, 0x69, 0x6e, 0x54, 0x6f, 0x74, + 0x61, 0x6c, 0x73, 0x12, 0x31, 0x0a, 0x0d, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x5f, 0x6f, 0x66, 0x66, + 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x67, 0x63, 0x74, + 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x0c, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x4f, + 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x70, 0x0a, 0x15, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x5f, + 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3c, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, + 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x53, 0x75, 0x6d, 0x6d, 0x61, + 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x73, + 0x4f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x52, 0x13, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x4f, 0x66, 0x66, 0x6c, 0x69, 0x6e, + 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x2f, 0x0a, 0x0c, 0x63, 0x6f, 0x69, 0x6e, + 0x73, 0x5f, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, + 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x0b, 0x63, 0x6f, + 0x69, 0x6e, 0x73, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x6d, 0x0a, 0x14, 0x63, 0x6f, 0x69, + 0x6e, 0x73, 0x5f, 0x6f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, + 0x79, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3b, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, + 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x53, 0x75, 0x6d, + 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x43, 0x6f, 0x69, + 0x6e, 0x73, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x52, 0x12, 0x63, 0x6f, 0x69, 0x6e, 0x73, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, + 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x1a, 0x5c, 0x0a, 0x18, 0x43, 0x6f, 0x69, 0x6e, + 0x73, 0x4f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x4f, + 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x5a, 0x0a, 0x17, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x4f, + 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x29, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x6e, 0x6c, 0x69, + 0x6e, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, + 0x38, 0x01, 0x22, 0xe3, 0x01, 0x0a, 0x1a, 0x41, 0x64, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, + 0x6c, 0x69, 0x6f, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x63, + 0x6f, 0x69, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x63, 0x6f, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, + 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x61, + 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x07, 0x62, 0x61, 0x6c, + 0x61, 0x6e, 0x63, 0x65, 0x12, 0x2f, 0x0a, 0x13, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, + 0x64, 0x5f, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x12, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x45, 0x78, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x64, 0x5f, 0x73, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x63, 0x6f, 0x6c, + 0x64, 0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x22, 0x1d, 0x0a, 0x1b, 0x41, 0x64, 0x64, 0x50, + 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x78, 0x0a, 0x1d, 0x52, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6f, 0x69, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6f, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x22, 0x20, 0x0a, 0x1e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x66, + 0x6f, 0x6c, 0x69, 0x6f, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x1a, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x72, 0x65, 0x78, 0x50, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, + 0xed, 0x01, 0x0a, 0x0d, 0x46, 0x6f, 0x72, 0x65, 0x78, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, + 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x07, 0x76, 0x65, 0x72, 0x62, 0x6f, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x72, 0x65, 0x73, + 0x74, 0x5f, 0x70, 0x6f, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x72, 0x65, 0x73, 0x74, 0x50, 0x6f, 0x6c, 0x6c, 0x69, + 0x6e, 0x67, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x17, 0x0a, 0x07, 0x61, 0x70, 0x69, 0x5f, 0x6b, + 0x65, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, + 0x12, 0x22, 0x0a, 0x0d, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x6c, 0x65, 0x76, 0x65, + 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x4c, + 0x65, 0x76, 0x65, 0x6c, 0x12, 0x29, 0x0a, 0x10, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, + 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, + 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x22, + 0x5b, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x72, 0x65, 0x78, 0x50, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x0f, + 0x66, 0x6f, 0x72, 0x65, 0x78, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x46, + 0x6f, 0x72, 0x65, 0x78, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x0e, 0x66, 0x6f, + 0x72, 0x65, 0x78, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x22, 0x16, 0x0a, 0x14, + 0x47, 0x65, 0x74, 0x46, 0x6f, 0x72, 0x65, 0x78, 0x52, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x22, 0x71, 0x0a, 0x14, 0x46, 0x6f, 0x72, 0x65, 0x78, 0x52, 0x61, 0x74, + 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, + 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, + 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x74, 0x6f, + 0x12, 0x12, 0x0a, 0x04, 0x72, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, + 0x72, 0x61, 0x74, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x65, 0x5f, + 0x72, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x69, 0x6e, 0x76, 0x65, + 0x72, 0x73, 0x65, 0x52, 0x61, 0x74, 0x65, 0x22, 0x56, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x46, 0x6f, + 0x72, 0x65, 0x78, 0x52, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x3d, 0x0a, 0x0b, 0x66, 0x6f, 0x72, 0x65, 0x78, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x46, + 0x6f, 0x72, 0x65, 0x78, 0x52, 0x61, 0x74, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, + 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x66, 0x6f, 0x72, 0x65, 0x78, 0x52, 0x61, 0x74, 0x65, 0x73, 0x22, + 0xaf, 0x03, 0x0a, 0x0c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, + 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x23, 0x0a, 0x0d, + 0x62, 0x61, 0x73, 0x65, 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x62, 0x61, 0x73, 0x65, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, + 0x79, 0x12, 0x25, 0x0a, 0x0e, 0x71, 0x75, 0x6f, 0x74, 0x65, 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x63, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x71, 0x75, 0x6f, 0x74, 0x65, + 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x73, 0x73, 0x65, + 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x73, + 0x73, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, + 0x5f, 0x73, 0x69, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x64, + 0x65, 0x72, 0x53, 0x69, 0x64, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x01, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x70, 0x65, 0x6e, 0x5f, 0x76, 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0a, 0x6f, 0x70, 0x65, 0x6e, 0x56, 0x6f, 0x6c, 0x75, 0x6d, + 0x65, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x65, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, + 0x66, 0x65, 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, 0x73, 0x18, 0x0e, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x72, 0x61, + 0x64, 0x65, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x52, 0x06, 0x74, 0x72, 0x61, 0x64, 0x65, + 0x73, 0x22, 0xdd, 0x01, 0x0a, 0x0c, 0x54, 0x72, 0x61, 0x64, 0x65, 0x48, 0x69, 0x73, 0x74, 0x6f, + 0x72, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, + 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x61, + 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x73, 0x69, 0x64, 0x65, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x69, 0x64, 0x65, 0x12, + 0x10, 0x0a, 0x03, 0x66, 0x65, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x66, 0x65, + 0x65, 0x22, 0x77, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x28, 0x0a, 0x04, 0x70, 0x61, 0x69, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, + 0x50, 0x61, 0x69, 0x72, 0x52, 0x04, 0x70, 0x61, 0x69, 0x72, 0x22, 0x41, 0x0a, 0x11, 0x47, 0x65, + 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x2c, 0x0a, 0x06, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x14, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x06, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x22, 0x48, 0x0a, + 0x0f, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x19, 0x0a, 0x08, + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x22, 0xd8, 0x01, 0x0a, 0x12, 0x53, 0x75, 0x62, 0x6d, + 0x69, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, + 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x70, 0x61, + 0x69, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, + 0x63, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x61, 0x69, 0x72, 0x52, 0x04, + 0x70, 0x61, 0x69, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x73, 0x69, 0x64, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6f, 0x72, + 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, + 0x70, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, + 0x49, 0x64, 0x22, 0x53, 0x0a, 0x13, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4f, 0x72, 0x64, 0x65, + 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x72, 0x64, + 0x65, 0x72, 0x5f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0b, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x08, + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x22, 0x88, 0x01, 0x0a, 0x14, 0x53, 0x69, 0x6d, 0x75, + 0x6c, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x04, + 0x70, 0x61, 0x69, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x63, 0x74, + 0x72, 0x70, 0x63, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x61, 0x69, 0x72, + 0x52, 0x04, 0x70, 0x61, 0x69, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x73, 0x69, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x69, + 0x64, 0x65, 0x22, 0xf2, 0x01, 0x0a, 0x15, 0x53, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x4f, + 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x06, + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x67, + 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x49, + 0x74, 0x65, 0x6d, 0x52, 0x06, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x61, + 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x61, 0x6d, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x69, 0x6e, 0x69, 0x6d, 0x75, 0x6d, 0x5f, 0x70, + 0x72, 0x69, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0c, 0x6d, 0x69, 0x6e, 0x69, + 0x6d, 0x75, 0x6d, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x69, + 0x6d, 0x75, 0x6d, 0x5f, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, + 0x0c, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x75, 0x6d, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x30, 0x0a, + 0x14, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x5f, 0x67, 0x61, 0x69, 0x6e, + 0x5f, 0x6c, 0x6f, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x12, 0x70, 0x65, 0x72, + 0x63, 0x65, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x47, 0x61, 0x69, 0x6e, 0x4c, 0x6f, 0x73, 0x73, 0x12, + 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x8f, 0x01, 0x0a, 0x10, 0x57, 0x68, 0x61, 0x6c, + 0x65, 0x42, 0x6f, 0x6d, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, + 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x70, 0x61, 0x69, 0x72, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, + 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x61, 0x69, 0x72, 0x52, 0x04, 0x70, 0x61, + 0x69, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x74, 0x61, 0x72, 0x67, + 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0b, 0x70, 0x72, 0x69, 0x63, 0x65, 0x54, + 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x64, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x69, 0x64, 0x65, 0x22, 0xee, 0x01, 0x0a, 0x12, 0x43, 0x61, + 0x6e, 0x63, 0x65, 0x6c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x1d, 0x0a, 0x0a, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x04, 0x70, 0x61, 0x69, 0x72, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x75, + 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x61, 0x69, 0x72, 0x52, 0x04, 0x70, 0x61, 0x69, 0x72, + 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x25, 0x0a, 0x0e, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x77, 0x61, 0x6c, 0x6c, 0x65, 0x74, 0x41, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x64, 0x65, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x73, 0x69, 0x64, 0x65, 0x22, 0x15, 0x0a, 0x13, 0x43, 0x61, + 0x6e, 0x63, 0x65, 0x6c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x34, 0x0a, 0x16, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x41, 0x6c, 0x6c, 0x4f, 0x72, + 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x9c, 0x02, 0x0a, 0x17, 0x43, 0x61, 0x6e, 0x63, + 0x65, 0x6c, 0x41, 0x6c, 0x6c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x3e, 0x0a, 0x06, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x61, 0x6e, + 0x63, 0x65, 0x6c, 0x41, 0x6c, 0x6c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x06, 0x6f, 0x72, 0x64, + 0x65, 0x72, 0x73, 0x1a, 0xc0, 0x01, 0x0a, 0x06, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x1a, + 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x5a, 0x0a, 0x0c, 0x6f, 0x72, + 0x64, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x37, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, + 0x41, 0x6c, 0x6c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x6f, 0x72, 0x64, 0x65, 0x72, + 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x1a, 0x3e, 0x0a, 0x10, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x12, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xbe, 0x01, 0x0a, 0x0f, 0x43, + 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x1c, + 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, + 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x70, 0x72, 0x69, + 0x63, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x62, 0x69, 0x64, 0x73, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x42, 0x69, 0x64, + 0x73, 0x12, 0x2d, 0x0a, 0x13, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x62, 0x69, 0x64, 0x73, 0x5f, + 0x61, 0x6e, 0x64, 0x5f, 0x61, 0x73, 0x6b, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, + 0x63, 0x68, 0x65, 0x63, 0x6b, 0x42, 0x69, 0x64, 0x73, 0x41, 0x6e, 0x64, 0x41, 0x73, 0x6b, 0x73, + 0x12, 0x29, 0x0a, 0x10, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x5f, 0x61, 0x6d, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0f, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xf5, 0x01, 0x0a, 0x11, + 0x47, 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x12, 0x0a, + 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x69, 0x74, 0x65, + 0x6d, 0x12, 0x42, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x63, + 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x28, 0x0a, 0x04, 0x70, 0x61, 0x69, 0x72, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x61, 0x69, 0x72, 0x52, 0x04, 0x70, 0x61, 0x69, 0x72, 0x12, + 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x65, 0x78, 0x65, 0x63, 0x75, + 0x74, 0x65, 0x64, 0x22, 0xe6, 0x01, 0x0a, 0x0f, 0x41, 0x64, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x12, 0x42, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x64, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x52, 0x0f, 0x63, 0x6f, 0x6e, 0x64, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x28, 0x0a, 0x04, 0x70, + 0x61, 0x69, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x63, 0x74, 0x72, + 0x70, 0x63, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x61, 0x69, 0x72, 0x52, + 0x04, 0x70, 0x61, 0x69, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x22, 0x0a, 0x10, + 0x41, 0x64, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, + 0x22, 0x24, 0x0a, 0x12, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x22, 0x15, 0x0a, 0x13, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x46, 0x0a, + 0x28, 0x47, 0x65, 0x74, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, + 0x63, 0x79, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, 0xc9, 0x01, 0x0a, 0x29, 0x47, 0x65, 0x74, 0x43, 0x72, 0x79, + 0x70, 0x74, 0x6f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x44, 0x65, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x5e, 0x0a, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x40, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, + 0x47, 0x65, 0x74, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, + 0x79, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x09, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x65, 0x73, 0x1a, 0x3c, 0x0a, 0x0e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x22, 0x6c, 0x0a, 0x26, 0x47, 0x65, 0x74, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x63, 0x75, + 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x41, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x63, 0x72, 0x79, 0x70, 0x74, + 0x6f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x22, + 0x43, 0x0a, 0x27, 0x47, 0x65, 0x74, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x63, 0x75, 0x72, 0x72, + 0x65, 0x6e, 0x63, 0x79, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x22, 0xaf, 0x01, 0x0a, 0x13, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, + 0x77, 0x46, 0x69, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, + 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x75, 0x72, 0x72, + 0x65, 0x6e, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x75, 0x72, 0x72, + 0x65, 0x6e, 0x63, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, + 0x0a, 0x0f, 0x62, 0x61, 0x6e, 0x6b, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, + 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x62, 0x61, 0x6e, 0x6b, 0x41, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0xd6, 0x01, 0x0a, 0x15, 0x57, 0x69, 0x74, 0x68, 0x64, + 0x72, 0x61, 0x77, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x64, 0x64, + 0x72, 0x65, 0x73, 0x73, 0x54, 0x61, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x63, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x63, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x01, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x66, + 0x65, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x66, 0x65, 0x65, 0x12, 0x20, 0x0a, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, + 0x3a, 0x0a, 0x10, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x2c, 0x0a, 0x1a, 0x57, + 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x79, + 0x49, 0x44, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x54, 0x0a, 0x1b, 0x57, 0x69, 0x74, + 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x79, 0x49, 0x44, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, + 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, + 0x65, 0x0a, 0x21, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x73, 0x42, 0x79, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, + 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x79, 0x0a, 0x1d, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, + 0x61, 0x77, 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x42, 0x79, 0x44, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, + 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x22, 0x5b, 0x0a, 0x22, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x73, 0x42, 0x79, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, + 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x95, + 0x02, 0x0a, 0x17, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x08, 0x65, 0x78, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, + 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x6c, 0x45, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x08, 0x65, 0x78, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x38, 0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, + 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x54, 0x0a, 0x16, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, + 0x61, 0x77, 0x6c, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xea, 0x01, 0x0a, + 0x16, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x63, 0x79, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x66, 0x69, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1b, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x46, 0x69, 0x61, 0x74, 0x57, 0x69, 0x74, + 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x04, 0x66, 0x69, + 0x61, 0x74, 0x12, 0x35, 0x0a, 0x06, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x18, 0x07, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x72, 0x79, 0x70, + 0x74, 0x6f, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x52, 0x06, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x22, 0xb8, 0x01, 0x0a, 0x13, 0x46, 0x69, + 0x61, 0x74, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x61, 0x6e, 0x6b, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x62, 0x61, 0x6e, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, + 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6e, 0x75, 0x6d, + 0x62, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x62, 0x73, 0x62, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x62, 0x73, 0x62, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x77, + 0x69, 0x66, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x77, 0x69, 0x66, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x69, 0x62, 0x61, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x69, 0x62, 0x61, 0x6e, 0x22, 0x64, 0x0a, 0x15, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x57, 0x69, + 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x18, 0x0a, + 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x64, 0x64, 0x72, 0x65, + 0x73, 0x73, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x64, + 0x64, 0x72, 0x65, 0x73, 0x73, 0x54, 0x61, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x65, 0x65, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x66, 0x65, 0x65, 0x22, 0x31, 0x0a, 0x17, 0x47, 0x65, + 0x74, 0x4c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x22, 0x6e, 0x0a, + 0x18, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x69, 0x6e, 0x66, + 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, + 0x05, 0x64, 0x65, 0x62, 0x75, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x64, 0x65, + 0x62, 0x75, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x77, 0x61, 0x72, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x04, 0x77, 0x61, 0x72, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x47, 0x0a, + 0x17, 0x53, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6c, 0x6f, 0x67, 0x67, + 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6c, 0x6f, 0x67, 0x67, 0x65, 0x72, + 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0x4b, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x69, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x14, 0x0a, + 0x05, 0x61, 0x73, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x61, 0x73, + 0x73, 0x65, 0x74, 0x22, 0xd8, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x50, 0x61, 0x69, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x60, 0x0a, 0x10, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x73, + 0x73, 0x65, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x67, 0x63, 0x74, + 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, + 0x61, 0x69, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x75, 0x70, + 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x41, 0x73, 0x73, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x52, 0x0f, 0x73, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x41, 0x73, 0x73, 0x65, + 0x74, 0x73, 0x1a, 0x5a, 0x0a, 0x14, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x41, + 0x73, 0x73, 0x65, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, + 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x63, + 0x74, 0x72, 0x70, 0x63, 0x2e, 0x50, 0x61, 0x69, 0x72, 0x73, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, + 0x74, 0x65, 0x64, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x7a, + 0x0a, 0x13, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x69, 0x72, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x28, 0x0a, 0x04, 0x70, 0x61, 0x69, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, + 0x50, 0x61, 0x69, 0x72, 0x52, 0x04, 0x70, 0x61, 0x69, 0x72, 0x22, 0x80, 0x01, 0x0a, 0x19, 0x47, + 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x53, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x70, 0x61, 0x69, 0x72, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x75, 0x72, 0x72, + 0x65, 0x6e, 0x63, 0x79, 0x50, 0x61, 0x69, 0x72, 0x52, 0x04, 0x70, 0x61, 0x69, 0x72, 0x12, 0x1d, + 0x0a, 0x0a, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0x3f, 0x0a, + 0x21, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x72, 0x64, 0x65, + 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x7d, + 0x0a, 0x16, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x53, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x70, 0x61, 0x69, 0x72, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x75, 0x72, 0x72, + 0x65, 0x6e, 0x63, 0x79, 0x50, 0x61, 0x69, 0x72, 0x52, 0x04, 0x70, 0x61, 0x69, 0x72, 0x12, 0x1d, + 0x0a, 0x0a, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0x3c, 0x0a, + 0x1e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x69, 0x63, 0x6b, + 0x65, 0x72, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x08, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x99, 0x01, 0x0a, 0x14, + 0x47, 0x65, 0x74, 0x41, 0x75, 0x64, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x64, 0x61, + 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x44, + 0x61, 0x74, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x19, + 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x62, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x42, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, + 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x43, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x41, 0x75, + 0x64, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x2a, 0x0a, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x12, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x74, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x22, 0xec, 0x01, 0x0a, + 0x19, 0x47, 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x69, 0x63, 0x43, 0x61, 0x6e, 0x64, + 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x70, 0x61, 0x69, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x75, + 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x61, 0x69, 0x72, 0x52, 0x04, 0x70, 0x61, 0x69, 0x72, + 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x73, 0x73, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x73, 0x73, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x69, 0x6d, 0x65, 0x5f, + 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, + 0x74, 0x69, 0x6d, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, + 0x65, 0x78, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x09, 0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xce, 0x01, 0x0a, 0x1a, + 0x47, 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x69, 0x63, 0x43, 0x61, 0x6e, 0x64, 0x6c, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x78, + 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x04, 0x70, 0x61, 0x69, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x75, + 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x50, 0x61, 0x69, 0x72, 0x52, 0x04, 0x70, 0x61, 0x69, 0x72, + 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x76, 0x61, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, + 0x72, 0x76, 0x61, 0x6c, 0x12, 0x26, 0x0a, 0x06, 0x63, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x05, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x61, + 0x6e, 0x64, 0x6c, 0x65, 0x52, 0x06, 0x63, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x22, 0x84, 0x01, 0x0a, + 0x06, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6c, + 0x6f, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x6c, 0x6f, 0x77, 0x12, 0x12, 0x0a, + 0x04, 0x68, 0x69, 0x67, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x68, 0x69, 0x67, + 0x68, 0x12, 0x12, 0x0a, 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, + 0x04, 0x6f, 0x70, 0x65, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, + 0x6f, 0x6c, 0x75, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x06, 0x76, 0x6f, 0x6c, + 0x75, 0x6d, 0x65, 0x22, 0x78, 0x0a, 0x0a, 0x41, 0x75, 0x64, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, + 0x69, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, + 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x62, 0x0a, + 0x09, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x55, 0x55, + 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x55, 0x55, 0x49, 0x44, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x19, 0x0a, 0x08, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x72, + 0x75, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x78, 0x74, 0x52, 0x75, + 0x6e, 0x22, 0x44, 0x0a, 0x17, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x45, 0x78, + 0x65, 0x63, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x06, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, + 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, + 0x06, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x22, 0x41, 0x0a, 0x14, 0x47, 0x43, 0x54, 0x53, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x29, 0x0a, 0x06, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x11, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x52, 0x06, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x22, 0x19, 0x0a, 0x17, 0x47, 0x43, + 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x53, 0x74, 0x6f, 0x70, 0x41, 0x6c, 0x6c, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x18, 0x0a, 0x16, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, + 0x19, 0x0a, 0x17, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x4c, 0x69, 0x73, 0x74, + 0x41, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xa8, 0x01, 0x0a, 0x16, 0x47, + 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x44, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x61, + 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x61, + 0x72, 0x63, 0x68, 0x69, 0x76, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x6f, 0x76, 0x65, 0x72, 0x77, + 0x72, 0x69, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6f, 0x76, 0x65, 0x72, + 0x77, 0x72, 0x69, 0x74, 0x65, 0x22, 0x47, 0x0a, 0x1a, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x52, 0x65, 0x61, 0x64, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x06, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x43, 0x54, + 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x06, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x22, 0x42, + 0x0a, 0x15, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x06, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, + 0x2e, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x06, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x22, 0x4a, 0x0a, 0x18, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x41, + 0x75, 0x74, 0x6f, 0x4c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, + 0x0a, 0x06, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x5e, + 0x0a, 0x17, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x12, 0x2b, 0x0a, 0x07, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x43, 0x54, 0x53, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x07, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x73, 0x22, 0x6f, + 0x0a, 0x16, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x12, 0x29, 0x0a, 0x06, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x11, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x52, 0x06, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x64, + 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, + 0x46, 0x0a, 0x18, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x47, 0x65, 0x6e, 0x65, + 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x32, 0xcd, 0x38, 0x0a, 0x0e, 0x47, 0x6f, 0x43, 0x72, + 0x79, 0x70, 0x74, 0x6f, 0x54, 0x72, 0x61, 0x64, 0x65, 0x72, 0x12, 0x4f, 0x0a, 0x07, 0x47, 0x65, + 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, + 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x17, 0x2e, + 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x13, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0d, 0x12, 0x0b, + 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x67, 0x0a, 0x0d, 0x47, + 0x65, 0x74, 0x53, 0x75, 0x62, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x1c, 0x2e, 0x67, + 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x75, 0x62, 0x73, 0x79, 0x73, 0x74, + 0x65, 0x6d, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x63, 0x74, + 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x75, 0x73, 0x62, 0x73, 0x79, 0x74, 0x65, 0x6d, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x13, 0x12, 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x73, 0x75, 0x62, 0x73, 0x79, 0x73, + 0x74, 0x65, 0x6d, 0x73, 0x12, 0x71, 0x0a, 0x0f, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x75, + 0x62, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x1f, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, + 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x53, 0x75, 0x62, 0x73, 0x79, 0x73, 0x74, 0x65, + 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, + 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x53, 0x75, 0x62, 0x73, 0x79, 0x73, 0x74, + 0x65, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x15, 0x12, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x75, + 0x62, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x73, 0x0a, 0x10, 0x44, 0x69, 0x73, 0x61, 0x62, + 0x6c, 0x65, 0x53, 0x75, 0x62, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x1f, 0x2e, 0x67, 0x63, + 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x53, 0x75, 0x62, 0x73, + 0x79, 0x73, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, + 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x53, 0x75, 0x62, + 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x12, 0x14, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x69, 0x73, 0x61, + 0x62, 0x6c, 0x65, 0x73, 0x75, 0x62, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x6f, 0x0a, 0x0f, + 0x47, 0x65, 0x74, 0x52, 0x50, 0x43, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, + 0x1e, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x50, 0x43, 0x45, + 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1f, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x50, 0x43, 0x45, + 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, + 0x74, 0x72, 0x70, 0x63, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x93, 0x01, + 0x0a, 0x18, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x12, 0x27, 0x2e, 0x67, 0x63, 0x74, + 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, + 0x43, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x6c, + 0x61, 0x79, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x24, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x12, 0x1c, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x63, 0x6f, + 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x72, 0x65, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x73, 0x12, 0x63, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x73, 0x12, 0x1b, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, + 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x1c, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x12, 0x10, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x65, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x12, 0x7a, 0x0a, 0x0f, 0x44, 0x69, 0x73, 0x61, + 0x62, 0x6c, 0x65, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x22, 0x2e, 0x67, 0x63, + 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x45, 0x78, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x23, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, + 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x22, 0x13, 0x2f, 0x76, + 0x31, 0x2f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x73, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x22, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, + 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x63, + 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x65, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x73, 0x0a, 0x12, 0x47, 0x65, 0x74, + 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x54, 0x50, 0x43, 0x6f, 0x64, 0x65, 0x12, + 0x22, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, + 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, + 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x54, 0x50, 0x52, 0x65, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12, 0x2f, 0x76, 0x31, 0x2f, + 0x67, 0x65, 0x74, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6f, 0x74, 0x70, 0x12, 0x73, + 0x0a, 0x13, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x54, 0x50, + 0x43, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x1e, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, + 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x54, 0x50, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, + 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x54, 0x50, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, + 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6f, + 0x74, 0x70, 0x73, 0x12, 0x78, 0x0a, 0x0e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x22, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, + 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x61, + 0x6d, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x67, 0x63, 0x74, 0x72, + 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x22, 0x12, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x57, 0x0a, + 0x09, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x12, 0x18, 0x2e, 0x67, 0x63, 0x74, + 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x69, + 0x63, 0x6b, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x12, 0x22, 0x0d, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x74, 0x69, 0x63, + 0x6b, 0x65, 0x72, 0x3a, 0x01, 0x2a, 0x12, 0x5b, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, + 0x6b, 0x65, 0x72, 0x73, 0x12, 0x19, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, + 0x74, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1a, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, + 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x16, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x10, 0x12, 0x0e, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x74, 0x69, 0x63, 0x6b, + 0x65, 0x72, 0x73, 0x12, 0x63, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, + 0x6f, 0x6f, 0x6b, 0x12, 0x1b, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, + 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x19, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, + 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x15, 0x22, 0x10, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x3a, 0x01, 0x2a, 0x12, 0x67, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x4f, + 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x12, 0x1c, 0x2e, 0x67, 0x63, 0x74, 0x72, + 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, + 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x12, 0x11, + 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, + 0x73, 0x12, 0x6b, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, + 0x6e, 0x66, 0x6f, 0x12, 0x1d, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12, 0x2f, 0x76, 0x31, 0x2f, + 0x67, 0x65, 0x74, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x69, 0x6e, 0x66, 0x6f, 0x12, 0x79, + 0x0a, 0x14, 0x47, 0x65, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, + 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x1d, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, + 0x47, 0x65, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, + 0x65, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, + 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x69, 0x6e, 0x66, + 0x6f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x30, 0x01, 0x12, 0x57, 0x0a, 0x09, 0x47, 0x65, 0x74, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, + 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x19, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x15, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x0f, 0x12, 0x0d, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x63, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x12, 0x63, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, + 0x69, 0x6f, 0x12, 0x1b, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x50, + 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1c, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, + 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x12, 0x10, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x70, 0x6f, + 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x12, 0x7f, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x50, 0x6f, + 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x22, + 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x66, + 0x6f, 0x6c, 0x69, 0x6f, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x50, + 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x12, + 0x17, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, + 0x6f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x82, 0x01, 0x0a, 0x13, 0x41, 0x64, 0x64, + 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x12, 0x22, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x41, 0x64, 0x64, 0x50, 0x6f, 0x72, + 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x41, 0x64, + 0x64, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x1c, 0x22, 0x17, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x64, 0x64, 0x70, 0x6f, 0x72, 0x74, 0x66, 0x6f, + 0x6c, 0x69, 0x6f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x8e, 0x01, + 0x0a, 0x16, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, + 0x6f, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x25, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, + 0x63, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, + 0x6f, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x26, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x50, + 0x6f, 0x72, 0x74, 0x66, 0x6f, 0x6c, 0x69, 0x6f, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x22, + 0x1a, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x66, + 0x6f, 0x6c, 0x69, 0x6f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x77, + 0x0a, 0x11, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x72, 0x65, 0x78, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, + 0x65, 0x72, 0x73, 0x12, 0x20, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, + 0x46, 0x6f, 0x72, 0x65, 0x78, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, + 0x65, 0x74, 0x46, 0x6f, 0x72, 0x65, 0x78, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, + 0x12, 0x15, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x66, 0x6f, 0x72, 0x65, 0x78, 0x70, 0x72, + 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x12, 0x67, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x46, 0x6f, + 0x72, 0x65, 0x78, 0x52, 0x61, 0x74, 0x65, 0x73, 0x12, 0x1c, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, + 0x63, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x6f, 0x72, 0x65, 0x78, 0x52, 0x61, 0x74, 0x65, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, + 0x47, 0x65, 0x74, 0x46, 0x6f, 0x72, 0x65, 0x78, 0x52, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, + 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x66, 0x6f, 0x72, 0x65, 0x78, 0x72, 0x61, 0x74, 0x65, 0x73, + 0x12, 0x5a, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x18, 0x2e, + 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, + 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x22, 0x0d, 0x2f, 0x76, 0x31, 0x2f, + 0x67, 0x65, 0x74, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x52, 0x0a, 0x08, + 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x17, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, + 0x63, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x14, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, + 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x22, + 0x0c, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3a, 0x01, 0x2a, + 0x12, 0x62, 0x0a, 0x0b, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, + 0x1a, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4f, + 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, 0x63, + 0x74, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, + 0x22, 0x0f, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x3a, 0x01, 0x2a, 0x12, 0x6a, 0x0a, 0x0d, 0x53, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65, + 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1c, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x53, + 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x69, 0x6d, + 0x75, 0x6c, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x22, 0x11, 0x2f, 0x76, 0x31, 0x2f, + 0x73, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x3a, 0x01, 0x2a, + 0x12, 0x5e, 0x0a, 0x09, 0x57, 0x68, 0x61, 0x6c, 0x65, 0x42, 0x6f, 0x6d, 0x62, 0x12, 0x18, 0x2e, + 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x68, 0x61, 0x6c, 0x65, 0x42, 0x6f, 0x6d, 0x62, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, + 0x2e, 0x53, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x22, 0x0d, + 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x68, 0x61, 0x6c, 0x65, 0x62, 0x6f, 0x6d, 0x62, 0x3a, 0x01, 0x2a, + 0x12, 0x62, 0x0a, 0x0b, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, + 0x1a, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x4f, + 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, 0x63, + 0x74, 0x72, 0x70, 0x63, 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x4f, 0x72, 0x64, 0x65, 0x72, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, + 0x22, 0x0f, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6f, 0x72, 0x64, 0x65, + 0x72, 0x3a, 0x01, 0x2a, 0x12, 0x72, 0x0a, 0x0f, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x41, 0x6c, + 0x6c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x1e, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, + 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x41, 0x6c, 0x6c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, + 0x2e, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x41, 0x6c, 0x6c, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, + 0x22, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x61, 0x6c, 0x6c, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x57, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x18, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, + 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x19, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x15, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x0f, 0x12, 0x0d, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x73, 0x12, 0x56, 0x0a, 0x08, 0x41, 0x64, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x17, 0x2e, + 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x41, 0x64, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, + 0x41, 0x64, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x22, 0x0c, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x64, + 0x64, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x3a, 0x01, 0x2a, 0x12, 0x62, 0x0a, 0x0b, 0x52, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, + 0x63, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x22, 0x0f, 0x2f, 0x76, 0x31, 0x2f, 0x72, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x3a, 0x01, 0x2a, 0x12, 0xb2, 0x01, + 0x0a, 0x21, 0x47, 0x65, 0x74, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x63, 0x75, 0x72, 0x72, 0x65, + 0x6e, 0x63, 0x79, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x65, 0x73, 0x12, 0x30, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, + 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x44, 0x65, + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, + 0x65, 0x74, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, + 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, + 0x22, 0x1d, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x64, + 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x3a, + 0x01, 0x2a, 0x12, 0xaa, 0x01, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, + 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x41, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x2e, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, + 0x47, 0x65, 0x74, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, + 0x79, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, + 0x47, 0x65, 0x74, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, + 0x79, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x22, + 0x1b, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x64, 0x65, + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x3a, 0x01, 0x2a, 0x12, + 0x6c, 0x0a, 0x11, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x46, 0x69, 0x61, 0x74, 0x46, + 0x75, 0x6e, 0x64, 0x73, 0x12, 0x1b, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x69, + 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x46, 0x69, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x18, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, + 0x72, 0x61, 0x77, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x1a, 0x22, 0x15, 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, + 0x77, 0x66, 0x69, 0x61, 0x74, 0x66, 0x75, 0x6e, 0x64, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x8b, 0x01, + 0x0a, 0x1b, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x43, 0x72, 0x79, 0x70, 0x74, 0x6f, + 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x46, 0x75, 0x6e, 0x64, 0x73, 0x12, 0x1d, 0x2e, + 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x43, + 0x72, 0x79, 0x70, 0x74, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x67, + 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x33, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x22, 0x28, + 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x69, 0x74, 0x68, 0x64, + 0x72, 0x61, 0x77, 0x63, 0x72, 0x79, 0x70, 0x74, 0x6f, 0x66, 0x75, 0x6e, 0x64, 0x73, 0x77, 0x66, + 0x69, 0x61, 0x74, 0x66, 0x75, 0x6e, 0x64, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x82, 0x01, 0x0a, 0x13, + 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, + 0x79, 0x49, 0x44, 0x12, 0x22, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x69, 0x74, + 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x79, 0x49, 0x44, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, + 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x42, 0x79, 0x49, 0x44, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x1c, 0x22, 0x17, 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, + 0x61, 0x77, 0x61, 0x6c, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x62, 0x79, 0x69, 0x64, 0x3a, 0x01, 0x2a, + 0x12, 0x97, 0x01, 0x0a, 0x1a, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x73, 0x42, 0x79, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, + 0x29, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, + 0x77, 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x42, 0x79, 0x45, 0x78, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x67, 0x63, 0x74, + 0x72, 0x70, 0x63, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x73, 0x42, 0x79, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x22, 0x17, + 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x62, 0x79, 0x69, 0x64, 0x3a, 0x01, 0x2a, 0x12, 0x91, 0x01, 0x0a, 0x16, 0x57, + 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x42, + 0x79, 0x44, 0x61, 0x74, 0x65, 0x12, 0x25, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x57, + 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x42, + 0x79, 0x44, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x67, + 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x57, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x42, 0x79, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, + 0x22, 0x19, 0x2f, 0x76, 0x31, 0x2f, 0x77, 0x69, 0x74, 0x68, 0x64, 0x72, 0x61, 0x77, 0x61, 0x6c, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x62, 0x79, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x73, + 0x0a, 0x10, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x73, 0x12, 0x1f, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x4c, + 0x6f, 0x67, 0x67, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, + 0x4c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x12, 0x14, 0x2f, + 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x6c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x64, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x73, 0x12, 0x76, 0x0a, 0x10, 0x53, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x67, 0x65, 0x72, + 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x1f, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, + 0x2e, 0x53, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, + 0x63, 0x2e, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, + 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x19, 0x22, 0x14, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x65, 0x74, 0x6c, 0x6f, 0x67, 0x67, 0x65, + 0x72, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x76, 0x0a, 0x10, 0x47, + 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x69, 0x72, 0x73, 0x12, + 0x1f, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x69, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x20, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x69, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x22, 0x14, 0x2f, 0x76, 0x31, 0x2f, + 0x67, 0x65, 0x74, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x70, 0x61, 0x69, 0x72, 0x73, + 0x3a, 0x01, 0x2a, 0x12, 0x79, 0x0a, 0x12, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x69, 0x72, 0x12, 0x1b, 0x2e, 0x67, 0x63, 0x74, 0x72, + 0x70, 0x63, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x69, 0x72, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, + 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, + 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x21, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x1b, 0x22, 0x16, 0x2f, 0x76, 0x31, 0x2f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x65, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x70, 0x61, 0x69, 0x72, 0x3a, 0x01, 0x2a, 0x12, 0x7b, + 0x0a, 0x13, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x50, 0x61, 0x69, 0x72, 0x12, 0x1b, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x45, + 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x69, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x6e, 0x65, + 0x72, 0x69, 0x63, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x22, + 0x17, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x65, 0x78, 0x63, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x70, 0x61, 0x69, 0x72, 0x3a, 0x01, 0x2a, 0x12, 0x74, 0x0a, 0x12, 0x47, + 0x65, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x53, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x12, 0x21, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x72, + 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, + 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x12, 0x16, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, + 0x6f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x30, + 0x01, 0x12, 0x8c, 0x01, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x12, 0x29, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x53, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x67, 0x63, + 0x74, 0x72, 0x70, 0x63, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x12, 0x1e, + 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x6f, + 0x72, 0x64, 0x65, 0x72, 0x62, 0x6f, 0x6f, 0x6b, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x30, 0x01, + 0x12, 0x68, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x53, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x12, 0x1e, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, + 0x54, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x69, 0x63, + 0x6b, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x74, 0x69, 0x63, 0x6b, + 0x65, 0x72, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x30, 0x01, 0x12, 0x80, 0x01, 0x0a, 0x17, 0x47, + 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x72, + 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x12, 0x26, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, + 0x47, 0x65, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x69, 0x63, 0x6b, 0x65, + 0x72, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x16, + 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x54, 0x69, 0x63, 0x6b, 0x65, 0x72, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, + 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x74, + 0x69, 0x63, 0x6b, 0x65, 0x72, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x30, 0x01, 0x12, 0x67, 0x0a, + 0x0d, 0x47, 0x65, 0x74, 0x41, 0x75, 0x64, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1c, + 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x75, 0x64, 0x69, 0x74, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x67, + 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x75, 0x64, 0x69, 0x74, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x19, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x61, 0x75, 0x64, 0x69, + 0x74, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x74, 0x0a, 0x10, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x12, 0x1f, 0x2e, 0x67, 0x63, 0x74, + 0x72, 0x70, 0x63, 0x2e, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x45, 0x78, 0x65, + 0x63, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x63, + 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x47, 0x65, + 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x63, 0x74, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x2f, 0x65, 0x78, 0x65, 0x63, 0x75, 0x74, 0x65, 0x12, 0x74, 0x0a, 0x0f, + 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x12, + 0x1e, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x20, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x22, 0x14, 0x2f, 0x76, 0x31, 0x2f, 0x67, + 0x63, 0x74, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x2f, 0x75, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x3a, + 0x01, 0x2a, 0x12, 0x78, 0x0a, 0x13, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, + 0x65, 0x61, 0x64, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x12, 0x22, 0x2e, 0x67, 0x63, 0x74, 0x72, + 0x70, 0x63, 0x2e, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x65, 0x61, 0x64, + 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, + 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x22, 0x12, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x63, 0x74, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x2f, 0x72, 0x65, 0x61, 0x64, 0x3a, 0x01, 0x2a, 0x12, 0x70, 0x0a, 0x0f, + 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, + 0x1e, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1f, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x1c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x12, 0x14, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x63, + 0x74, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x6c, + 0x0a, 0x0e, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x12, 0x1d, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1e, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x63, 0x74, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x6e, 0x0a, 0x0d, + 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x53, 0x74, 0x6f, 0x70, 0x12, 0x1c, 0x2e, + 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x63, + 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x47, 0x65, + 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x22, 0x12, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x63, 0x74, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x2f, 0x73, 0x74, 0x6f, 0x70, 0x3a, 0x01, 0x2a, 0x12, 0x74, 0x0a, 0x10, + 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x53, 0x74, 0x6f, 0x70, 0x41, 0x6c, 0x6c, + 0x12, 0x1f, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x53, 0x74, 0x6f, 0x70, 0x41, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x43, 0x54, 0x53, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x22, 0x12, 0x2f, 0x76, 0x31, + 0x2f, 0x67, 0x63, 0x74, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x2f, 0x73, 0x74, 0x6f, 0x70, 0x3a, + 0x01, 0x2a, 0x12, 0x73, 0x0a, 0x10, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x4c, + 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x12, 0x1f, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, + 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, + 0x2e, 0x47, 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, + 0x22, 0x12, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x63, 0x74, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x2f, + 0x73, 0x74, 0x6f, 0x70, 0x3a, 0x01, 0x2a, 0x12, 0x80, 0x01, 0x0a, 0x17, 0x47, 0x43, 0x54, 0x53, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x4c, 0x6f, 0x61, 0x64, 0x54, 0x6f, 0x67, + 0x67, 0x6c, 0x65, 0x12, 0x20, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x43, 0x54, + 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x4c, 0x6f, 0x61, 0x64, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, + 0x43, 0x54, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x22, + 0x16, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x63, 0x74, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x2f, 0x61, + 0x75, 0x74, 0x6f, 0x6c, 0x6f, 0x61, 0x64, 0x3a, 0x01, 0x2a, 0x12, 0x7b, 0x0a, 0x12, 0x47, 0x65, + 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x69, 0x63, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x73, + 0x12, 0x21, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, 0x48, 0x69, 0x73, + 0x74, 0x6f, 0x72, 0x69, 0x63, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x67, 0x63, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x47, 0x65, 0x74, + 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x69, 0x63, 0x43, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x12, + 0x16, 0x2f, 0x76, 0x31, 0x2f, 0x67, 0x65, 0x74, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x69, 0x63, + 0x63, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_rpc_proto_rawDescOnce sync.Once + file_rpc_proto_rawDescData = file_rpc_proto_rawDesc +) + +func file_rpc_proto_rawDescGZIP() []byte { + file_rpc_proto_rawDescOnce.Do(func() { + file_rpc_proto_rawDescData = protoimpl.X.CompressGZIP(file_rpc_proto_rawDescData) + }) + return file_rpc_proto_rawDescData +} + +var file_rpc_proto_msgTypes = make([]protoimpl.MessageInfo, 141) +var file_rpc_proto_goTypes = []interface{}{ + (*GetInfoRequest)(nil), // 0: gctrpc.GetInfoRequest + (*GetInfoResponse)(nil), // 1: gctrpc.GetInfoResponse + (*GetCommunicationRelayersRequest)(nil), // 2: gctrpc.GetCommunicationRelayersRequest + (*CommunicationRelayer)(nil), // 3: gctrpc.CommunicationRelayer + (*GetCommunicationRelayersResponse)(nil), // 4: gctrpc.GetCommunicationRelayersResponse + (*GenericSubsystemRequest)(nil), // 5: gctrpc.GenericSubsystemRequest + (*GenericSubsystemResponse)(nil), // 6: gctrpc.GenericSubsystemResponse + (*GetSubsystemsRequest)(nil), // 7: gctrpc.GetSubsystemsRequest + (*GetSusbsytemsResponse)(nil), // 8: gctrpc.GetSusbsytemsResponse + (*GetRPCEndpointsRequest)(nil), // 9: gctrpc.GetRPCEndpointsRequest + (*RPCEndpoint)(nil), // 10: gctrpc.RPCEndpoint + (*GetRPCEndpointsResponse)(nil), // 11: gctrpc.GetRPCEndpointsResponse + (*GenericExchangeNameRequest)(nil), // 12: gctrpc.GenericExchangeNameRequest + (*GenericExchangeNameResponse)(nil), // 13: gctrpc.GenericExchangeNameResponse + (*GetExchangesRequest)(nil), // 14: gctrpc.GetExchangesRequest + (*GetExchangesResponse)(nil), // 15: gctrpc.GetExchangesResponse + (*GetExchangeOTPReponse)(nil), // 16: gctrpc.GetExchangeOTPReponse + (*GetExchangeOTPsRequest)(nil), // 17: gctrpc.GetExchangeOTPsRequest + (*GetExchangeOTPsResponse)(nil), // 18: gctrpc.GetExchangeOTPsResponse + (*DisableExchangeRequest)(nil), // 19: gctrpc.DisableExchangeRequest + (*PairsSupported)(nil), // 20: gctrpc.PairsSupported + (*GetExchangeInfoResponse)(nil), // 21: gctrpc.GetExchangeInfoResponse + (*GetTickerRequest)(nil), // 22: gctrpc.GetTickerRequest + (*CurrencyPair)(nil), // 23: gctrpc.CurrencyPair + (*TickerResponse)(nil), // 24: gctrpc.TickerResponse + (*GetTickersRequest)(nil), // 25: gctrpc.GetTickersRequest + (*Tickers)(nil), // 26: gctrpc.Tickers + (*GetTickersResponse)(nil), // 27: gctrpc.GetTickersResponse + (*GetOrderbookRequest)(nil), // 28: gctrpc.GetOrderbookRequest + (*OrderbookItem)(nil), // 29: gctrpc.OrderbookItem + (*OrderbookResponse)(nil), // 30: gctrpc.OrderbookResponse + (*GetOrderbooksRequest)(nil), // 31: gctrpc.GetOrderbooksRequest + (*Orderbooks)(nil), // 32: gctrpc.Orderbooks + (*GetOrderbooksResponse)(nil), // 33: gctrpc.GetOrderbooksResponse + (*GetAccountInfoRequest)(nil), // 34: gctrpc.GetAccountInfoRequest + (*Account)(nil), // 35: gctrpc.Account + (*AccountCurrencyInfo)(nil), // 36: gctrpc.AccountCurrencyInfo + (*GetAccountInfoResponse)(nil), // 37: gctrpc.GetAccountInfoResponse + (*GetConfigRequest)(nil), // 38: gctrpc.GetConfigRequest + (*GetConfigResponse)(nil), // 39: gctrpc.GetConfigResponse + (*PortfolioAddress)(nil), // 40: gctrpc.PortfolioAddress + (*GetPortfolioRequest)(nil), // 41: gctrpc.GetPortfolioRequest + (*GetPortfolioResponse)(nil), // 42: gctrpc.GetPortfolioResponse + (*GetPortfolioSummaryRequest)(nil), // 43: gctrpc.GetPortfolioSummaryRequest + (*Coin)(nil), // 44: gctrpc.Coin + (*OfflineCoinSummary)(nil), // 45: gctrpc.OfflineCoinSummary + (*OnlineCoinSummary)(nil), // 46: gctrpc.OnlineCoinSummary + (*OfflineCoins)(nil), // 47: gctrpc.OfflineCoins + (*OnlineCoins)(nil), // 48: gctrpc.OnlineCoins + (*GetPortfolioSummaryResponse)(nil), // 49: gctrpc.GetPortfolioSummaryResponse + (*AddPortfolioAddressRequest)(nil), // 50: gctrpc.AddPortfolioAddressRequest + (*AddPortfolioAddressResponse)(nil), // 51: gctrpc.AddPortfolioAddressResponse + (*RemovePortfolioAddressRequest)(nil), // 52: gctrpc.RemovePortfolioAddressRequest + (*RemovePortfolioAddressResponse)(nil), // 53: gctrpc.RemovePortfolioAddressResponse + (*GetForexProvidersRequest)(nil), // 54: gctrpc.GetForexProvidersRequest + (*ForexProvider)(nil), // 55: gctrpc.ForexProvider + (*GetForexProvidersResponse)(nil), // 56: gctrpc.GetForexProvidersResponse + (*GetForexRatesRequest)(nil), // 57: gctrpc.GetForexRatesRequest + (*ForexRatesConversion)(nil), // 58: gctrpc.ForexRatesConversion + (*GetForexRatesResponse)(nil), // 59: gctrpc.GetForexRatesResponse + (*OrderDetails)(nil), // 60: gctrpc.OrderDetails + (*TradeHistory)(nil), // 61: gctrpc.TradeHistory + (*GetOrdersRequest)(nil), // 62: gctrpc.GetOrdersRequest + (*GetOrdersResponse)(nil), // 63: gctrpc.GetOrdersResponse + (*GetOrderRequest)(nil), // 64: gctrpc.GetOrderRequest + (*SubmitOrderRequest)(nil), // 65: gctrpc.SubmitOrderRequest + (*SubmitOrderResponse)(nil), // 66: gctrpc.SubmitOrderResponse + (*SimulateOrderRequest)(nil), // 67: gctrpc.SimulateOrderRequest + (*SimulateOrderResponse)(nil), // 68: gctrpc.SimulateOrderResponse + (*WhaleBombRequest)(nil), // 69: gctrpc.WhaleBombRequest + (*CancelOrderRequest)(nil), // 70: gctrpc.CancelOrderRequest + (*CancelOrderResponse)(nil), // 71: gctrpc.CancelOrderResponse + (*CancelAllOrdersRequest)(nil), // 72: gctrpc.CancelAllOrdersRequest + (*CancelAllOrdersResponse)(nil), // 73: gctrpc.CancelAllOrdersResponse + (*GetEventsRequest)(nil), // 74: gctrpc.GetEventsRequest + (*ConditionParams)(nil), // 75: gctrpc.ConditionParams + (*GetEventsResponse)(nil), // 76: gctrpc.GetEventsResponse + (*AddEventRequest)(nil), // 77: gctrpc.AddEventRequest + (*AddEventResponse)(nil), // 78: gctrpc.AddEventResponse + (*RemoveEventRequest)(nil), // 79: gctrpc.RemoveEventRequest + (*RemoveEventResponse)(nil), // 80: gctrpc.RemoveEventResponse + (*GetCryptocurrencyDepositAddressesRequest)(nil), // 81: gctrpc.GetCryptocurrencyDepositAddressesRequest + (*GetCryptocurrencyDepositAddressesResponse)(nil), // 82: gctrpc.GetCryptocurrencyDepositAddressesResponse + (*GetCryptocurrencyDepositAddressRequest)(nil), // 83: gctrpc.GetCryptocurrencyDepositAddressRequest + (*GetCryptocurrencyDepositAddressResponse)(nil), // 84: gctrpc.GetCryptocurrencyDepositAddressResponse + (*WithdrawFiatRequest)(nil), // 85: gctrpc.WithdrawFiatRequest + (*WithdrawCryptoRequest)(nil), // 86: gctrpc.WithdrawCryptoRequest + (*WithdrawResponse)(nil), // 87: gctrpc.WithdrawResponse + (*WithdrawalEventByIDRequest)(nil), // 88: gctrpc.WithdrawalEventByIDRequest + (*WithdrawalEventByIDResponse)(nil), // 89: gctrpc.WithdrawalEventByIDResponse + (*WithdrawalEventsByExchangeRequest)(nil), // 90: gctrpc.WithdrawalEventsByExchangeRequest + (*WithdrawalEventsByDateRequest)(nil), // 91: gctrpc.WithdrawalEventsByDateRequest + (*WithdrawalEventsByExchangeResponse)(nil), // 92: gctrpc.WithdrawalEventsByExchangeResponse + (*WithdrawalEventResponse)(nil), // 93: gctrpc.WithdrawalEventResponse + (*WithdrawlExchangeEvent)(nil), // 94: gctrpc.WithdrawlExchangeEvent + (*WithdrawalRequestEvent)(nil), // 95: gctrpc.WithdrawalRequestEvent + (*FiatWithdrawalEvent)(nil), // 96: gctrpc.FiatWithdrawalEvent + (*CryptoWithdrawalEvent)(nil), // 97: gctrpc.CryptoWithdrawalEvent + (*GetLoggerDetailsRequest)(nil), // 98: gctrpc.GetLoggerDetailsRequest + (*GetLoggerDetailsResponse)(nil), // 99: gctrpc.GetLoggerDetailsResponse + (*SetLoggerDetailsRequest)(nil), // 100: gctrpc.SetLoggerDetailsRequest + (*GetExchangePairsRequest)(nil), // 101: gctrpc.GetExchangePairsRequest + (*GetExchangePairsResponse)(nil), // 102: gctrpc.GetExchangePairsResponse + (*ExchangePairRequest)(nil), // 103: gctrpc.ExchangePairRequest + (*GetOrderbookStreamRequest)(nil), // 104: gctrpc.GetOrderbookStreamRequest + (*GetExchangeOrderbookStreamRequest)(nil), // 105: gctrpc.GetExchangeOrderbookStreamRequest + (*GetTickerStreamRequest)(nil), // 106: gctrpc.GetTickerStreamRequest + (*GetExchangeTickerStreamRequest)(nil), // 107: gctrpc.GetExchangeTickerStreamRequest + (*GetAuditEventRequest)(nil), // 108: gctrpc.GetAuditEventRequest + (*GetAuditEventResponse)(nil), // 109: gctrpc.GetAuditEventResponse + (*GetHistoricCandlesRequest)(nil), // 110: gctrpc.GetHistoricCandlesRequest + (*GetHistoricCandlesResponse)(nil), // 111: gctrpc.GetHistoricCandlesResponse + (*Candle)(nil), // 112: gctrpc.Candle + (*AuditEvent)(nil), // 113: gctrpc.AuditEvent + (*GCTScript)(nil), // 114: gctrpc.GCTScript + (*GCTScriptExecuteRequest)(nil), // 115: gctrpc.GCTScriptExecuteRequest + (*GCTScriptStopRequest)(nil), // 116: gctrpc.GCTScriptStopRequest + (*GCTScriptStopAllRequest)(nil), // 117: gctrpc.GCTScriptStopAllRequest + (*GCTScriptStatusRequest)(nil), // 118: gctrpc.GCTScriptStatusRequest + (*GCTScriptListAllRequest)(nil), // 119: gctrpc.GCTScriptListAllRequest + (*GCTScriptUploadRequest)(nil), // 120: gctrpc.GCTScriptUploadRequest + (*GCTScriptReadScriptRequest)(nil), // 121: gctrpc.GCTScriptReadScriptRequest + (*GCTScriptQueryRequest)(nil), // 122: gctrpc.GCTScriptQueryRequest + (*GCTScriptAutoLoadRequest)(nil), // 123: gctrpc.GCTScriptAutoLoadRequest + (*GCTScriptStatusResponse)(nil), // 124: gctrpc.GCTScriptStatusResponse + (*GCTScriptQueryResponse)(nil), // 125: gctrpc.GCTScriptQueryResponse + (*GCTScriptGenericResponse)(nil), // 126: gctrpc.GCTScriptGenericResponse + nil, // 127: gctrpc.GetInfoResponse.SubsystemStatusEntry + nil, // 128: gctrpc.GetInfoResponse.RpcEndpointsEntry + nil, // 129: gctrpc.GetCommunicationRelayersResponse.CommunicationRelayersEntry + nil, // 130: gctrpc.GetSusbsytemsResponse.SubsystemsStatusEntry + nil, // 131: gctrpc.GetRPCEndpointsResponse.EndpointsEntry + nil, // 132: gctrpc.GetExchangeOTPsResponse.OtpCodesEntry + nil, // 133: gctrpc.GetExchangeInfoResponse.SupportedAssetsEntry + nil, // 134: gctrpc.OnlineCoins.CoinsEntry + nil, // 135: gctrpc.GetPortfolioSummaryResponse.CoinsOfflineSummaryEntry + nil, // 136: gctrpc.GetPortfolioSummaryResponse.CoinsOnlineSummaryEntry + (*CancelAllOrdersResponse_Orders)(nil), // 137: gctrpc.CancelAllOrdersResponse.Orders + nil, // 138: gctrpc.CancelAllOrdersResponse.Orders.OrderStatusEntry + nil, // 139: gctrpc.GetCryptocurrencyDepositAddressesResponse.AddressesEntry + nil, // 140: gctrpc.GetExchangePairsResponse.SupportedAssetsEntry + (*timestamp.Timestamp)(nil), // 141: google.protobuf.Timestamp +} +var file_rpc_proto_depIdxs = []int32{ + 127, // 0: gctrpc.GetInfoResponse.subsystem_status:type_name -> gctrpc.GetInfoResponse.SubsystemStatusEntry + 128, // 1: gctrpc.GetInfoResponse.rpc_endpoints:type_name -> gctrpc.GetInfoResponse.RpcEndpointsEntry + 129, // 2: gctrpc.GetCommunicationRelayersResponse.communication_relayers:type_name -> gctrpc.GetCommunicationRelayersResponse.CommunicationRelayersEntry + 130, // 3: gctrpc.GetSusbsytemsResponse.subsystems_status:type_name -> gctrpc.GetSusbsytemsResponse.SubsystemsStatusEntry + 131, // 4: gctrpc.GetRPCEndpointsResponse.endpoints:type_name -> gctrpc.GetRPCEndpointsResponse.EndpointsEntry + 132, // 5: gctrpc.GetExchangeOTPsResponse.otp_codes:type_name -> gctrpc.GetExchangeOTPsResponse.OtpCodesEntry + 133, // 6: gctrpc.GetExchangeInfoResponse.supported_assets:type_name -> gctrpc.GetExchangeInfoResponse.SupportedAssetsEntry + 23, // 7: gctrpc.GetTickerRequest.pair:type_name -> gctrpc.CurrencyPair + 23, // 8: gctrpc.TickerResponse.pair:type_name -> gctrpc.CurrencyPair + 24, // 9: gctrpc.Tickers.tickers:type_name -> gctrpc.TickerResponse + 26, // 10: gctrpc.GetTickersResponse.tickers:type_name -> gctrpc.Tickers + 23, // 11: gctrpc.GetOrderbookRequest.pair:type_name -> gctrpc.CurrencyPair + 23, // 12: gctrpc.OrderbookResponse.pair:type_name -> gctrpc.CurrencyPair + 29, // 13: gctrpc.OrderbookResponse.bids:type_name -> gctrpc.OrderbookItem + 29, // 14: gctrpc.OrderbookResponse.asks:type_name -> gctrpc.OrderbookItem + 30, // 15: gctrpc.Orderbooks.orderbooks:type_name -> gctrpc.OrderbookResponse + 32, // 16: gctrpc.GetOrderbooksResponse.orderbooks:type_name -> gctrpc.Orderbooks + 36, // 17: gctrpc.Account.currencies:type_name -> gctrpc.AccountCurrencyInfo + 35, // 18: gctrpc.GetAccountInfoResponse.accounts:type_name -> gctrpc.Account + 40, // 19: gctrpc.GetPortfolioResponse.portfolio:type_name -> gctrpc.PortfolioAddress + 45, // 20: gctrpc.OfflineCoins.addresses:type_name -> gctrpc.OfflineCoinSummary + 134, // 21: gctrpc.OnlineCoins.coins:type_name -> gctrpc.OnlineCoins.CoinsEntry + 44, // 22: gctrpc.GetPortfolioSummaryResponse.coin_totals:type_name -> gctrpc.Coin + 44, // 23: gctrpc.GetPortfolioSummaryResponse.coins_offline:type_name -> gctrpc.Coin + 135, // 24: gctrpc.GetPortfolioSummaryResponse.coins_offline_summary:type_name -> gctrpc.GetPortfolioSummaryResponse.CoinsOfflineSummaryEntry + 44, // 25: gctrpc.GetPortfolioSummaryResponse.coins_online:type_name -> gctrpc.Coin + 136, // 26: gctrpc.GetPortfolioSummaryResponse.coins_online_summary:type_name -> gctrpc.GetPortfolioSummaryResponse.CoinsOnlineSummaryEntry + 55, // 27: gctrpc.GetForexProvidersResponse.forex_providers:type_name -> gctrpc.ForexProvider + 58, // 28: gctrpc.GetForexRatesResponse.forex_rates:type_name -> gctrpc.ForexRatesConversion + 61, // 29: gctrpc.OrderDetails.trades:type_name -> gctrpc.TradeHistory + 23, // 30: gctrpc.GetOrdersRequest.pair:type_name -> gctrpc.CurrencyPair + 60, // 31: gctrpc.GetOrdersResponse.orders:type_name -> gctrpc.OrderDetails + 23, // 32: gctrpc.SubmitOrderRequest.pair:type_name -> gctrpc.CurrencyPair + 23, // 33: gctrpc.SimulateOrderRequest.pair:type_name -> gctrpc.CurrencyPair + 29, // 34: gctrpc.SimulateOrderResponse.orders:type_name -> gctrpc.OrderbookItem + 23, // 35: gctrpc.WhaleBombRequest.pair:type_name -> gctrpc.CurrencyPair + 23, // 36: gctrpc.CancelOrderRequest.pair:type_name -> gctrpc.CurrencyPair + 137, // 37: gctrpc.CancelAllOrdersResponse.orders:type_name -> gctrpc.CancelAllOrdersResponse.Orders + 75, // 38: gctrpc.GetEventsResponse.condition_params:type_name -> gctrpc.ConditionParams + 23, // 39: gctrpc.GetEventsResponse.pair:type_name -> gctrpc.CurrencyPair + 75, // 40: gctrpc.AddEventRequest.condition_params:type_name -> gctrpc.ConditionParams + 23, // 41: gctrpc.AddEventRequest.pair:type_name -> gctrpc.CurrencyPair + 139, // 42: gctrpc.GetCryptocurrencyDepositAddressesResponse.addresses:type_name -> gctrpc.GetCryptocurrencyDepositAddressesResponse.AddressesEntry + 93, // 43: gctrpc.WithdrawalEventByIDResponse.event:type_name -> gctrpc.WithdrawalEventResponse + 93, // 44: gctrpc.WithdrawalEventsByExchangeResponse.event:type_name -> gctrpc.WithdrawalEventResponse + 94, // 45: gctrpc.WithdrawalEventResponse.exchange:type_name -> gctrpc.WithdrawlExchangeEvent + 95, // 46: gctrpc.WithdrawalEventResponse.request:type_name -> gctrpc.WithdrawalRequestEvent + 141, // 47: gctrpc.WithdrawalEventResponse.created_at:type_name -> google.protobuf.Timestamp + 141, // 48: gctrpc.WithdrawalEventResponse.updated_at:type_name -> google.protobuf.Timestamp + 96, // 49: gctrpc.WithdrawalRequestEvent.fiat:type_name -> gctrpc.FiatWithdrawalEvent + 97, // 50: gctrpc.WithdrawalRequestEvent.crypto:type_name -> gctrpc.CryptoWithdrawalEvent + 140, // 51: gctrpc.GetExchangePairsResponse.supported_assets:type_name -> gctrpc.GetExchangePairsResponse.SupportedAssetsEntry + 23, // 52: gctrpc.ExchangePairRequest.pair:type_name -> gctrpc.CurrencyPair + 23, // 53: gctrpc.GetOrderbookStreamRequest.pair:type_name -> gctrpc.CurrencyPair + 23, // 54: gctrpc.GetTickerStreamRequest.pair:type_name -> gctrpc.CurrencyPair + 113, // 55: gctrpc.GetAuditEventResponse.events:type_name -> gctrpc.AuditEvent + 23, // 56: gctrpc.GetHistoricCandlesRequest.pair:type_name -> gctrpc.CurrencyPair + 23, // 57: gctrpc.GetHistoricCandlesResponse.pair:type_name -> gctrpc.CurrencyPair + 112, // 58: gctrpc.GetHistoricCandlesResponse.candle:type_name -> gctrpc.Candle + 114, // 59: gctrpc.GCTScriptExecuteRequest.script:type_name -> gctrpc.GCTScript + 114, // 60: gctrpc.GCTScriptStopRequest.script:type_name -> gctrpc.GCTScript + 114, // 61: gctrpc.GCTScriptReadScriptRequest.script:type_name -> gctrpc.GCTScript + 114, // 62: gctrpc.GCTScriptQueryRequest.script:type_name -> gctrpc.GCTScript + 114, // 63: gctrpc.GCTScriptStatusResponse.scripts:type_name -> gctrpc.GCTScript + 114, // 64: gctrpc.GCTScriptQueryResponse.script:type_name -> gctrpc.GCTScript + 10, // 65: gctrpc.GetInfoResponse.RpcEndpointsEntry.value:type_name -> gctrpc.RPCEndpoint + 3, // 66: gctrpc.GetCommunicationRelayersResponse.CommunicationRelayersEntry.value:type_name -> gctrpc.CommunicationRelayer + 10, // 67: gctrpc.GetRPCEndpointsResponse.EndpointsEntry.value:type_name -> gctrpc.RPCEndpoint + 20, // 68: gctrpc.GetExchangeInfoResponse.SupportedAssetsEntry.value:type_name -> gctrpc.PairsSupported + 46, // 69: gctrpc.OnlineCoins.CoinsEntry.value:type_name -> gctrpc.OnlineCoinSummary + 47, // 70: gctrpc.GetPortfolioSummaryResponse.CoinsOfflineSummaryEntry.value:type_name -> gctrpc.OfflineCoins + 48, // 71: gctrpc.GetPortfolioSummaryResponse.CoinsOnlineSummaryEntry.value:type_name -> gctrpc.OnlineCoins + 138, // 72: gctrpc.CancelAllOrdersResponse.Orders.order_status:type_name -> gctrpc.CancelAllOrdersResponse.Orders.OrderStatusEntry + 20, // 73: gctrpc.GetExchangePairsResponse.SupportedAssetsEntry.value:type_name -> gctrpc.PairsSupported + 0, // 74: gctrpc.GoCryptoTrader.GetInfo:input_type -> gctrpc.GetInfoRequest + 7, // 75: gctrpc.GoCryptoTrader.GetSubsystems:input_type -> gctrpc.GetSubsystemsRequest + 5, // 76: gctrpc.GoCryptoTrader.EnableSubsystem:input_type -> gctrpc.GenericSubsystemRequest + 5, // 77: gctrpc.GoCryptoTrader.DisableSubsystem:input_type -> gctrpc.GenericSubsystemRequest + 9, // 78: gctrpc.GoCryptoTrader.GetRPCEndpoints:input_type -> gctrpc.GetRPCEndpointsRequest + 2, // 79: gctrpc.GoCryptoTrader.GetCommunicationRelayers:input_type -> gctrpc.GetCommunicationRelayersRequest + 14, // 80: gctrpc.GoCryptoTrader.GetExchanges:input_type -> gctrpc.GetExchangesRequest + 12, // 81: gctrpc.GoCryptoTrader.DisableExchange:input_type -> gctrpc.GenericExchangeNameRequest + 12, // 82: gctrpc.GoCryptoTrader.GetExchangeInfo:input_type -> gctrpc.GenericExchangeNameRequest + 12, // 83: gctrpc.GoCryptoTrader.GetExchangeOTPCode:input_type -> gctrpc.GenericExchangeNameRequest + 17, // 84: gctrpc.GoCryptoTrader.GetExchangeOTPCodes:input_type -> gctrpc.GetExchangeOTPsRequest + 12, // 85: gctrpc.GoCryptoTrader.EnableExchange:input_type -> gctrpc.GenericExchangeNameRequest + 22, // 86: gctrpc.GoCryptoTrader.GetTicker:input_type -> gctrpc.GetTickerRequest + 25, // 87: gctrpc.GoCryptoTrader.GetTickers:input_type -> gctrpc.GetTickersRequest + 28, // 88: gctrpc.GoCryptoTrader.GetOrderbook:input_type -> gctrpc.GetOrderbookRequest + 31, // 89: gctrpc.GoCryptoTrader.GetOrderbooks:input_type -> gctrpc.GetOrderbooksRequest + 34, // 90: gctrpc.GoCryptoTrader.GetAccountInfo:input_type -> gctrpc.GetAccountInfoRequest + 34, // 91: gctrpc.GoCryptoTrader.GetAccountInfoStream:input_type -> gctrpc.GetAccountInfoRequest + 38, // 92: gctrpc.GoCryptoTrader.GetConfig:input_type -> gctrpc.GetConfigRequest + 41, // 93: gctrpc.GoCryptoTrader.GetPortfolio:input_type -> gctrpc.GetPortfolioRequest + 43, // 94: gctrpc.GoCryptoTrader.GetPortfolioSummary:input_type -> gctrpc.GetPortfolioSummaryRequest + 50, // 95: gctrpc.GoCryptoTrader.AddPortfolioAddress:input_type -> gctrpc.AddPortfolioAddressRequest + 52, // 96: gctrpc.GoCryptoTrader.RemovePortfolioAddress:input_type -> gctrpc.RemovePortfolioAddressRequest + 54, // 97: gctrpc.GoCryptoTrader.GetForexProviders:input_type -> gctrpc.GetForexProvidersRequest + 57, // 98: gctrpc.GoCryptoTrader.GetForexRates:input_type -> gctrpc.GetForexRatesRequest + 62, // 99: gctrpc.GoCryptoTrader.GetOrders:input_type -> gctrpc.GetOrdersRequest + 64, // 100: gctrpc.GoCryptoTrader.GetOrder:input_type -> gctrpc.GetOrderRequest + 65, // 101: gctrpc.GoCryptoTrader.SubmitOrder:input_type -> gctrpc.SubmitOrderRequest + 67, // 102: gctrpc.GoCryptoTrader.SimulateOrder:input_type -> gctrpc.SimulateOrderRequest + 69, // 103: gctrpc.GoCryptoTrader.WhaleBomb:input_type -> gctrpc.WhaleBombRequest + 70, // 104: gctrpc.GoCryptoTrader.CancelOrder:input_type -> gctrpc.CancelOrderRequest + 72, // 105: gctrpc.GoCryptoTrader.CancelAllOrders:input_type -> gctrpc.CancelAllOrdersRequest + 74, // 106: gctrpc.GoCryptoTrader.GetEvents:input_type -> gctrpc.GetEventsRequest + 77, // 107: gctrpc.GoCryptoTrader.AddEvent:input_type -> gctrpc.AddEventRequest + 79, // 108: gctrpc.GoCryptoTrader.RemoveEvent:input_type -> gctrpc.RemoveEventRequest + 81, // 109: gctrpc.GoCryptoTrader.GetCryptocurrencyDepositAddresses:input_type -> gctrpc.GetCryptocurrencyDepositAddressesRequest + 83, // 110: gctrpc.GoCryptoTrader.GetCryptocurrencyDepositAddress:input_type -> gctrpc.GetCryptocurrencyDepositAddressRequest + 85, // 111: gctrpc.GoCryptoTrader.WithdrawFiatFunds:input_type -> gctrpc.WithdrawFiatRequest + 86, // 112: gctrpc.GoCryptoTrader.WithdrawCryptocurrencyFunds:input_type -> gctrpc.WithdrawCryptoRequest + 88, // 113: gctrpc.GoCryptoTrader.WithdrawalEventByID:input_type -> gctrpc.WithdrawalEventByIDRequest + 90, // 114: gctrpc.GoCryptoTrader.WithdrawalEventsByExchange:input_type -> gctrpc.WithdrawalEventsByExchangeRequest + 91, // 115: gctrpc.GoCryptoTrader.WithdrawalEventsByDate:input_type -> gctrpc.WithdrawalEventsByDateRequest + 98, // 116: gctrpc.GoCryptoTrader.GetLoggerDetails:input_type -> gctrpc.GetLoggerDetailsRequest + 100, // 117: gctrpc.GoCryptoTrader.SetLoggerDetails:input_type -> gctrpc.SetLoggerDetailsRequest + 101, // 118: gctrpc.GoCryptoTrader.GetExchangePairs:input_type -> gctrpc.GetExchangePairsRequest + 103, // 119: gctrpc.GoCryptoTrader.EnableExchangePair:input_type -> gctrpc.ExchangePairRequest + 103, // 120: gctrpc.GoCryptoTrader.DisableExchangePair:input_type -> gctrpc.ExchangePairRequest + 104, // 121: gctrpc.GoCryptoTrader.GetOrderbookStream:input_type -> gctrpc.GetOrderbookStreamRequest + 105, // 122: gctrpc.GoCryptoTrader.GetExchangeOrderbookStream:input_type -> gctrpc.GetExchangeOrderbookStreamRequest + 106, // 123: gctrpc.GoCryptoTrader.GetTickerStream:input_type -> gctrpc.GetTickerStreamRequest + 107, // 124: gctrpc.GoCryptoTrader.GetExchangeTickerStream:input_type -> gctrpc.GetExchangeTickerStreamRequest + 108, // 125: gctrpc.GoCryptoTrader.GetAuditEvent:input_type -> gctrpc.GetAuditEventRequest + 115, // 126: gctrpc.GoCryptoTrader.GCTScriptExecute:input_type -> gctrpc.GCTScriptExecuteRequest + 120, // 127: gctrpc.GoCryptoTrader.GCTScriptUpload:input_type -> gctrpc.GCTScriptUploadRequest + 121, // 128: gctrpc.GoCryptoTrader.GCTScriptReadScript:input_type -> gctrpc.GCTScriptReadScriptRequest + 118, // 129: gctrpc.GoCryptoTrader.GCTScriptStatus:input_type -> gctrpc.GCTScriptStatusRequest + 122, // 130: gctrpc.GoCryptoTrader.GCTScriptQuery:input_type -> gctrpc.GCTScriptQueryRequest + 116, // 131: gctrpc.GoCryptoTrader.GCTScriptStop:input_type -> gctrpc.GCTScriptStopRequest + 117, // 132: gctrpc.GoCryptoTrader.GCTScriptStopAll:input_type -> gctrpc.GCTScriptStopAllRequest + 119, // 133: gctrpc.GoCryptoTrader.GCTScriptListAll:input_type -> gctrpc.GCTScriptListAllRequest + 123, // 134: gctrpc.GoCryptoTrader.GCTScriptAutoLoadToggle:input_type -> gctrpc.GCTScriptAutoLoadRequest + 110, // 135: gctrpc.GoCryptoTrader.GetHistoricCandles:input_type -> gctrpc.GetHistoricCandlesRequest + 1, // 136: gctrpc.GoCryptoTrader.GetInfo:output_type -> gctrpc.GetInfoResponse + 8, // 137: gctrpc.GoCryptoTrader.GetSubsystems:output_type -> gctrpc.GetSusbsytemsResponse + 6, // 138: gctrpc.GoCryptoTrader.EnableSubsystem:output_type -> gctrpc.GenericSubsystemResponse + 6, // 139: gctrpc.GoCryptoTrader.DisableSubsystem:output_type -> gctrpc.GenericSubsystemResponse + 11, // 140: gctrpc.GoCryptoTrader.GetRPCEndpoints:output_type -> gctrpc.GetRPCEndpointsResponse + 4, // 141: gctrpc.GoCryptoTrader.GetCommunicationRelayers:output_type -> gctrpc.GetCommunicationRelayersResponse + 15, // 142: gctrpc.GoCryptoTrader.GetExchanges:output_type -> gctrpc.GetExchangesResponse + 13, // 143: gctrpc.GoCryptoTrader.DisableExchange:output_type -> gctrpc.GenericExchangeNameResponse + 21, // 144: gctrpc.GoCryptoTrader.GetExchangeInfo:output_type -> gctrpc.GetExchangeInfoResponse + 16, // 145: gctrpc.GoCryptoTrader.GetExchangeOTPCode:output_type -> gctrpc.GetExchangeOTPReponse + 18, // 146: gctrpc.GoCryptoTrader.GetExchangeOTPCodes:output_type -> gctrpc.GetExchangeOTPsResponse + 13, // 147: gctrpc.GoCryptoTrader.EnableExchange:output_type -> gctrpc.GenericExchangeNameResponse + 24, // 148: gctrpc.GoCryptoTrader.GetTicker:output_type -> gctrpc.TickerResponse + 27, // 149: gctrpc.GoCryptoTrader.GetTickers:output_type -> gctrpc.GetTickersResponse + 30, // 150: gctrpc.GoCryptoTrader.GetOrderbook:output_type -> gctrpc.OrderbookResponse + 33, // 151: gctrpc.GoCryptoTrader.GetOrderbooks:output_type -> gctrpc.GetOrderbooksResponse + 37, // 152: gctrpc.GoCryptoTrader.GetAccountInfo:output_type -> gctrpc.GetAccountInfoResponse + 37, // 153: gctrpc.GoCryptoTrader.GetAccountInfoStream:output_type -> gctrpc.GetAccountInfoResponse + 39, // 154: gctrpc.GoCryptoTrader.GetConfig:output_type -> gctrpc.GetConfigResponse + 42, // 155: gctrpc.GoCryptoTrader.GetPortfolio:output_type -> gctrpc.GetPortfolioResponse + 49, // 156: gctrpc.GoCryptoTrader.GetPortfolioSummary:output_type -> gctrpc.GetPortfolioSummaryResponse + 51, // 157: gctrpc.GoCryptoTrader.AddPortfolioAddress:output_type -> gctrpc.AddPortfolioAddressResponse + 53, // 158: gctrpc.GoCryptoTrader.RemovePortfolioAddress:output_type -> gctrpc.RemovePortfolioAddressResponse + 56, // 159: gctrpc.GoCryptoTrader.GetForexProviders:output_type -> gctrpc.GetForexProvidersResponse + 59, // 160: gctrpc.GoCryptoTrader.GetForexRates:output_type -> gctrpc.GetForexRatesResponse + 63, // 161: gctrpc.GoCryptoTrader.GetOrders:output_type -> gctrpc.GetOrdersResponse + 60, // 162: gctrpc.GoCryptoTrader.GetOrder:output_type -> gctrpc.OrderDetails + 66, // 163: gctrpc.GoCryptoTrader.SubmitOrder:output_type -> gctrpc.SubmitOrderResponse + 68, // 164: gctrpc.GoCryptoTrader.SimulateOrder:output_type -> gctrpc.SimulateOrderResponse + 68, // 165: gctrpc.GoCryptoTrader.WhaleBomb:output_type -> gctrpc.SimulateOrderResponse + 71, // 166: gctrpc.GoCryptoTrader.CancelOrder:output_type -> gctrpc.CancelOrderResponse + 73, // 167: gctrpc.GoCryptoTrader.CancelAllOrders:output_type -> gctrpc.CancelAllOrdersResponse + 76, // 168: gctrpc.GoCryptoTrader.GetEvents:output_type -> gctrpc.GetEventsResponse + 78, // 169: gctrpc.GoCryptoTrader.AddEvent:output_type -> gctrpc.AddEventResponse + 80, // 170: gctrpc.GoCryptoTrader.RemoveEvent:output_type -> gctrpc.RemoveEventResponse + 82, // 171: gctrpc.GoCryptoTrader.GetCryptocurrencyDepositAddresses:output_type -> gctrpc.GetCryptocurrencyDepositAddressesResponse + 84, // 172: gctrpc.GoCryptoTrader.GetCryptocurrencyDepositAddress:output_type -> gctrpc.GetCryptocurrencyDepositAddressResponse + 87, // 173: gctrpc.GoCryptoTrader.WithdrawFiatFunds:output_type -> gctrpc.WithdrawResponse + 87, // 174: gctrpc.GoCryptoTrader.WithdrawCryptocurrencyFunds:output_type -> gctrpc.WithdrawResponse + 89, // 175: gctrpc.GoCryptoTrader.WithdrawalEventByID:output_type -> gctrpc.WithdrawalEventByIDResponse + 92, // 176: gctrpc.GoCryptoTrader.WithdrawalEventsByExchange:output_type -> gctrpc.WithdrawalEventsByExchangeResponse + 92, // 177: gctrpc.GoCryptoTrader.WithdrawalEventsByDate:output_type -> gctrpc.WithdrawalEventsByExchangeResponse + 99, // 178: gctrpc.GoCryptoTrader.GetLoggerDetails:output_type -> gctrpc.GetLoggerDetailsResponse + 99, // 179: gctrpc.GoCryptoTrader.SetLoggerDetails:output_type -> gctrpc.GetLoggerDetailsResponse + 102, // 180: gctrpc.GoCryptoTrader.GetExchangePairs:output_type -> gctrpc.GetExchangePairsResponse + 13, // 181: gctrpc.GoCryptoTrader.EnableExchangePair:output_type -> gctrpc.GenericExchangeNameResponse + 13, // 182: gctrpc.GoCryptoTrader.DisableExchangePair:output_type -> gctrpc.GenericExchangeNameResponse + 30, // 183: gctrpc.GoCryptoTrader.GetOrderbookStream:output_type -> gctrpc.OrderbookResponse + 30, // 184: gctrpc.GoCryptoTrader.GetExchangeOrderbookStream:output_type -> gctrpc.OrderbookResponse + 24, // 185: gctrpc.GoCryptoTrader.GetTickerStream:output_type -> gctrpc.TickerResponse + 24, // 186: gctrpc.GoCryptoTrader.GetExchangeTickerStream:output_type -> gctrpc.TickerResponse + 109, // 187: gctrpc.GoCryptoTrader.GetAuditEvent:output_type -> gctrpc.GetAuditEventResponse + 126, // 188: gctrpc.GoCryptoTrader.GCTScriptExecute:output_type -> gctrpc.GCTScriptGenericResponse + 126, // 189: gctrpc.GoCryptoTrader.GCTScriptUpload:output_type -> gctrpc.GCTScriptGenericResponse + 125, // 190: gctrpc.GoCryptoTrader.GCTScriptReadScript:output_type -> gctrpc.GCTScriptQueryResponse + 124, // 191: gctrpc.GoCryptoTrader.GCTScriptStatus:output_type -> gctrpc.GCTScriptStatusResponse + 125, // 192: gctrpc.GoCryptoTrader.GCTScriptQuery:output_type -> gctrpc.GCTScriptQueryResponse + 126, // 193: gctrpc.GoCryptoTrader.GCTScriptStop:output_type -> gctrpc.GCTScriptGenericResponse + 126, // 194: gctrpc.GoCryptoTrader.GCTScriptStopAll:output_type -> gctrpc.GCTScriptGenericResponse + 124, // 195: gctrpc.GoCryptoTrader.GCTScriptListAll:output_type -> gctrpc.GCTScriptStatusResponse + 126, // 196: gctrpc.GoCryptoTrader.GCTScriptAutoLoadToggle:output_type -> gctrpc.GCTScriptGenericResponse + 111, // 197: gctrpc.GoCryptoTrader.GetHistoricCandles:output_type -> gctrpc.GetHistoricCandlesResponse + 136, // [136:198] is the sub-list for method output_type + 74, // [74:136] is the sub-list for method input_type + 74, // [74:74] is the sub-list for extension type_name + 74, // [74:74] is the sub-list for extension extendee + 0, // [0:74] is the sub-list for field type_name +} + +func init() { file_rpc_proto_init() } +func file_rpc_proto_init() { + if File_rpc_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_rpc_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetInfoRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetInfoResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetCommunicationRelayersRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CommunicationRelayer); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetCommunicationRelayersResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenericSubsystemRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenericSubsystemResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetSubsystemsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetSusbsytemsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetRPCEndpointsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RPCEndpoint); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetRPCEndpointsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenericExchangeNameRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenericExchangeNameResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetExchangesRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetExchangesResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetExchangeOTPReponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetExchangeOTPsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetExchangeOTPsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DisableExchangeRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PairsSupported); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetExchangeInfoResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetTickerRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CurrencyPair); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TickerResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetTickersRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Tickers); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetTickersResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetOrderbookRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OrderbookItem); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OrderbookResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetOrderbooksRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Orderbooks); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetOrderbooksResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetAccountInfoRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Account); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AccountCurrencyInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetAccountInfoResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetConfigRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetConfigResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PortfolioAddress); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetPortfolioRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetPortfolioResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetPortfolioSummaryRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Coin); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OfflineCoinSummary); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OnlineCoinSummary); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OfflineCoins); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OnlineCoins); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetPortfolioSummaryResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AddPortfolioAddressRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AddPortfolioAddressResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RemovePortfolioAddressRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RemovePortfolioAddressResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetForexProvidersRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ForexProvider); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetForexProvidersResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetForexRatesRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ForexRatesConversion); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetForexRatesResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OrderDetails); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TradeHistory); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetOrdersRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetOrdersResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetOrderRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SubmitOrderRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SubmitOrderResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SimulateOrderRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SimulateOrderResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WhaleBombRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CancelOrderRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CancelOrderResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CancelAllOrdersRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CancelAllOrdersResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetEventsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ConditionParams); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetEventsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AddEventRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AddEventResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RemoveEventRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RemoveEventResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetCryptocurrencyDepositAddressesRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetCryptocurrencyDepositAddressesResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetCryptocurrencyDepositAddressRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetCryptocurrencyDepositAddressResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WithdrawFiatRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WithdrawCryptoRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WithdrawResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WithdrawalEventByIDRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WithdrawalEventByIDResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WithdrawalEventsByExchangeRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WithdrawalEventsByDateRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WithdrawalEventsByExchangeResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WithdrawalEventResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WithdrawlExchangeEvent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*WithdrawalRequestEvent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*FiatWithdrawalEvent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CryptoWithdrawalEvent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetLoggerDetailsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetLoggerDetailsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SetLoggerDetailsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetExchangePairsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetExchangePairsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ExchangePairRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetOrderbookStreamRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetExchangeOrderbookStreamRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetTickerStreamRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetExchangeTickerStreamRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetAuditEventRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetAuditEventResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetHistoricCandlesRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetHistoricCandlesResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Candle); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[113].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AuditEvent); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GCTScript); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[115].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GCTScriptExecuteRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[116].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GCTScriptStopRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[117].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GCTScriptStopAllRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[118].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GCTScriptStatusRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[119].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GCTScriptListAllRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[120].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GCTScriptUploadRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[121].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GCTScriptReadScriptRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[122].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GCTScriptQueryRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[123].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GCTScriptAutoLoadRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[124].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GCTScriptStatusResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[125].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GCTScriptQueryResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[126].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GCTScriptGenericResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rpc_proto_msgTypes[137].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CancelAllOrdersResponse_Orders); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_rpc_proto_rawDesc, + NumEnums: 0, + NumMessages: 141, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_rpc_proto_goTypes, + DependencyIndexes: file_rpc_proto_depIdxs, + MessageInfos: file_rpc_proto_msgTypes, + }.Build() + File_rpc_proto = out.File + file_rpc_proto_rawDesc = nil + file_rpc_proto_goTypes = nil + file_rpc_proto_depIdxs = nil } // Reference imports to suppress errors if they are not otherwise used. @@ -7906,190 +11764,190 @@ type GoCryptoTraderServer interface { type UnimplementedGoCryptoTraderServer struct { } -func (*UnimplementedGoCryptoTraderServer) GetInfo(ctx context.Context, req *GetInfoRequest) (*GetInfoResponse, error) { +func (*UnimplementedGoCryptoTraderServer) GetInfo(context.Context, *GetInfoRequest) (*GetInfoResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetInfo not implemented") } -func (*UnimplementedGoCryptoTraderServer) GetSubsystems(ctx context.Context, req *GetSubsystemsRequest) (*GetSusbsytemsResponse, error) { +func (*UnimplementedGoCryptoTraderServer) GetSubsystems(context.Context, *GetSubsystemsRequest) (*GetSusbsytemsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetSubsystems not implemented") } -func (*UnimplementedGoCryptoTraderServer) EnableSubsystem(ctx context.Context, req *GenericSubsystemRequest) (*GenericSubsystemResponse, error) { +func (*UnimplementedGoCryptoTraderServer) EnableSubsystem(context.Context, *GenericSubsystemRequest) (*GenericSubsystemResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method EnableSubsystem not implemented") } -func (*UnimplementedGoCryptoTraderServer) DisableSubsystem(ctx context.Context, req *GenericSubsystemRequest) (*GenericSubsystemResponse, error) { +func (*UnimplementedGoCryptoTraderServer) DisableSubsystem(context.Context, *GenericSubsystemRequest) (*GenericSubsystemResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method DisableSubsystem not implemented") } -func (*UnimplementedGoCryptoTraderServer) GetRPCEndpoints(ctx context.Context, req *GetRPCEndpointsRequest) (*GetRPCEndpointsResponse, error) { +func (*UnimplementedGoCryptoTraderServer) GetRPCEndpoints(context.Context, *GetRPCEndpointsRequest) (*GetRPCEndpointsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetRPCEndpoints not implemented") } -func (*UnimplementedGoCryptoTraderServer) GetCommunicationRelayers(ctx context.Context, req *GetCommunicationRelayersRequest) (*GetCommunicationRelayersResponse, error) { +func (*UnimplementedGoCryptoTraderServer) GetCommunicationRelayers(context.Context, *GetCommunicationRelayersRequest) (*GetCommunicationRelayersResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetCommunicationRelayers not implemented") } -func (*UnimplementedGoCryptoTraderServer) GetExchanges(ctx context.Context, req *GetExchangesRequest) (*GetExchangesResponse, error) { +func (*UnimplementedGoCryptoTraderServer) GetExchanges(context.Context, *GetExchangesRequest) (*GetExchangesResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetExchanges not implemented") } -func (*UnimplementedGoCryptoTraderServer) DisableExchange(ctx context.Context, req *GenericExchangeNameRequest) (*GenericExchangeNameResponse, error) { +func (*UnimplementedGoCryptoTraderServer) DisableExchange(context.Context, *GenericExchangeNameRequest) (*GenericExchangeNameResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method DisableExchange not implemented") } -func (*UnimplementedGoCryptoTraderServer) GetExchangeInfo(ctx context.Context, req *GenericExchangeNameRequest) (*GetExchangeInfoResponse, error) { +func (*UnimplementedGoCryptoTraderServer) GetExchangeInfo(context.Context, *GenericExchangeNameRequest) (*GetExchangeInfoResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetExchangeInfo not implemented") } -func (*UnimplementedGoCryptoTraderServer) GetExchangeOTPCode(ctx context.Context, req *GenericExchangeNameRequest) (*GetExchangeOTPReponse, error) { +func (*UnimplementedGoCryptoTraderServer) GetExchangeOTPCode(context.Context, *GenericExchangeNameRequest) (*GetExchangeOTPReponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetExchangeOTPCode not implemented") } -func (*UnimplementedGoCryptoTraderServer) GetExchangeOTPCodes(ctx context.Context, req *GetExchangeOTPsRequest) (*GetExchangeOTPsResponse, error) { +func (*UnimplementedGoCryptoTraderServer) GetExchangeOTPCodes(context.Context, *GetExchangeOTPsRequest) (*GetExchangeOTPsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetExchangeOTPCodes not implemented") } -func (*UnimplementedGoCryptoTraderServer) EnableExchange(ctx context.Context, req *GenericExchangeNameRequest) (*GenericExchangeNameResponse, error) { +func (*UnimplementedGoCryptoTraderServer) EnableExchange(context.Context, *GenericExchangeNameRequest) (*GenericExchangeNameResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method EnableExchange not implemented") } -func (*UnimplementedGoCryptoTraderServer) GetTicker(ctx context.Context, req *GetTickerRequest) (*TickerResponse, error) { +func (*UnimplementedGoCryptoTraderServer) GetTicker(context.Context, *GetTickerRequest) (*TickerResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetTicker not implemented") } -func (*UnimplementedGoCryptoTraderServer) GetTickers(ctx context.Context, req *GetTickersRequest) (*GetTickersResponse, error) { +func (*UnimplementedGoCryptoTraderServer) GetTickers(context.Context, *GetTickersRequest) (*GetTickersResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetTickers not implemented") } -func (*UnimplementedGoCryptoTraderServer) GetOrderbook(ctx context.Context, req *GetOrderbookRequest) (*OrderbookResponse, error) { +func (*UnimplementedGoCryptoTraderServer) GetOrderbook(context.Context, *GetOrderbookRequest) (*OrderbookResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetOrderbook not implemented") } -func (*UnimplementedGoCryptoTraderServer) GetOrderbooks(ctx context.Context, req *GetOrderbooksRequest) (*GetOrderbooksResponse, error) { +func (*UnimplementedGoCryptoTraderServer) GetOrderbooks(context.Context, *GetOrderbooksRequest) (*GetOrderbooksResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetOrderbooks not implemented") } -func (*UnimplementedGoCryptoTraderServer) GetAccountInfo(ctx context.Context, req *GetAccountInfoRequest) (*GetAccountInfoResponse, error) { +func (*UnimplementedGoCryptoTraderServer) GetAccountInfo(context.Context, *GetAccountInfoRequest) (*GetAccountInfoResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetAccountInfo not implemented") } -func (*UnimplementedGoCryptoTraderServer) GetAccountInfoStream(req *GetAccountInfoRequest, srv GoCryptoTrader_GetAccountInfoStreamServer) error { +func (*UnimplementedGoCryptoTraderServer) GetAccountInfoStream(*GetAccountInfoRequest, GoCryptoTrader_GetAccountInfoStreamServer) error { return status.Errorf(codes.Unimplemented, "method GetAccountInfoStream not implemented") } -func (*UnimplementedGoCryptoTraderServer) GetConfig(ctx context.Context, req *GetConfigRequest) (*GetConfigResponse, error) { +func (*UnimplementedGoCryptoTraderServer) GetConfig(context.Context, *GetConfigRequest) (*GetConfigResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetConfig not implemented") } -func (*UnimplementedGoCryptoTraderServer) GetPortfolio(ctx context.Context, req *GetPortfolioRequest) (*GetPortfolioResponse, error) { +func (*UnimplementedGoCryptoTraderServer) GetPortfolio(context.Context, *GetPortfolioRequest) (*GetPortfolioResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetPortfolio not implemented") } -func (*UnimplementedGoCryptoTraderServer) GetPortfolioSummary(ctx context.Context, req *GetPortfolioSummaryRequest) (*GetPortfolioSummaryResponse, error) { +func (*UnimplementedGoCryptoTraderServer) GetPortfolioSummary(context.Context, *GetPortfolioSummaryRequest) (*GetPortfolioSummaryResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetPortfolioSummary not implemented") } -func (*UnimplementedGoCryptoTraderServer) AddPortfolioAddress(ctx context.Context, req *AddPortfolioAddressRequest) (*AddPortfolioAddressResponse, error) { +func (*UnimplementedGoCryptoTraderServer) AddPortfolioAddress(context.Context, *AddPortfolioAddressRequest) (*AddPortfolioAddressResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method AddPortfolioAddress not implemented") } -func (*UnimplementedGoCryptoTraderServer) RemovePortfolioAddress(ctx context.Context, req *RemovePortfolioAddressRequest) (*RemovePortfolioAddressResponse, error) { +func (*UnimplementedGoCryptoTraderServer) RemovePortfolioAddress(context.Context, *RemovePortfolioAddressRequest) (*RemovePortfolioAddressResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method RemovePortfolioAddress not implemented") } -func (*UnimplementedGoCryptoTraderServer) GetForexProviders(ctx context.Context, req *GetForexProvidersRequest) (*GetForexProvidersResponse, error) { +func (*UnimplementedGoCryptoTraderServer) GetForexProviders(context.Context, *GetForexProvidersRequest) (*GetForexProvidersResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetForexProviders not implemented") } -func (*UnimplementedGoCryptoTraderServer) GetForexRates(ctx context.Context, req *GetForexRatesRequest) (*GetForexRatesResponse, error) { +func (*UnimplementedGoCryptoTraderServer) GetForexRates(context.Context, *GetForexRatesRequest) (*GetForexRatesResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetForexRates not implemented") } -func (*UnimplementedGoCryptoTraderServer) GetOrders(ctx context.Context, req *GetOrdersRequest) (*GetOrdersResponse, error) { +func (*UnimplementedGoCryptoTraderServer) GetOrders(context.Context, *GetOrdersRequest) (*GetOrdersResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetOrders not implemented") } -func (*UnimplementedGoCryptoTraderServer) GetOrder(ctx context.Context, req *GetOrderRequest) (*OrderDetails, error) { +func (*UnimplementedGoCryptoTraderServer) GetOrder(context.Context, *GetOrderRequest) (*OrderDetails, error) { return nil, status.Errorf(codes.Unimplemented, "method GetOrder not implemented") } -func (*UnimplementedGoCryptoTraderServer) SubmitOrder(ctx context.Context, req *SubmitOrderRequest) (*SubmitOrderResponse, error) { +func (*UnimplementedGoCryptoTraderServer) SubmitOrder(context.Context, *SubmitOrderRequest) (*SubmitOrderResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method SubmitOrder not implemented") } -func (*UnimplementedGoCryptoTraderServer) SimulateOrder(ctx context.Context, req *SimulateOrderRequest) (*SimulateOrderResponse, error) { +func (*UnimplementedGoCryptoTraderServer) SimulateOrder(context.Context, *SimulateOrderRequest) (*SimulateOrderResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method SimulateOrder not implemented") } -func (*UnimplementedGoCryptoTraderServer) WhaleBomb(ctx context.Context, req *WhaleBombRequest) (*SimulateOrderResponse, error) { +func (*UnimplementedGoCryptoTraderServer) WhaleBomb(context.Context, *WhaleBombRequest) (*SimulateOrderResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method WhaleBomb not implemented") } -func (*UnimplementedGoCryptoTraderServer) CancelOrder(ctx context.Context, req *CancelOrderRequest) (*CancelOrderResponse, error) { +func (*UnimplementedGoCryptoTraderServer) CancelOrder(context.Context, *CancelOrderRequest) (*CancelOrderResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method CancelOrder not implemented") } -func (*UnimplementedGoCryptoTraderServer) CancelAllOrders(ctx context.Context, req *CancelAllOrdersRequest) (*CancelAllOrdersResponse, error) { +func (*UnimplementedGoCryptoTraderServer) CancelAllOrders(context.Context, *CancelAllOrdersRequest) (*CancelAllOrdersResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method CancelAllOrders not implemented") } -func (*UnimplementedGoCryptoTraderServer) GetEvents(ctx context.Context, req *GetEventsRequest) (*GetEventsResponse, error) { +func (*UnimplementedGoCryptoTraderServer) GetEvents(context.Context, *GetEventsRequest) (*GetEventsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetEvents not implemented") } -func (*UnimplementedGoCryptoTraderServer) AddEvent(ctx context.Context, req *AddEventRequest) (*AddEventResponse, error) { +func (*UnimplementedGoCryptoTraderServer) AddEvent(context.Context, *AddEventRequest) (*AddEventResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method AddEvent not implemented") } -func (*UnimplementedGoCryptoTraderServer) RemoveEvent(ctx context.Context, req *RemoveEventRequest) (*RemoveEventResponse, error) { +func (*UnimplementedGoCryptoTraderServer) RemoveEvent(context.Context, *RemoveEventRequest) (*RemoveEventResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method RemoveEvent not implemented") } -func (*UnimplementedGoCryptoTraderServer) GetCryptocurrencyDepositAddresses(ctx context.Context, req *GetCryptocurrencyDepositAddressesRequest) (*GetCryptocurrencyDepositAddressesResponse, error) { +func (*UnimplementedGoCryptoTraderServer) GetCryptocurrencyDepositAddresses(context.Context, *GetCryptocurrencyDepositAddressesRequest) (*GetCryptocurrencyDepositAddressesResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetCryptocurrencyDepositAddresses not implemented") } -func (*UnimplementedGoCryptoTraderServer) GetCryptocurrencyDepositAddress(ctx context.Context, req *GetCryptocurrencyDepositAddressRequest) (*GetCryptocurrencyDepositAddressResponse, error) { +func (*UnimplementedGoCryptoTraderServer) GetCryptocurrencyDepositAddress(context.Context, *GetCryptocurrencyDepositAddressRequest) (*GetCryptocurrencyDepositAddressResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetCryptocurrencyDepositAddress not implemented") } -func (*UnimplementedGoCryptoTraderServer) WithdrawFiatFunds(ctx context.Context, req *WithdrawFiatRequest) (*WithdrawResponse, error) { +func (*UnimplementedGoCryptoTraderServer) WithdrawFiatFunds(context.Context, *WithdrawFiatRequest) (*WithdrawResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method WithdrawFiatFunds not implemented") } -func (*UnimplementedGoCryptoTraderServer) WithdrawCryptocurrencyFunds(ctx context.Context, req *WithdrawCryptoRequest) (*WithdrawResponse, error) { +func (*UnimplementedGoCryptoTraderServer) WithdrawCryptocurrencyFunds(context.Context, *WithdrawCryptoRequest) (*WithdrawResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method WithdrawCryptocurrencyFunds not implemented") } -func (*UnimplementedGoCryptoTraderServer) WithdrawalEventByID(ctx context.Context, req *WithdrawalEventByIDRequest) (*WithdrawalEventByIDResponse, error) { +func (*UnimplementedGoCryptoTraderServer) WithdrawalEventByID(context.Context, *WithdrawalEventByIDRequest) (*WithdrawalEventByIDResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method WithdrawalEventByID not implemented") } -func (*UnimplementedGoCryptoTraderServer) WithdrawalEventsByExchange(ctx context.Context, req *WithdrawalEventsByExchangeRequest) (*WithdrawalEventsByExchangeResponse, error) { +func (*UnimplementedGoCryptoTraderServer) WithdrawalEventsByExchange(context.Context, *WithdrawalEventsByExchangeRequest) (*WithdrawalEventsByExchangeResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method WithdrawalEventsByExchange not implemented") } -func (*UnimplementedGoCryptoTraderServer) WithdrawalEventsByDate(ctx context.Context, req *WithdrawalEventsByDateRequest) (*WithdrawalEventsByExchangeResponse, error) { +func (*UnimplementedGoCryptoTraderServer) WithdrawalEventsByDate(context.Context, *WithdrawalEventsByDateRequest) (*WithdrawalEventsByExchangeResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method WithdrawalEventsByDate not implemented") } -func (*UnimplementedGoCryptoTraderServer) GetLoggerDetails(ctx context.Context, req *GetLoggerDetailsRequest) (*GetLoggerDetailsResponse, error) { +func (*UnimplementedGoCryptoTraderServer) GetLoggerDetails(context.Context, *GetLoggerDetailsRequest) (*GetLoggerDetailsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetLoggerDetails not implemented") } -func (*UnimplementedGoCryptoTraderServer) SetLoggerDetails(ctx context.Context, req *SetLoggerDetailsRequest) (*GetLoggerDetailsResponse, error) { +func (*UnimplementedGoCryptoTraderServer) SetLoggerDetails(context.Context, *SetLoggerDetailsRequest) (*GetLoggerDetailsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method SetLoggerDetails not implemented") } -func (*UnimplementedGoCryptoTraderServer) GetExchangePairs(ctx context.Context, req *GetExchangePairsRequest) (*GetExchangePairsResponse, error) { +func (*UnimplementedGoCryptoTraderServer) GetExchangePairs(context.Context, *GetExchangePairsRequest) (*GetExchangePairsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetExchangePairs not implemented") } -func (*UnimplementedGoCryptoTraderServer) EnableExchangePair(ctx context.Context, req *ExchangePairRequest) (*GenericExchangeNameResponse, error) { +func (*UnimplementedGoCryptoTraderServer) EnableExchangePair(context.Context, *ExchangePairRequest) (*GenericExchangeNameResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method EnableExchangePair not implemented") } -func (*UnimplementedGoCryptoTraderServer) DisableExchangePair(ctx context.Context, req *ExchangePairRequest) (*GenericExchangeNameResponse, error) { +func (*UnimplementedGoCryptoTraderServer) DisableExchangePair(context.Context, *ExchangePairRequest) (*GenericExchangeNameResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method DisableExchangePair not implemented") } -func (*UnimplementedGoCryptoTraderServer) GetOrderbookStream(req *GetOrderbookStreamRequest, srv GoCryptoTrader_GetOrderbookStreamServer) error { +func (*UnimplementedGoCryptoTraderServer) GetOrderbookStream(*GetOrderbookStreamRequest, GoCryptoTrader_GetOrderbookStreamServer) error { return status.Errorf(codes.Unimplemented, "method GetOrderbookStream not implemented") } -func (*UnimplementedGoCryptoTraderServer) GetExchangeOrderbookStream(req *GetExchangeOrderbookStreamRequest, srv GoCryptoTrader_GetExchangeOrderbookStreamServer) error { +func (*UnimplementedGoCryptoTraderServer) GetExchangeOrderbookStream(*GetExchangeOrderbookStreamRequest, GoCryptoTrader_GetExchangeOrderbookStreamServer) error { return status.Errorf(codes.Unimplemented, "method GetExchangeOrderbookStream not implemented") } -func (*UnimplementedGoCryptoTraderServer) GetTickerStream(req *GetTickerStreamRequest, srv GoCryptoTrader_GetTickerStreamServer) error { +func (*UnimplementedGoCryptoTraderServer) GetTickerStream(*GetTickerStreamRequest, GoCryptoTrader_GetTickerStreamServer) error { return status.Errorf(codes.Unimplemented, "method GetTickerStream not implemented") } -func (*UnimplementedGoCryptoTraderServer) GetExchangeTickerStream(req *GetExchangeTickerStreamRequest, srv GoCryptoTrader_GetExchangeTickerStreamServer) error { +func (*UnimplementedGoCryptoTraderServer) GetExchangeTickerStream(*GetExchangeTickerStreamRequest, GoCryptoTrader_GetExchangeTickerStreamServer) error { return status.Errorf(codes.Unimplemented, "method GetExchangeTickerStream not implemented") } -func (*UnimplementedGoCryptoTraderServer) GetAuditEvent(ctx context.Context, req *GetAuditEventRequest) (*GetAuditEventResponse, error) { +func (*UnimplementedGoCryptoTraderServer) GetAuditEvent(context.Context, *GetAuditEventRequest) (*GetAuditEventResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetAuditEvent not implemented") } -func (*UnimplementedGoCryptoTraderServer) GCTScriptExecute(ctx context.Context, req *GCTScriptExecuteRequest) (*GCTScriptGenericResponse, error) { +func (*UnimplementedGoCryptoTraderServer) GCTScriptExecute(context.Context, *GCTScriptExecuteRequest) (*GCTScriptGenericResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GCTScriptExecute not implemented") } -func (*UnimplementedGoCryptoTraderServer) GCTScriptUpload(ctx context.Context, req *GCTScriptUploadRequest) (*GCTScriptGenericResponse, error) { +func (*UnimplementedGoCryptoTraderServer) GCTScriptUpload(context.Context, *GCTScriptUploadRequest) (*GCTScriptGenericResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GCTScriptUpload not implemented") } -func (*UnimplementedGoCryptoTraderServer) GCTScriptReadScript(ctx context.Context, req *GCTScriptReadScriptRequest) (*GCTScriptQueryResponse, error) { +func (*UnimplementedGoCryptoTraderServer) GCTScriptReadScript(context.Context, *GCTScriptReadScriptRequest) (*GCTScriptQueryResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GCTScriptReadScript not implemented") } -func (*UnimplementedGoCryptoTraderServer) GCTScriptStatus(ctx context.Context, req *GCTScriptStatusRequest) (*GCTScriptStatusResponse, error) { +func (*UnimplementedGoCryptoTraderServer) GCTScriptStatus(context.Context, *GCTScriptStatusRequest) (*GCTScriptStatusResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GCTScriptStatus not implemented") } -func (*UnimplementedGoCryptoTraderServer) GCTScriptQuery(ctx context.Context, req *GCTScriptQueryRequest) (*GCTScriptQueryResponse, error) { +func (*UnimplementedGoCryptoTraderServer) GCTScriptQuery(context.Context, *GCTScriptQueryRequest) (*GCTScriptQueryResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GCTScriptQuery not implemented") } -func (*UnimplementedGoCryptoTraderServer) GCTScriptStop(ctx context.Context, req *GCTScriptStopRequest) (*GCTScriptGenericResponse, error) { +func (*UnimplementedGoCryptoTraderServer) GCTScriptStop(context.Context, *GCTScriptStopRequest) (*GCTScriptGenericResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GCTScriptStop not implemented") } -func (*UnimplementedGoCryptoTraderServer) GCTScriptStopAll(ctx context.Context, req *GCTScriptStopAllRequest) (*GCTScriptGenericResponse, error) { +func (*UnimplementedGoCryptoTraderServer) GCTScriptStopAll(context.Context, *GCTScriptStopAllRequest) (*GCTScriptGenericResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GCTScriptStopAll not implemented") } -func (*UnimplementedGoCryptoTraderServer) GCTScriptListAll(ctx context.Context, req *GCTScriptListAllRequest) (*GCTScriptStatusResponse, error) { +func (*UnimplementedGoCryptoTraderServer) GCTScriptListAll(context.Context, *GCTScriptListAllRequest) (*GCTScriptStatusResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GCTScriptListAll not implemented") } -func (*UnimplementedGoCryptoTraderServer) GCTScriptAutoLoadToggle(ctx context.Context, req *GCTScriptAutoLoadRequest) (*GCTScriptGenericResponse, error) { +func (*UnimplementedGoCryptoTraderServer) GCTScriptAutoLoadToggle(context.Context, *GCTScriptAutoLoadRequest) (*GCTScriptGenericResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GCTScriptAutoLoadToggle not implemented") } -func (*UnimplementedGoCryptoTraderServer) GetHistoricCandles(ctx context.Context, req *GetHistoricCandlesRequest) (*GetHistoricCandlesResponse, error) { +func (*UnimplementedGoCryptoTraderServer) GetHistoricCandles(context.Context, *GetHistoricCandlesRequest) (*GetHistoricCandlesResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetHistoricCandles not implemented") } diff --git a/gctrpc/rpc.pb.gw.go b/gctrpc/rpc.pb.gw.go index 0d30951f..97f3615a 100644 --- a/gctrpc/rpc.pb.gw.go +++ b/gctrpc/rpc.pb.gw.go @@ -91,7 +91,10 @@ func local_request_GoCryptoTrader_EnableSubsystem_0(ctx context.Context, marshal var protoReq GenericSubsystemRequest var metadata runtime.ServerMetadata - if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_GoCryptoTrader_EnableSubsystem_0); err != nil { + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_GoCryptoTrader_EnableSubsystem_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -124,7 +127,10 @@ func local_request_GoCryptoTrader_DisableSubsystem_0(ctx context.Context, marsha var protoReq GenericSubsystemRequest var metadata runtime.ServerMetadata - if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_GoCryptoTrader_DisableSubsystem_0); err != nil { + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_GoCryptoTrader_DisableSubsystem_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -193,7 +199,10 @@ func local_request_GoCryptoTrader_GetExchanges_0(ctx context.Context, marshaler var protoReq GetExchangesRequest var metadata runtime.ServerMetadata - if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_GoCryptoTrader_GetExchanges_0); err != nil { + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_GoCryptoTrader_GetExchanges_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -260,7 +269,10 @@ func local_request_GoCryptoTrader_GetExchangeInfo_0(ctx context.Context, marshal var protoReq GenericExchangeNameRequest var metadata runtime.ServerMetadata - if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_GoCryptoTrader_GetExchangeInfo_0); err != nil { + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_GoCryptoTrader_GetExchangeInfo_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -293,7 +305,10 @@ func local_request_GoCryptoTrader_GetExchangeOTPCode_0(ctx context.Context, mars var protoReq GenericExchangeNameRequest var metadata runtime.ServerMetadata - if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_GoCryptoTrader_GetExchangeOTPCode_0); err != nil { + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_GoCryptoTrader_GetExchangeOTPCode_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -482,7 +497,10 @@ func local_request_GoCryptoTrader_GetAccountInfo_0(ctx context.Context, marshale var protoReq GetAccountInfoRequest var metadata runtime.ServerMetadata - if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_GoCryptoTrader_GetAccountInfo_0); err != nil { + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_GoCryptoTrader_GetAccountInfo_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -1263,7 +1281,10 @@ func local_request_GoCryptoTrader_GetLoggerDetails_0(ctx context.Context, marsha var protoReq GetLoggerDetailsRequest var metadata runtime.ServerMetadata - if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_GoCryptoTrader_GetLoggerDetails_0); err != nil { + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_GoCryptoTrader_GetLoggerDetails_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -1544,7 +1565,10 @@ func local_request_GoCryptoTrader_GetAuditEvent_0(ctx context.Context, marshaler var protoReq GetAuditEventRequest var metadata runtime.ServerMetadata - if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_GoCryptoTrader_GetAuditEvent_0); err != nil { + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_GoCryptoTrader_GetAuditEvent_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -1577,7 +1601,10 @@ func local_request_GoCryptoTrader_GCTScriptExecute_0(ctx context.Context, marsha var protoReq GCTScriptExecuteRequest var metadata runtime.ServerMetadata - if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_GoCryptoTrader_GCTScriptExecute_0); err != nil { + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_GoCryptoTrader_GCTScriptExecute_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -1696,7 +1723,10 @@ func local_request_GoCryptoTrader_GCTScriptQuery_0(ctx context.Context, marshale var protoReq GCTScriptQueryRequest var metadata runtime.ServerMetadata - if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_GoCryptoTrader_GCTScriptQuery_0); err != nil { + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_GoCryptoTrader_GCTScriptQuery_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -1865,7 +1895,10 @@ func local_request_GoCryptoTrader_GetHistoricCandles_0(ctx context.Context, mars var protoReq GetHistoricCandlesRequest var metadata runtime.ServerMetadata - if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_GoCryptoTrader_GetHistoricCandles_0); err != nil { + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_GoCryptoTrader_GetHistoricCandles_0); err != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } diff --git a/gctrpc/rpc.proto b/gctrpc/rpc.proto index 43df04b7..b5e0e3c7 100644 --- a/gctrpc/rpc.proto +++ b/gctrpc/rpc.proto @@ -606,10 +606,16 @@ message GetHistoricCandlesRequest { int64 start = 4; int64 end = 5; int64 time_interval = 6; + bool ex_request = 7; } message GetHistoricCandlesResponse { - repeated Candle candle =1; + string exchange = 1; + CurrencyPair pair = 2; + int64 start = 3; + int64 end = 4; + string interval = 6; + repeated Candle candle = 5; } message Candle { diff --git a/gctrpc/rpc.swagger.json b/gctrpc/rpc.swagger.json index 46681db7..057a7351 100644 --- a/gctrpc/rpc.swagger.json +++ b/gctrpc/rpc.swagger.json @@ -13,7 +13,7 @@ "paths": { "/v1/addevent": { "post": { - "operationId": "AddEvent", + "operationId": "GoCryptoTrader_AddEvent", "responses": { "200": { "description": "A successful response.", @@ -45,7 +45,7 @@ }, "/v1/addportfolioaddress": { "post": { - "operationId": "AddPortfolioAddress", + "operationId": "GoCryptoTrader_AddPortfolioAddress", "responses": { "200": { "description": "A successful response.", @@ -77,7 +77,7 @@ }, "/v1/cancelallorders": { "post": { - "operationId": "CancelAllOrders", + "operationId": "GoCryptoTrader_CancelAllOrders", "responses": { "200": { "description": "A successful response.", @@ -109,7 +109,7 @@ }, "/v1/cancelorder": { "post": { - "operationId": "CancelOrder", + "operationId": "GoCryptoTrader_CancelOrder", "responses": { "200": { "description": "A successful response.", @@ -141,7 +141,7 @@ }, "/v1/disableexchange": { "post": { - "operationId": "DisableExchange", + "operationId": "GoCryptoTrader_DisableExchange", "responses": { "200": { "description": "A successful response.", @@ -173,7 +173,7 @@ }, "/v1/disableexchangepair": { "post": { - "operationId": "DisableExchangePair", + "operationId": "GoCryptoTrader_DisableExchangePair", "responses": { "200": { "description": "A successful response.", @@ -205,7 +205,7 @@ }, "/v1/disablesubsystem": { "get": { - "operationId": "DisableSubsystem", + "operationId": "GoCryptoTrader_DisableSubsystem", "responses": { "200": { "description": "A successful response.", @@ -235,7 +235,7 @@ }, "/v1/enableexchange": { "post": { - "operationId": "EnableExchange", + "operationId": "GoCryptoTrader_EnableExchange", "responses": { "200": { "description": "A successful response.", @@ -267,7 +267,7 @@ }, "/v1/enableexchangepair": { "post": { - "operationId": "EnableExchangePair", + "operationId": "GoCryptoTrader_EnableExchangePair", "responses": { "200": { "description": "A successful response.", @@ -299,7 +299,7 @@ }, "/v1/enablesubsystem": { "get": { - "operationId": "EnableSubsystem", + "operationId": "GoCryptoTrader_EnableSubsystem", "responses": { "200": { "description": "A successful response.", @@ -329,7 +329,7 @@ }, "/v1/gctscript/autoload": { "post": { - "operationId": "GCTScriptAutoLoadToggle", + "operationId": "GoCryptoTrader_GCTScriptAutoLoadToggle", "responses": { "200": { "description": "A successful response.", @@ -361,7 +361,7 @@ }, "/v1/gctscript/execute": { "get": { - "operationId": "GCTScriptExecute", + "operationId": "GoCryptoTrader_GCTScriptExecute", "responses": { "200": { "description": "A successful response.", @@ -409,7 +409,7 @@ }, "/v1/gctscript/query": { "get": { - "operationId": "GCTScriptQuery", + "operationId": "GoCryptoTrader_GCTScriptQuery", "responses": { "200": { "description": "A successful response.", @@ -457,7 +457,7 @@ }, "/v1/gctscript/read": { "post": { - "operationId": "GCTScriptReadScript", + "operationId": "GoCryptoTrader_GCTScriptReadScript", "responses": { "200": { "description": "A successful response.", @@ -489,7 +489,7 @@ }, "/v1/gctscript/status": { "get": { - "operationId": "GCTScriptStatus", + "operationId": "GoCryptoTrader_GCTScriptStatus", "responses": { "200": { "description": "A successful response.", @@ -511,7 +511,7 @@ }, "/v1/gctscript/stop": { "post": { - "operationId": "GCTScriptListAll", + "operationId": "GoCryptoTrader_GCTScriptListAll", "responses": { "200": { "description": "A successful response.", @@ -543,7 +543,7 @@ }, "/v1/gctscript/upload": { "post": { - "operationId": "GCTScriptUpload", + "operationId": "GoCryptoTrader_GCTScriptUpload", "responses": { "200": { "description": "A successful response.", @@ -575,7 +575,7 @@ }, "/v1/getaccountinfo": { "get": { - "operationId": "GetAccountInfo", + "operationId": "GoCryptoTrader_GetAccountInfo", "responses": { "200": { "description": "A successful response.", @@ -605,7 +605,7 @@ }, "/v1/getaccountinfostream": { "get": { - "operationId": "GetAccountInfoStream", + "operationId": "GoCryptoTrader_GetAccountInfoStream", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -644,7 +644,7 @@ }, "/v1/getauditevent": { "get": { - "operationId": "GetAuditEvent", + "operationId": "GoCryptoTrader_GetAuditEvent", "responses": { "200": { "description": "A successful response.", @@ -700,7 +700,7 @@ }, "/v1/getcommunicationrelayers": { "get": { - "operationId": "GetCommunicationRelayers", + "operationId": "GoCryptoTrader_GetCommunicationRelayers", "responses": { "200": { "description": "A successful response.", @@ -722,7 +722,7 @@ }, "/v1/getconfig": { "get": { - "operationId": "GetConfig", + "operationId": "GoCryptoTrader_GetConfig", "responses": { "200": { "description": "A successful response.", @@ -744,7 +744,7 @@ }, "/v1/getcryptodepositaddress": { "post": { - "operationId": "GetCryptocurrencyDepositAddress", + "operationId": "GoCryptoTrader_GetCryptocurrencyDepositAddress", "responses": { "200": { "description": "A successful response.", @@ -776,7 +776,7 @@ }, "/v1/getcryptodepositaddresses": { "post": { - "operationId": "GetCryptocurrencyDepositAddresses", + "operationId": "GoCryptoTrader_GetCryptocurrencyDepositAddresses", "responses": { "200": { "description": "A successful response.", @@ -808,7 +808,7 @@ }, "/v1/getevents": { "get": { - "operationId": "GetEvents", + "operationId": "GoCryptoTrader_GetEvents", "responses": { "200": { "description": "A successful response.", @@ -830,7 +830,7 @@ }, "/v1/getexchangeinfo": { "get": { - "operationId": "GetExchangeInfo", + "operationId": "GoCryptoTrader_GetExchangeInfo", "responses": { "200": { "description": "A successful response.", @@ -860,7 +860,7 @@ }, "/v1/getexchangeorderbookstream": { "get": { - "operationId": "GetExchangeOrderbookStream", + "operationId": "GoCryptoTrader_GetExchangeOrderbookStream", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -899,7 +899,7 @@ }, "/v1/getexchangeotp": { "get": { - "operationId": "GetExchangeOTPCode", + "operationId": "GoCryptoTrader_GetExchangeOTPCode", "responses": { "200": { "description": "A successful response.", @@ -929,7 +929,7 @@ }, "/v1/getexchangeotps": { "get": { - "operationId": "GetExchangeOTPCodes", + "operationId": "GoCryptoTrader_GetExchangeOTPCodes", "responses": { "200": { "description": "A successful response.", @@ -951,7 +951,7 @@ }, "/v1/getexchangepairs": { "post": { - "operationId": "GetExchangePairs", + "operationId": "GoCryptoTrader_GetExchangePairs", "responses": { "200": { "description": "A successful response.", @@ -983,7 +983,7 @@ }, "/v1/getexchanges": { "get": { - "operationId": "GetExchanges", + "operationId": "GoCryptoTrader_GetExchanges", "responses": { "200": { "description": "A successful response.", @@ -1014,7 +1014,7 @@ }, "/v1/getexchangetickerstream": { "get": { - "operationId": "GetExchangeTickerStream", + "operationId": "GoCryptoTrader_GetExchangeTickerStream", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -1053,7 +1053,7 @@ }, "/v1/getforexproviders": { "get": { - "operationId": "GetForexProviders", + "operationId": "GoCryptoTrader_GetForexProviders", "responses": { "200": { "description": "A successful response.", @@ -1075,7 +1075,7 @@ }, "/v1/getforexrates": { "get": { - "operationId": "GetForexRates", + "operationId": "GoCryptoTrader_GetForexRates", "responses": { "200": { "description": "A successful response.", @@ -1097,7 +1097,7 @@ }, "/v1/gethistoriccandles": { "get": { - "operationId": "GetHistoricCandles", + "operationId": "GoCryptoTrader_GetHistoricCandles", "responses": { "200": { "description": "A successful response.", @@ -1163,6 +1163,13 @@ "required": false, "type": "string", "format": "int64" + }, + { + "name": "ex_request", + "in": "query", + "required": false, + "type": "boolean", + "format": "boolean" } ], "tags": [ @@ -1172,7 +1179,7 @@ }, "/v1/getinfo": { "get": { - "operationId": "GetInfo", + "operationId": "GoCryptoTrader_GetInfo", "responses": { "200": { "description": "A successful response.", @@ -1194,7 +1201,7 @@ }, "/v1/getloggerdetails": { "get": { - "operationId": "GetLoggerDetails", + "operationId": "GoCryptoTrader_GetLoggerDetails", "responses": { "200": { "description": "A successful response.", @@ -1224,7 +1231,7 @@ }, "/v1/getorder": { "post": { - "operationId": "GetOrder", + "operationId": "GoCryptoTrader_GetOrder", "responses": { "200": { "description": "A successful response.", @@ -1256,7 +1263,7 @@ }, "/v1/getorderbook": { "post": { - "operationId": "GetOrderbook", + "operationId": "GoCryptoTrader_GetOrderbook", "responses": { "200": { "description": "A successful response.", @@ -1288,7 +1295,7 @@ }, "/v1/getorderbooks": { "get": { - "operationId": "GetOrderbooks", + "operationId": "GoCryptoTrader_GetOrderbooks", "responses": { "200": { "description": "A successful response.", @@ -1310,7 +1317,7 @@ }, "/v1/getorderbookstream": { "get": { - "operationId": "GetOrderbookStream", + "operationId": "GoCryptoTrader_GetOrderbookStream", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -1373,7 +1380,7 @@ }, "/v1/getorders": { "post": { - "operationId": "GetOrders", + "operationId": "GoCryptoTrader_GetOrders", "responses": { "200": { "description": "A successful response.", @@ -1405,7 +1412,7 @@ }, "/v1/getportfolio": { "get": { - "operationId": "GetPortfolio", + "operationId": "GoCryptoTrader_GetPortfolio", "responses": { "200": { "description": "A successful response.", @@ -1427,7 +1434,7 @@ }, "/v1/getportfoliosummary": { "get": { - "operationId": "GetPortfolioSummary", + "operationId": "GoCryptoTrader_GetPortfolioSummary", "responses": { "200": { "description": "A successful response.", @@ -1449,7 +1456,7 @@ }, "/v1/getrpcendpoints": { "get": { - "operationId": "GetRPCEndpoints", + "operationId": "GoCryptoTrader_GetRPCEndpoints", "responses": { "200": { "description": "A successful response.", @@ -1471,7 +1478,7 @@ }, "/v1/getsubsystems": { "get": { - "operationId": "GetSubsystems", + "operationId": "GoCryptoTrader_GetSubsystems", "responses": { "200": { "description": "A successful response.", @@ -1493,7 +1500,7 @@ }, "/v1/getticker": { "post": { - "operationId": "GetTicker", + "operationId": "GoCryptoTrader_GetTicker", "responses": { "200": { "description": "A successful response.", @@ -1525,7 +1532,7 @@ }, "/v1/gettickers": { "get": { - "operationId": "GetTickers", + "operationId": "GoCryptoTrader_GetTickers", "responses": { "200": { "description": "A successful response.", @@ -1547,7 +1554,7 @@ }, "/v1/gettickerstream": { "get": { - "operationId": "GetTickerStream", + "operationId": "GoCryptoTrader_GetTickerStream", "responses": { "200": { "description": "A successful response.(streaming responses)", @@ -1610,7 +1617,7 @@ }, "/v1/removeevent": { "post": { - "operationId": "RemoveEvent", + "operationId": "GoCryptoTrader_RemoveEvent", "responses": { "200": { "description": "A successful response.", @@ -1642,7 +1649,7 @@ }, "/v1/removeportfolioaddress": { "post": { - "operationId": "RemovePortfolioAddress", + "operationId": "GoCryptoTrader_RemovePortfolioAddress", "responses": { "200": { "description": "A successful response.", @@ -1674,7 +1681,7 @@ }, "/v1/setloggerdetails": { "post": { - "operationId": "SetLoggerDetails", + "operationId": "GoCryptoTrader_SetLoggerDetails", "responses": { "200": { "description": "A successful response.", @@ -1706,7 +1713,7 @@ }, "/v1/simulateorder": { "post": { - "operationId": "SimulateOrder", + "operationId": "GoCryptoTrader_SimulateOrder", "responses": { "200": { "description": "A successful response.", @@ -1738,7 +1745,7 @@ }, "/v1/submitorder": { "post": { - "operationId": "SubmitOrder", + "operationId": "GoCryptoTrader_SubmitOrder", "responses": { "200": { "description": "A successful response.", @@ -1770,7 +1777,7 @@ }, "/v1/whalebomb": { "post": { - "operationId": "WhaleBomb", + "operationId": "GoCryptoTrader_WhaleBomb", "responses": { "200": { "description": "A successful response.", @@ -1802,7 +1809,7 @@ }, "/v1/withdrawaleventbydate": { "post": { - "operationId": "WithdrawalEventsByDate", + "operationId": "GoCryptoTrader_WithdrawalEventsByDate", "responses": { "200": { "description": "A successful response.", @@ -1834,7 +1841,7 @@ }, "/v1/withdrawaleventbyid": { "post": { - "operationId": "WithdrawalEventsByExchange", + "operationId": "GoCryptoTrader_WithdrawalEventsByExchange", "responses": { "200": { "description": "A successful response.", @@ -1866,7 +1873,7 @@ }, "/v1/withdrawfiatfunds": { "post": { - "operationId": "WithdrawFiatFunds", + "operationId": "GoCryptoTrader_WithdrawFiatFunds", "responses": { "200": { "description": "A successful response.", @@ -1898,7 +1905,7 @@ }, "/v1/withdrawithdrawcryptofundswfiatfunds": { "post": { - "operationId": "WithdrawCryptocurrencyFunds", + "operationId": "GoCryptoTrader_WithdrawCryptocurrencyFunds", "responses": { "200": { "description": "A successful response.", @@ -2653,6 +2660,23 @@ "gctrpcGetHistoricCandlesResponse": { "type": "object", "properties": { + "exchange": { + "type": "string" + }, + "pair": { + "$ref": "#/definitions/gctrpcCurrencyPair" + }, + "start": { + "type": "string", + "format": "int64" + }, + "end": { + "type": "string", + "format": "int64" + }, + "interval": { + "type": "string" + }, "candle": { "type": "array", "items": { diff --git a/gctscript/modules/gct/exchange.go b/gctscript/modules/gct/exchange.go index 31f4af9f..5b2d5d4d 100644 --- a/gctscript/modules/gct/exchange.go +++ b/gctscript/modules/gct/exchange.go @@ -9,6 +9,7 @@ import ( "github.com/thrasher-corp/gocryptotrader/common" "github.com/thrasher-corp/gocryptotrader/currency" "github.com/thrasher-corp/gocryptotrader/exchanges/asset" + "github.com/thrasher-corp/gocryptotrader/exchanges/kline" "github.com/thrasher-corp/gocryptotrader/exchanges/order" "github.com/thrasher-corp/gocryptotrader/gctscript/modules/ta/indicators" "github.com/thrasher-corp/gocryptotrader/gctscript/wrappers" @@ -552,7 +553,7 @@ func exchangeOHLCV(args ...objects.Object) (objects.Object, error) { pairs := currency.NewPairDelimiter(currencyPair, delimiter) assetType := asset.Item(assetTypeParam) - ret, err := wrappers.GetWrapper().OHLCV(exchangeName, pairs, assetType, startTime, endTime, interval) + ret, err := wrappers.GetWrapper().OHLCV(exchangeName, pairs, assetType, startTime, endTime, kline.Interval(interval)) if err != nil { return nil, err } diff --git a/gctscript/modules/wrapper_types.go b/gctscript/modules/wrapper_types.go index 976c4789..85ae000c 100644 --- a/gctscript/modules/wrapper_types.go +++ b/gctscript/modules/wrapper_types.go @@ -42,7 +42,7 @@ type Exchange interface { DepositAddress(exch string, currencyCode currency.Code) (string, error) WithdrawalFiatFunds(exch, bankAccountID string, request *withdraw.Request) (out string, err error) WithdrawalCryptoFunds(exch string, request *withdraw.Request) (out string, err error) - OHLCV(exch string, pair currency.Pair, item asset.Item, start, end time.Time, interval time.Duration) (kline.Item, error) + OHLCV(exch string, pair currency.Pair, item asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) } // SetModuleWrapper link the wrapper and interface to use for modules diff --git a/gctscript/wrappers/gct/exchange/exchange.go b/gctscript/wrappers/gct/exchange/exchange.go index a3616348..8e8ac49d 100644 --- a/gctscript/wrappers/gct/exchange/exchange.go +++ b/gctscript/wrappers/gct/exchange/exchange.go @@ -212,7 +212,7 @@ func (e Exchange) WithdrawalCryptoFunds(exch string, request *withdraw.Request) } // OHLCV returns open high low close volume candles for requested exchange/pair/asset/start & end time -func (e Exchange) OHLCV(exch string, pair currency.Pair, item asset.Item, start, end time.Time, interval time.Duration) (kline.Item, error) { +func (e Exchange) OHLCV(exch string, pair currency.Pair, item asset.Item, start, end time.Time, interval kline.Interval) (kline.Item, error) { ex, err := e.GetExchange(exch) if err != nil { return kline.Item{}, err diff --git a/gctscript/wrappers/validator/validator.go b/gctscript/wrappers/validator/validator.go index fc941049..c8f63fb8 100644 --- a/gctscript/wrappers/validator/validator.go +++ b/gctscript/wrappers/validator/validator.go @@ -224,7 +224,7 @@ func (w Wrapper) WithdrawalFiatFunds(exch, _ string, _ *withdraw.Request) (out s } // OHLCV returns open high low close volume candles for requested exchange/pair/asset/start & end time -func (w Wrapper) OHLCV(exch string, p currency.Pair, a asset.Item, start, end time.Time, i time.Duration) (kline.Item, error) { +func (w Wrapper) OHLCV(exch string, p currency.Pair, a asset.Item, start, end time.Time, i kline.Interval) (kline.Item, error) { if exch == exchError.String() { return kline.Item{}, errTestFailed } @@ -242,7 +242,7 @@ func (w Wrapper) OHLCV(exch string, p currency.Pair, a asset.Item, start, end ti for x := 1; x < 200; x++ { r := validatorLow + rand.Float64()*(validatorHigh-validatorLow) candle := kline.Candle{ - Time: candles[x-1].Time.Add(-i), + Time: candles[x-1].Time.Add(-i.Duration()), Open: r, High: r, Low: r, diff --git a/go.mod b/go.mod index be536b6c..ab47fee3 100644 --- a/go.mod +++ b/go.mod @@ -29,6 +29,7 @@ require ( golang.org/x/time v0.0.0-20190308202827-9d24e82272b4 google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884 google.golang.org/grpc v1.30.0 + google.golang.org/protobuf v1.23.0 gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect gopkg.in/yaml.v2 v2.2.7 // indirect ) diff --git a/testdata/http_mock/binance/binance.json b/testdata/http_mock/binance/binance.json index 11b6ba0b..1ffe0ce5 100644 --- a/testdata/http_mock/binance/binance.json +++ b/testdata/http_mock/binance/binance.json @@ -4,14 +4,6 @@ "GET": [ { "data": { - "makerCommission": 10, - "takerCommission": 10, - "buyerCommission": 0, - "sellerCommission": 0, - "canTrade": true, - "canWithdraw": true, - "canDeposit": true, - "updateTime": 1517434535027, "accountType": "MARGIN", "balances": [ { @@ -864,9 +856,17 @@ "free": "0.00000000", "locked": "0.00000000" } - ] + ], + "buyerCommission": 0, + "canDeposit": true, + "canTrade": true, + "canWithdraw": true, + "makerCommission": 10, + "sellerCommission": 0, + "takerCommission": 10, + "updateTime": 1517434535027 }, - "queryString": "recvWindow=5000\u0026signature=7cae6f0626a72d9331edf09a1905f16ee424cb0b9b884d09000b490c4142c207\u0026timestamp=1560296073000", + "queryString": "recvWindow=5000\u0026signature=2963efaadca9761f9d9e5ecd286bdbfa8566e9f96a9481de5e7bfce625688cf2\u0026timestamp=1588749358000", "bodyParams": "", "headers": { "X-Mbx-Apikey": [ @@ -882,53 +882,10060 @@ "data": [ { "M": true, - "T": 1586994276346, - "a": 270568031, - "f": 294840793, - "l": 294840793, - "m": false, - "p": "6623.58000000", - "q": "0.00500000" - }, - { - "M": true, - "T": 1586994276916, - "a": 270568032, - "f": 294840794, - "l": 294840794, - "m": false, - "p": "6623.42000000", - "q": "0.00754400" - }, - { - "M": true, - "T": 1586994277011, - "a": 270568033, - "f": 294840795, - "l": 294840795, - "m": false, - "p": "6623.39000000", - "q": "0.00381900" - }, - { - "M": true, - "T": 1586994277150, - "a": 270568034, - "f": 294840796, - "l": 294840796, - "m": false, - "p": "6623.33000000", - "q": "0.00500000" - }, - { - "M": true, - "T": 1586994278251, - "a": 270568035, - "f": 294840797, - "l": 294840797, + "T": 1588749117459, + "a": 284861205, + "f": 310207484, + "l": 310207484, "m": true, - "p": "6622.57000000", - "q": "0.00500000" + "p": "9039.74000000", + "q": "0.17700100" + }, + { + "M": true, + "T": 1588749117459, + "a": 284861206, + "f": 310207485, + "l": 310207485, + "m": true, + "p": "9039.71000000", + "q": "2.34574600" + }, + { + "M": true, + "T": 1588749117474, + "a": 284861207, + "f": 310207486, + "l": 310207486, + "m": false, + "p": "9039.96000000", + "q": "0.17681100" + }, + { + "M": true, + "T": 1588749117474, + "a": 284861208, + "f": 310207487, + "l": 310207487, + "m": false, + "p": "9040.00000000", + "q": "0.02318900" + }, + { + "M": true, + "T": 1588749117507, + "a": 284861209, + "f": 310207488, + "l": 310207488, + "m": true, + "p": "9039.78000000", + "q": "0.06639000" + }, + { + "M": true, + "T": 1588749117507, + "a": 284861210, + "f": 310207489, + "l": 310207489, + "m": true, + "p": "9039.70000000", + "q": "0.00221100" + }, + { + "M": true, + "T": 1588749117507, + "a": 284861211, + "f": 310207490, + "l": 310207490, + "m": true, + "p": "9039.20000000", + "q": "0.11318000" + }, + { + "M": true, + "T": 1588749117568, + "a": 284861212, + "f": 310207491, + "l": 310207491, + "m": false, + "p": "9039.23000000", + "q": "0.00307900" + }, + { + "M": true, + "T": 1588749117615, + "a": 284861213, + "f": 310207492, + "l": 310207492, + "m": true, + "p": "9039.22000000", + "q": "0.17682400" + }, + { + "M": true, + "T": 1588749117615, + "a": 284861214, + "f": 310207493, + "l": 310207493, + "m": true, + "p": "9038.87000000", + "q": "0.09340000" + }, + { + "M": true, + "T": 1588749117615, + "a": 284861215, + "f": 310207494, + "l": 310207494, + "m": true, + "p": "9038.84000000", + "q": "0.00300000" + }, + { + "M": true, + "T": 1588749117615, + "a": 284861216, + "f": 310207495, + "l": 310207495, + "m": true, + "p": "9038.78000000", + "q": "0.09037600" + }, + { + "M": true, + "T": 1588749117615, + "a": 284861217, + "f": 310207496, + "l": 310207496, + "m": true, + "p": "9038.76000000", + "q": "0.09317400" + }, + { + "M": true, + "T": 1588749117685, + "a": 284861218, + "f": 310207497, + "l": 310207497, + "m": false, + "p": "9038.91000000", + "q": "0.05962000" + }, + { + "M": true, + "T": 1588749117691, + "a": 284861219, + "f": 310207498, + "l": 310207498, + "m": true, + "p": "9038.77000000", + "q": "0.06019900" + }, + { + "M": true, + "T": 1588749117731, + "a": 284861220, + "f": 310207499, + "l": 310207499, + "m": true, + "p": "9038.76000000", + "q": "0.06000000" + }, + { + "M": true, + "T": 1588749117786, + "a": 284861221, + "f": 310207500, + "l": 310207500, + "m": false, + "p": "9038.77000000", + "q": "0.00307900" + }, + { + "M": true, + "T": 1588749117821, + "a": 284861222, + "f": 310207501, + "l": 310207501, + "m": true, + "p": "9038.76000000", + "q": "0.02000000" + }, + { + "M": true, + "T": 1588749117928, + "a": 284861223, + "f": 310207502, + "l": 310207502, + "m": false, + "p": "9038.77000000", + "q": "0.02139400" + }, + { + "M": true, + "T": 1588749118015, + "a": 284861224, + "f": 310207503, + "l": 310207503, + "m": true, + "p": "9038.80000000", + "q": "0.06019700" + }, + { + "M": true, + "T": 1588749118019, + "a": 284861225, + "f": 310207504, + "l": 310207504, + "m": false, + "p": "9039.20000000", + "q": "0.00319200" + }, + { + "M": true, + "T": 1588749118128, + "a": 284861226, + "f": 310207505, + "l": 310207505, + "m": false, + "p": "9038.89000000", + "q": "0.01303300" + }, + { + "M": true, + "T": 1588749118341, + "a": 284861227, + "f": 310207506, + "l": 310207506, + "m": true, + "p": "9038.76000000", + "q": "0.06032200" + }, + { + "M": true, + "T": 1588749118447, + "a": 284861228, + "f": 310207507, + "l": 310207507, + "m": true, + "p": "9038.76000000", + "q": "0.78000000" + }, + { + "M": true, + "T": 1588749118447, + "a": 284861229, + "f": 310207508, + "l": 310207508, + "m": true, + "p": "9038.76000000", + "q": "0.40000000" + }, + { + "M": true, + "T": 1588749118628, + "a": 284861230, + "f": 310207509, + "l": 310207509, + "m": true, + "p": "9038.76000000", + "q": "0.00221300" + }, + { + "M": true, + "T": 1588749118629, + "a": 284861231, + "f": 310207510, + "l": 310207510, + "m": true, + "p": "9038.76000000", + "q": "0.00221300" + }, + { + "M": true, + "T": 1588749118661, + "a": 284861232, + "f": 310207511, + "l": 310207511, + "m": true, + "p": "9038.76000000", + "q": "0.06021500" + }, + { + "M": true, + "T": 1588749118728, + "a": 284861233, + "f": 310207512, + "l": 310207512, + "m": true, + "p": "9038.76000000", + "q": "0.00221300" + }, + { + "M": true, + "T": 1588749118735, + "a": 284861234, + "f": 310207513, + "l": 310207513, + "m": true, + "p": "9038.76000000", + "q": "0.00221300" + }, + { + "M": true, + "T": 1588749118973, + "a": 284861235, + "f": 310207514, + "l": 310207514, + "m": true, + "p": "9038.76000000", + "q": "0.06015900" + }, + { + "M": true, + "T": 1588749119287, + "a": 284861236, + "f": 310207515, + "l": 310207515, + "m": true, + "p": "9038.76000000", + "q": "0.06003300" + }, + { + "M": true, + "T": 1588749119296, + "a": 284861237, + "f": 310207516, + "l": 310207516, + "m": true, + "p": "9038.76000000", + "q": "0.05104000" + }, + { + "M": true, + "T": 1588749119391, + "a": 284861238, + "f": 310207517, + "l": 310207517, + "m": true, + "p": "9038.76000000", + "q": "0.13839600" + }, + { + "M": true, + "T": 1588749119611, + "a": 284861239, + "f": 310207518, + "l": 310207518, + "m": true, + "p": "9038.76000000", + "q": "0.06011900" + }, + { + "M": true, + "T": 1588749119633, + "a": 284861240, + "f": 310207519, + "l": 310207519, + "m": false, + "p": "9038.77000000", + "q": "0.00132800" + }, + { + "M": true, + "T": 1588749119932, + "a": 284861241, + "f": 310207520, + "l": 310207520, + "m": true, + "p": "9038.76000000", + "q": "0.06043200" + }, + { + "M": true, + "T": 1588749120021, + "a": 284861242, + "f": 310207521, + "l": 310207521, + "m": true, + "p": "9038.76000000", + "q": "0.15659300" + }, + { + "M": true, + "T": 1588749120258, + "a": 284861243, + "f": 310207522, + "l": 310207522, + "m": true, + "p": "9038.76000000", + "q": "0.06027900" + }, + { + "M": true, + "T": 1588749120485, + "a": 284861244, + "f": 310207523, + "l": 310207523, + "m": false, + "p": "9038.77000000", + "q": "0.24000000" + }, + { + "M": true, + "T": 1588749120583, + "a": 284861245, + "f": 310207524, + "l": 310207524, + "m": true, + "p": "9038.76000000", + "q": "0.06031200" + }, + { + "M": true, + "T": 1588749120737, + "a": 284861246, + "f": 310207525, + "l": 310207525, + "m": false, + "p": "9038.77000000", + "q": "0.00300000" + }, + { + "M": true, + "T": 1588749120903, + "a": 284861247, + "f": 310207526, + "l": 310207526, + "m": true, + "p": "9038.76000000", + "q": "0.06007300" + }, + { + "M": true, + "T": 1588749121221, + "a": 284861248, + "f": 310207527, + "l": 310207527, + "m": true, + "p": "9038.76000000", + "q": "0.06049600" + }, + { + "M": true, + "T": 1588749121610, + "a": 284861249, + "f": 310207528, + "l": 310207528, + "m": true, + "p": "9038.76000000", + "q": "0.06003700" + }, + { + "M": true, + "T": 1588749121777, + "a": 284861250, + "f": 310207529, + "l": 310207529, + "m": true, + "p": "9038.76000000", + "q": "0.06010100" + }, + { + "M": true, + "T": 1588749121863, + "a": 284861251, + "f": 310207530, + "l": 310207530, + "m": true, + "p": "9038.76000000", + "q": "0.06006800" + }, + { + "M": true, + "T": 1588749122186, + "a": 284861252, + "f": 310207531, + "l": 310207531, + "m": true, + "p": "9038.76000000", + "q": "0.06039700" + }, + { + "M": true, + "T": 1588749122237, + "a": 284861253, + "f": 310207532, + "l": 310207532, + "m": true, + "p": "9038.76000000", + "q": "0.05021100" + }, + { + "M": true, + "T": 1588749122516, + "a": 284861254, + "f": 310207533, + "l": 310207533, + "m": true, + "p": "9038.76000000", + "q": "0.06011400" + }, + { + "M": true, + "T": 1588749122830, + "a": 284861255, + "f": 310207534, + "l": 310207534, + "m": true, + "p": "9038.76000000", + "q": "0.06002000" + }, + { + "M": true, + "T": 1588749122886, + "a": 284861256, + "f": 310207535, + "l": 310207535, + "m": true, + "p": "9038.76000000", + "q": "0.01400900" + }, + { + "M": true, + "T": 1588749122964, + "a": 284861257, + "f": 310207536, + "l": 310207536, + "m": true, + "p": "9038.76000000", + "q": "0.15541900" + }, + { + "M": true, + "T": 1588749122990, + "a": 284861258, + "f": 310207537, + "l": 310207537, + "m": true, + "p": "9038.76000000", + "q": "0.14735300" + }, + { + "M": true, + "T": 1588749123163, + "a": 284861259, + "f": 310207538, + "l": 310207538, + "m": true, + "p": "9038.76000000", + "q": "0.06022500" + }, + { + "M": true, + "T": 1588749123248, + "a": 284861260, + "f": 310207539, + "l": 310207539, + "m": false, + "p": "9038.77000000", + "q": "0.02255000" + }, + { + "M": true, + "T": 1588749123498, + "a": 284861261, + "f": 310207540, + "l": 310207540, + "m": true, + "p": "9038.76000000", + "q": "0.06024900" + }, + { + "M": true, + "T": 1588749123831, + "a": 284861262, + "f": 310207541, + "l": 310207541, + "m": true, + "p": "9038.76000000", + "q": "0.06005900" + }, + { + "M": true, + "T": 1588749124170, + "a": 284861263, + "f": 310207542, + "l": 310207542, + "m": true, + "p": "9038.76000000", + "q": "0.06033100" + }, + { + "M": true, + "T": 1588749124175, + "a": 284861264, + "f": 310207543, + "l": 310207543, + "m": false, + "p": "9038.77000000", + "q": "0.02706800" + }, + { + "M": true, + "T": 1588749124310, + "a": 284861265, + "f": 310207544, + "l": 310207544, + "m": false, + "p": "9039.22000000", + "q": "0.00660100" + }, + { + "M": true, + "T": 1588749124310, + "a": 284861266, + "f": 310207545, + "l": 310207545, + "m": false, + "p": "9039.83000000", + "q": "0.45355500" + }, + { + "M": true, + "T": 1588749124310, + "a": 284861267, + "f": 310207546, + "l": 310207546, + "m": false, + "p": "9039.84000000", + "q": "0.98320600" + }, + { + "M": true, + "T": 1588749124500, + "a": 284861268, + "f": 310207547, + "l": 310207547, + "m": true, + "p": "9038.77000000", + "q": "0.00221200" + }, + { + "M": true, + "T": 1588749124500, + "a": 284861269, + "f": 310207548, + "l": 310207548, + "m": true, + "p": "9038.76000000", + "q": "0.01281200" + }, + { + "M": true, + "T": 1588749124500, + "a": 284861270, + "f": 310207549, + "l": 310207549, + "m": true, + "p": "9038.52000000", + "q": "0.04526100" + }, + { + "M": true, + "T": 1588749124635, + "a": 284861271, + "f": 310207550, + "l": 310207550, + "m": true, + "p": "9038.51000000", + "q": "0.09591100" + }, + { + "M": true, + "T": 1588749124641, + "a": 284861272, + "f": 310207551, + "l": 310207551, + "m": true, + "p": "9038.51000000", + "q": "0.17274000" + }, + { + "M": true, + "T": 1588749124646, + "a": 284861273, + "f": 310207552, + "l": 310207552, + "m": true, + "p": "9038.51000000", + "q": "0.01917700" + }, + { + "M": true, + "T": 1588749124680, + "a": 284861274, + "f": 310207553, + "l": 310207553, + "m": true, + "p": "9038.51000000", + "q": "0.04136300" + }, + { + "M": true, + "T": 1588749124682, + "a": 284861275, + "f": 310207554, + "l": 310207554, + "m": true, + "p": "9038.51000000", + "q": "0.17276600" + }, + { + "M": true, + "T": 1588749126091, + "a": 284861276, + "f": 310207555, + "l": 310207555, + "m": true, + "p": "9038.51000000", + "q": "0.02909700" + }, + { + "M": true, + "T": 1588749126412, + "a": 284861277, + "f": 310207556, + "l": 310207556, + "m": false, + "p": "9038.68000000", + "q": "0.01149400" + }, + { + "M": true, + "T": 1588749126423, + "a": 284861278, + "f": 310207557, + "l": 310207557, + "m": true, + "p": "9038.52000000", + "q": "0.00789400" + }, + { + "M": true, + "T": 1588749126440, + "a": 284861279, + "f": 310207558, + "l": 310207558, + "m": false, + "p": "9038.68000000", + "q": "0.16534100" + }, + { + "M": true, + "T": 1588749126440, + "a": 284861280, + "f": 310207559, + "l": 310207559, + "m": false, + "p": "9038.72000000", + "q": "0.17287700" + }, + { + "M": true, + "T": 1588749126440, + "a": 284861281, + "f": 310207560, + "l": 310207560, + "m": false, + "p": "9038.77000000", + "q": "0.01000000" + }, + { + "M": true, + "T": 1588749126518, + "a": 284861282, + "f": 310207561, + "l": 310207561, + "m": true, + "p": "9039.12000000", + "q": "0.04112400" + }, + { + "M": true, + "T": 1588749126609, + "a": 284861283, + "f": 310207562, + "l": 310207562, + "m": true, + "p": "9039.12000000", + "q": "0.06232200" + }, + { + "M": true, + "T": 1588749126706, + "a": 284861284, + "f": 310207563, + "l": 310207563, + "m": false, + "p": "9039.51000000", + "q": "0.06400000" + }, + { + "M": true, + "T": 1588749126724, + "a": 284861285, + "f": 310207564, + "l": 310207564, + "m": true, + "p": "9039.12000000", + "q": "0.01038700" + }, + { + "M": true, + "T": 1588749126842, + "a": 284861286, + "f": 310207565, + "l": 310207565, + "m": true, + "p": "9039.12000000", + "q": "0.01038700" + }, + { + "M": true, + "T": 1588749126927, + "a": 284861287, + "f": 310207566, + "l": 310207566, + "m": true, + "p": "9039.12000000", + "q": "0.01038700" + }, + { + "M": true, + "T": 1588749127043, + "a": 284861288, + "f": 310207567, + "l": 310207567, + "m": false, + "p": "9039.13000000", + "q": "0.00472000" + }, + { + "M": true, + "T": 1588749127053, + "a": 284861289, + "f": 310207568, + "l": 310207568, + "m": true, + "p": "9039.12000000", + "q": "0.01038700" + }, + { + "M": true, + "T": 1588749127137, + "a": 284861290, + "f": 310207569, + "l": 310207569, + "m": true, + "p": "9039.12000000", + "q": "0.01038700" + }, + { + "M": true, + "T": 1588749127249, + "a": 284861291, + "f": 310207570, + "l": 310207570, + "m": true, + "p": "9039.12000000", + "q": "0.00629000" + }, + { + "M": true, + "T": 1588749128000, + "a": 284861292, + "f": 310207571, + "l": 310207571, + "m": true, + "p": "9039.12000000", + "q": "0.00002100" + }, + { + "M": true, + "T": 1588749128000, + "a": 284861293, + "f": 310207572, + "l": 310207572, + "m": true, + "p": "9038.52000000", + "q": "0.00587900" + }, + { + "M": true, + "T": 1588749128000, + "a": 284861294, + "f": 310207573, + "l": 310207573, + "m": true, + "p": "9038.51000000", + "q": "0.21894600" + }, + { + "M": true, + "T": 1588749128000, + "a": 284861295, + "f": 310207574, + "l": 310207574, + "m": true, + "p": "9038.48000000", + "q": "0.17515400" + }, + { + "M": true, + "T": 1588749128334, + "a": 284861296, + "f": 310207575, + "l": 310207575, + "m": true, + "p": "9037.86000000", + "q": "0.00749700" + }, + { + "M": true, + "T": 1588749128334, + "a": 284861297, + "f": 310207576, + "l": 310207576, + "m": true, + "p": "9037.82000000", + "q": "0.00300000" + }, + { + "M": true, + "T": 1588749128334, + "a": 284861298, + "f": 310207577, + "l": 310207577, + "m": true, + "p": "9037.75000000", + "q": "0.00300000" + }, + { + "M": true, + "T": 1588749128334, + "a": 284861299, + "f": 310207578, + "l": 310207578, + "m": true, + "p": "9037.33000000", + "q": "0.00199300" + }, + { + "M": true, + "T": 1588749128334, + "a": 284861300, + "f": 310207579, + "l": 310207579, + "m": true, + "p": "9037.29000000", + "q": "0.00150000" + }, + { + "M": true, + "T": 1588749128334, + "a": 284861301, + "f": 310207580, + "l": 310207580, + "m": true, + "p": "9037.21000000", + "q": "0.03319600" + }, + { + "M": true, + "T": 1588749128334, + "a": 284861302, + "f": 310207581, + "l": 310207581, + "m": true, + "p": "9037.20000000", + "q": "0.00985700" + }, + { + "M": true, + "T": 1588749128582, + "a": 284861303, + "f": 310207582, + "l": 310207582, + "m": true, + "p": "9038.00000000", + "q": "0.02010600" + }, + { + "M": true, + "T": 1588749128582, + "a": 284861304, + "f": 310207583, + "l": 310207583, + "m": true, + "p": "9037.28000000", + "q": "0.01963800" + }, + { + "M": true, + "T": 1588749128968, + "a": 284861305, + "f": 310207584, + "l": 310207584, + "m": true, + "p": "9037.78000000", + "q": "0.11461100" + }, + { + "M": true, + "T": 1588749129293, + "a": 284861306, + "f": 310207585, + "l": 310207585, + "m": true, + "p": "9038.00000000", + "q": "0.00252000" + }, + { + "M": true, + "T": 1588749129293, + "a": 284861307, + "f": 310207586, + "l": 310207586, + "m": true, + "p": "9037.25000000", + "q": "0.05790500" + }, + { + "M": true, + "T": 1588749129629, + "a": 284861308, + "f": 310207587, + "l": 310207587, + "m": true, + "p": "9037.37000000", + "q": "0.06019900" + }, + { + "M": true, + "T": 1588749129863, + "a": 284861309, + "f": 310207588, + "l": 310207588, + "m": true, + "p": "9037.29000000", + "q": "0.05527600" + }, + { + "M": true, + "T": 1588749129956, + "a": 284861310, + "f": 310207589, + "l": 310207589, + "m": true, + "p": "9037.21000000", + "q": "0.06020500" + }, + { + "M": true, + "T": 1588749129973, + "a": 284861311, + "f": 310207590, + "l": 310207590, + "m": true, + "p": "9037.20000000", + "q": "0.08867100" + }, + { + "M": true, + "T": 1588749129973, + "a": 284861312, + "f": 310207591, + "l": 310207592, + "m": true, + "p": "9037.18000000", + "q": "0.05504700" + }, + { + "M": true, + "T": 1588749130121, + "a": 284861313, + "f": 310207593, + "l": 310207593, + "m": false, + "p": "9037.74000000", + "q": "0.05422300" + }, + { + "M": true, + "T": 1588749130169, + "a": 284861314, + "f": 310207594, + "l": 310207594, + "m": false, + "p": "9037.74000000", + "q": "0.00845000" + }, + { + "M": true, + "T": 1588749130229, + "a": 284861315, + "f": 310207595, + "l": 310207595, + "m": false, + "p": "9038.06000000", + "q": "0.00165800" + }, + { + "M": true, + "T": 1588749130288, + "a": 284861316, + "f": 310207596, + "l": 310207596, + "m": true, + "p": "9037.30000000", + "q": "0.06004500" + }, + { + "M": true, + "T": 1588749130333, + "a": 284861317, + "f": 310207597, + "l": 310207597, + "m": false, + "p": "9038.10000000", + "q": "0.00307900" + }, + { + "M": true, + "T": 1588749130456, + "a": 284861318, + "f": 310207598, + "l": 310207598, + "m": false, + "p": "9037.71000000", + "q": "0.00325100" + }, + { + "M": true, + "T": 1588749130542, + "a": 284861319, + "f": 310207599, + "l": 310207599, + "m": false, + "p": "9037.71000000", + "q": "0.00674900" + }, + { + "M": true, + "T": 1588749130607, + "a": 284861320, + "f": 310207600, + "l": 310207600, + "m": true, + "p": "9037.56000000", + "q": "0.06008000" + }, + { + "M": true, + "T": 1588749130931, + "a": 284861321, + "f": 310207601, + "l": 310207601, + "m": true, + "p": "9037.82000000", + "q": "0.06033800" + }, + { + "M": true, + "T": 1588749131260, + "a": 284861322, + "f": 310207602, + "l": 310207602, + "m": true, + "p": "9037.94000000", + "q": "0.06023400" + }, + { + "M": true, + "T": 1588749131587, + "a": 284861323, + "f": 310207603, + "l": 310207603, + "m": true, + "p": "9037.94000000", + "q": "0.06034600" + }, + { + "M": true, + "T": 1588749131600, + "a": 284861324, + "f": 310207604, + "l": 310207604, + "m": true, + "p": "9037.83000000", + "q": "0.00221300" + }, + { + "M": true, + "T": 1588749131605, + "a": 284861325, + "f": 310207605, + "l": 310207605, + "m": true, + "p": "9037.46000000", + "q": "0.00221300" + }, + { + "M": true, + "T": 1588749131606, + "a": 284861326, + "f": 310207606, + "l": 310207606, + "m": true, + "p": "9037.46000000", + "q": "0.00221300" + }, + { + "M": true, + "T": 1588749131714, + "a": 284861327, + "f": 310207607, + "l": 310207607, + "m": true, + "p": "9037.14000000", + "q": "0.00221300" + }, + { + "M": true, + "T": 1588749131926, + "a": 284861328, + "f": 310207608, + "l": 310207608, + "m": true, + "p": "9037.15000000", + "q": "0.06039700" + }, + { + "M": true, + "T": 1588749132182, + "a": 284861329, + "f": 310207609, + "l": 310207609, + "m": true, + "p": "9037.42000000", + "q": "0.00785700" + }, + { + "M": true, + "T": 1588749132182, + "a": 284861330, + "f": 310207610, + "l": 310207610, + "m": true, + "p": "9037.30000000", + "q": "0.09791900" + }, + { + "M": true, + "T": 1588749132248, + "a": 284861331, + "f": 310207611, + "l": 310207611, + "m": false, + "p": "9037.30000000", + "q": "0.00307900" + }, + { + "M": true, + "T": 1588749132259, + "a": 284861332, + "f": 310207612, + "l": 310207612, + "m": true, + "p": "9037.29000000", + "q": "0.06024100" + }, + { + "M": true, + "T": 1588749132341, + "a": 284861333, + "f": 310207613, + "l": 310207613, + "m": false, + "p": "9037.30000000", + "q": "0.00899300" + }, + { + "M": true, + "T": 1588749132374, + "a": 284861334, + "f": 310207614, + "l": 310207614, + "m": true, + "p": "9037.29000000", + "q": "0.01105600" + }, + { + "M": true, + "T": 1588749132759, + "a": 284861335, + "f": 310207615, + "l": 310207615, + "m": false, + "p": "9037.30000000", + "q": "0.22374600" + }, + { + "M": true, + "T": 1588749133292, + "a": 284861336, + "f": 310207616, + "l": 310207616, + "m": true, + "p": "9037.29000000", + "q": "0.19051300" + }, + { + "M": true, + "T": 1588749133623, + "a": 284861337, + "f": 310207617, + "l": 310207617, + "m": true, + "p": "9037.20000000", + "q": "0.06022800" + }, + { + "M": true, + "T": 1588749133959, + "a": 284861338, + "f": 310207618, + "l": 310207618, + "m": true, + "p": "9037.17000000", + "q": "0.06010000" + }, + { + "M": true, + "T": 1588749134144, + "a": 284861339, + "f": 310207619, + "l": 310207619, + "m": false, + "p": "9037.29000000", + "q": "0.00364100" + }, + { + "M": true, + "T": 1588749134294, + "a": 284861340, + "f": 310207620, + "l": 310207620, + "m": true, + "p": "9037.29000000", + "q": "0.06037500" + }, + { + "M": true, + "T": 1588749134419, + "a": 284861341, + "f": 310207621, + "l": 310207621, + "m": false, + "p": "9037.30000000", + "q": "0.05651800" + }, + { + "M": true, + "T": 1588749134626, + "a": 284861342, + "f": 310207622, + "l": 310207622, + "m": true, + "p": "9037.29000000", + "q": "0.06062200" + }, + { + "M": true, + "T": 1588749134958, + "a": 284861343, + "f": 310207623, + "l": 310207623, + "m": true, + "p": "9037.29000000", + "q": "0.06014300" + }, + { + "M": true, + "T": 1588749135127, + "a": 284861344, + "f": 310207624, + "l": 310207624, + "m": false, + "p": "9037.30000000", + "q": "0.09014200" + }, + { + "M": true, + "T": 1588749135127, + "a": 284861345, + "f": 310207625, + "l": 310207625, + "m": false, + "p": "9037.79000000", + "q": "0.00794200" + }, + { + "M": true, + "T": 1588749135127, + "a": 284861346, + "f": 310207626, + "l": 310207626, + "m": false, + "p": "9037.91000000", + "q": "0.01860900" + }, + { + "M": true, + "T": 1588749135389, + "a": 284861347, + "f": 310207627, + "l": 310207627, + "m": true, + "p": "9037.85000000", + "q": "0.07777600" + }, + { + "M": true, + "T": 1588749135792, + "a": 284861348, + "f": 310207628, + "l": 310207628, + "m": true, + "p": "9037.71000000", + "q": "0.07261300" + }, + { + "M": true, + "T": 1588749136486, + "a": 284861349, + "f": 310207629, + "l": 310207629, + "m": true, + "p": "9037.23000000", + "q": "0.08758800" + }, + { + "M": true, + "T": 1588749136641, + "a": 284861350, + "f": 310207630, + "l": 310207630, + "m": true, + "p": "9037.46000000", + "q": "0.00615500" + }, + { + "M": true, + "T": 1588749136826, + "a": 284861351, + "f": 310207631, + "l": 310207632, + "m": true, + "p": "9037.46000000", + "q": "0.18594400" + }, + { + "M": true, + "T": 1588749136959, + "a": 284861352, + "f": 310207633, + "l": 310207633, + "m": true, + "p": "9037.46000000", + "q": "0.00221300" + }, + { + "M": true, + "T": 1588749136960, + "a": 284861353, + "f": 310207634, + "l": 310207634, + "m": true, + "p": "9037.46000000", + "q": "0.00221300" + }, + { + "M": true, + "T": 1588749136964, + "a": 284861354, + "f": 310207635, + "l": 310207635, + "m": true, + "p": "9037.46000000", + "q": "0.00221300" + }, + { + "M": true, + "T": 1588749136968, + "a": 284861355, + "f": 310207636, + "l": 310207636, + "m": true, + "p": "9037.46000000", + "q": "0.00221300" + }, + { + "M": true, + "T": 1588749137022, + "a": 284861356, + "f": 310207637, + "l": 310207637, + "m": true, + "p": "9037.25000000", + "q": "0.05000000" + }, + { + "M": true, + "T": 1588749137045, + "a": 284861357, + "f": 310207638, + "l": 310207638, + "m": false, + "p": "9037.26000000", + "q": "0.24375000" + }, + { + "M": true, + "T": 1588749137142, + "a": 284861358, + "f": 310207639, + "l": 310207639, + "m": true, + "p": "9037.25000000", + "q": "0.03306000" + }, + { + "M": true, + "T": 1588749137151, + "a": 284861359, + "f": 310207640, + "l": 310207640, + "m": true, + "p": "9037.25000000", + "q": "0.06020900" + }, + { + "M": true, + "T": 1588749137238, + "a": 284861360, + "f": 310207641, + "l": 310207641, + "m": true, + "p": "9037.25000000", + "q": "0.00221300" + }, + { + "M": true, + "T": 1588749137240, + "a": 284861361, + "f": 310207642, + "l": 310207642, + "m": true, + "p": "9037.25000000", + "q": "0.00221300" + }, + { + "M": true, + "T": 1588749137264, + "a": 284861362, + "f": 310207643, + "l": 310207643, + "m": true, + "p": "9037.25000000", + "q": "0.02000000" + }, + { + "M": true, + "T": 1588749137302, + "a": 284861363, + "f": 310207644, + "l": 310207644, + "m": true, + "p": "9037.25000000", + "q": "0.01000000" + }, + { + "M": true, + "T": 1588749137342, + "a": 284861364, + "f": 310207645, + "l": 310207645, + "m": true, + "p": "9037.25000000", + "q": "0.00221300" + }, + { + "M": true, + "T": 1588749137347, + "a": 284861365, + "f": 310207646, + "l": 310207646, + "m": true, + "p": "9037.25000000", + "q": "0.00221300" + }, + { + "M": true, + "T": 1588749137417, + "a": 284861366, + "f": 310207647, + "l": 310207647, + "m": true, + "p": "9037.25000000", + "q": "0.05710500" + }, + { + "M": true, + "T": 1588749137417, + "a": 284861367, + "f": 310207648, + "l": 310207648, + "m": true, + "p": "9037.13000000", + "q": "0.00221200" + }, + { + "M": true, + "T": 1588749137417, + "a": 284861368, + "f": 310207649, + "l": 310207649, + "m": true, + "p": "9036.81000000", + "q": "0.00300000" + }, + { + "M": true, + "T": 1588749137417, + "a": 284861369, + "f": 310207650, + "l": 310207650, + "m": true, + "p": "9036.46000000", + "q": "0.02613400" + }, + { + "M": true, + "T": 1588749137457, + "a": 284861370, + "f": 310207651, + "l": 310207651, + "m": true, + "p": "9035.79000000", + "q": "0.00300000" + }, + { + "M": true, + "T": 1588749137457, + "a": 284861371, + "f": 310207652, + "l": 310207652, + "m": true, + "p": "9035.44000000", + "q": "0.06332000" + }, + { + "M": true, + "T": 1588749137480, + "a": 284861372, + "f": 310207653, + "l": 310207653, + "m": true, + "p": "9035.44000000", + "q": "0.03193400" + }, + { + "M": true, + "T": 1588749137480, + "a": 284861373, + "f": 310207654, + "l": 310207654, + "m": true, + "p": "9035.38000000", + "q": "0.00115500" + }, + { + "M": true, + "T": 1588749137480, + "a": 284861374, + "f": 310207655, + "l": 310207655, + "m": true, + "p": "9035.30000000", + "q": "0.02693800" + }, + { + "M": true, + "T": 1588749137515, + "a": 284861375, + "f": 310207656, + "l": 310207656, + "m": false, + "p": "9035.39000000", + "q": "0.00307900" + }, + { + "M": true, + "T": 1588749137541, + "a": 284861376, + "f": 310207657, + "l": 310207657, + "m": true, + "p": "9035.30000000", + "q": "0.05528000" + }, + { + "M": true, + "T": 1588749137571, + "a": 284861377, + "f": 310207658, + "l": 310207658, + "m": true, + "p": "9035.30000000", + "q": "0.01105200" + }, + { + "M": true, + "T": 1588749137611, + "a": 284861378, + "f": 310207659, + "l": 310207659, + "m": true, + "p": "9035.30000000", + "q": "0.00197700" + }, + { + "M": true, + "T": 1588749137611, + "a": 284861379, + "f": 310207660, + "l": 310207660, + "m": true, + "p": "9035.20000000", + "q": "0.00300000" + }, + { + "M": true, + "T": 1588749137611, + "a": 284861380, + "f": 310207661, + "l": 310207661, + "m": true, + "p": "9035.15000000", + "q": "0.10558900" + }, + { + "M": true, + "T": 1588749137620, + "a": 284861381, + "f": 310207662, + "l": 310207662, + "m": false, + "p": "9035.35000000", + "q": "0.00307900" + }, + { + "M": true, + "T": 1588749137647, + "a": 284861382, + "f": 310207663, + "l": 310207663, + "m": true, + "p": "9035.15000000", + "q": "0.00481200" + }, + { + "M": true, + "T": 1588749137815, + "a": 284861383, + "f": 310207664, + "l": 310207664, + "m": true, + "p": "9035.19000000", + "q": "0.06015400" + }, + { + "M": true, + "T": 1588749137826, + "a": 284861384, + "f": 310207665, + "l": 310207665, + "m": false, + "p": "9035.20000000", + "q": "0.00307900" + }, + { + "M": true, + "T": 1588749137866, + "a": 284861385, + "f": 310207666, + "l": 310207666, + "m": true, + "p": "9035.19000000", + "q": "0.07271100" + }, + { + "M": true, + "T": 1588749137866, + "a": 284861386, + "f": 310207667, + "l": 310207667, + "m": true, + "p": "9035.10000000", + "q": "0.65861500" + }, + { + "M": true, + "T": 1588749137918, + "a": 284861387, + "f": 310207668, + "l": 310207668, + "m": true, + "p": "9035.10000000", + "q": "0.13269900" + }, + { + "M": true, + "T": 1588749137964, + "a": 284861388, + "f": 310207669, + "l": 310207669, + "m": false, + "p": "9035.11000000", + "q": "0.03567100" + }, + { + "M": true, + "T": 1588749138058, + "a": 284861389, + "f": 310207670, + "l": 310207670, + "m": false, + "p": "9035.11000000", + "q": "0.01597200" + }, + { + "M": true, + "T": 1588749138141, + "a": 284861390, + "f": 310207671, + "l": 310207671, + "m": true, + "p": "9035.10000000", + "q": "0.06013100" + }, + { + "M": true, + "T": 1588749138159, + "a": 284861391, + "f": 310207672, + "l": 310207672, + "m": false, + "p": "9035.11000000", + "q": "0.00199300" + }, + { + "M": true, + "T": 1588749138460, + "a": 284861392, + "f": 310207673, + "l": 310207673, + "m": true, + "p": "9035.10000000", + "q": "0.06002900" + }, + { + "M": true, + "T": 1588749138671, + "a": 284861393, + "f": 310207674, + "l": 310207674, + "m": true, + "p": "9035.10000000", + "q": "0.00486200" + }, + { + "M": true, + "T": 1588749138789, + "a": 284861394, + "f": 310207675, + "l": 310207675, + "m": true, + "p": "9035.10000000", + "q": "0.06033000" + }, + { + "M": true, + "T": 1588749139119, + "a": 284861395, + "f": 310207676, + "l": 310207676, + "m": true, + "p": "9035.10000000", + "q": "0.06044400" + }, + { + "M": true, + "T": 1588749139347, + "a": 284861396, + "f": 310207677, + "l": 310207677, + "m": true, + "p": "9035.10000000", + "q": "0.05000000" + }, + { + "M": true, + "T": 1588749139448, + "a": 284861397, + "f": 310207678, + "l": 310207678, + "m": true, + "p": "9035.10000000", + "q": "0.06039900" + }, + { + "M": true, + "T": 1588749139768, + "a": 284861398, + "f": 310207679, + "l": 310207679, + "m": true, + "p": "9035.10000000", + "q": "0.06002700" + }, + { + "M": true, + "T": 1588749139812, + "a": 284861399, + "f": 310207680, + "l": 310207680, + "m": false, + "p": "9035.11000000", + "q": "0.01196300" + }, + { + "M": true, + "T": 1588749140083, + "a": 284861400, + "f": 310207681, + "l": 310207681, + "m": true, + "p": "9035.10000000", + "q": "0.06028700" + }, + { + "M": true, + "T": 1588749140267, + "a": 284861401, + "f": 310207682, + "l": 310207682, + "m": true, + "p": "9035.10000000", + "q": "0.01921100" + }, + { + "M": true, + "T": 1588749140273, + "a": 284861402, + "f": 310207683, + "l": 310207683, + "m": true, + "p": "9035.10000000", + "q": "0.03842800" + }, + { + "M": true, + "T": 1588749140284, + "a": 284861403, + "f": 310207684, + "l": 310207684, + "m": true, + "p": "9035.10000000", + "q": "0.74159200" + }, + { + "M": true, + "T": 1588749140370, + "a": 284861404, + "f": 310207685, + "l": 310207685, + "m": true, + "p": "9035.10000000", + "q": "0.08846900" + }, + { + "M": true, + "T": 1588749140411, + "a": 284861405, + "f": 310207686, + "l": 310207686, + "m": true, + "p": "9035.10000000", + "q": "0.06027500" + }, + { + "M": true, + "T": 1588749140434, + "a": 284861406, + "f": 310207687, + "l": 310207687, + "m": true, + "p": "9035.10000000", + "q": "0.01918600" + }, + { + "M": true, + "T": 1588749140494, + "a": 284861407, + "f": 310207688, + "l": 310207688, + "m": true, + "p": "9035.10000000", + "q": "0.00999700" + }, + { + "M": true, + "T": 1588749140495, + "a": 284861408, + "f": 310207689, + "l": 310207689, + "m": true, + "p": "9035.10000000", + "q": "0.00924500" + }, + { + "M": true, + "T": 1588749140640, + "a": 284861409, + "f": 310207690, + "l": 310207690, + "m": true, + "p": "9035.10000000", + "q": "0.63900000" + }, + { + "M": true, + "T": 1588749140733, + "a": 284861410, + "f": 310207691, + "l": 310207691, + "m": true, + "p": "9035.10000000", + "q": "0.06041400" + }, + { + "M": true, + "T": 1588749141054, + "a": 284861411, + "f": 310207692, + "l": 310207692, + "m": true, + "p": "9035.10000000", + "q": "0.06037300" + }, + { + "M": true, + "T": 1588749141138, + "a": 284861412, + "f": 310207693, + "l": 310207693, + "m": false, + "p": "9035.11000000", + "q": "0.00128200" + }, + { + "M": true, + "T": 1588749141196, + "a": 284861413, + "f": 310207694, + "l": 310207694, + "m": false, + "p": "9035.11000000", + "q": "0.01926700" + }, + { + "M": true, + "T": 1588749141369, + "a": 284861414, + "f": 310207695, + "l": 310207695, + "m": true, + "p": "9035.10000000", + "q": "0.06011900" + }, + { + "M": true, + "T": 1588749141404, + "a": 284861415, + "f": 310207696, + "l": 310207696, + "m": false, + "p": "9035.11000000", + "q": "0.01926700" + }, + { + "M": true, + "T": 1588749141690, + "a": 284861416, + "f": 310207697, + "l": 310207697, + "m": true, + "p": "9035.10000000", + "q": "0.06021000" + }, + { + "M": true, + "T": 1588749142014, + "a": 284861417, + "f": 310207698, + "l": 310207698, + "m": true, + "p": "9035.10000000", + "q": "0.06025800" + }, + { + "M": true, + "T": 1588749142330, + "a": 284861418, + "f": 310207699, + "l": 310207699, + "m": true, + "p": "9035.10000000", + "q": "0.06043800" + }, + { + "M": true, + "T": 1588749142382, + "a": 284861419, + "f": 310207700, + "l": 310207700, + "m": false, + "p": "9035.11000000", + "q": "0.00297800" + }, + { + "M": true, + "T": 1588749142652, + "a": 284861420, + "f": 310207701, + "l": 310207701, + "m": true, + "p": "9035.10000000", + "q": "0.06007700" + }, + { + "M": true, + "T": 1588749142705, + "a": 284861421, + "f": 310207702, + "l": 310207702, + "m": true, + "p": "9035.10000000", + "q": "0.10263900" + }, + { + "M": true, + "T": 1588749142917, + "a": 284861422, + "f": 310207703, + "l": 310207703, + "m": true, + "p": "9035.10000000", + "q": "0.00251400" + }, + { + "M": true, + "T": 1588749142982, + "a": 284861423, + "f": 310207704, + "l": 310207704, + "m": true, + "p": "9035.10000000", + "q": "0.06013900" + }, + { + "M": true, + "T": 1588749143231, + "a": 284861424, + "f": 310207705, + "l": 310207705, + "m": true, + "p": "9035.10000000", + "q": "0.04368200" + }, + { + "M": true, + "T": 1588749143292, + "a": 284861425, + "f": 310207706, + "l": 310207706, + "m": true, + "p": "9035.10000000", + "q": "0.06018200" + }, + { + "M": true, + "T": 1588749143412, + "a": 284861426, + "f": 310207707, + "l": 310207707, + "m": true, + "p": "9035.10000000", + "q": "0.00128000" + }, + { + "M": true, + "T": 1588749143412, + "a": 284861427, + "f": 310207708, + "l": 310207708, + "m": true, + "p": "9035.10000000", + "q": "0.00267100" + }, + { + "M": true, + "T": 1588749143437, + "a": 284861428, + "f": 310207709, + "l": 310207709, + "m": true, + "p": "9035.10000000", + "q": "0.53386600" + }, + { + "M": true, + "T": 1588749143542, + "a": 284861429, + "f": 310207710, + "l": 310207710, + "m": true, + "p": "9035.10000000", + "q": "0.16380000" + }, + { + "M": true, + "T": 1588749143609, + "a": 284861430, + "f": 310207711, + "l": 310207711, + "m": true, + "p": "9035.10000000", + "q": "0.06048100" + }, + { + "M": true, + "T": 1588749143704, + "a": 284861431, + "f": 310207712, + "l": 310207715, + "m": false, + "p": "9035.11000000", + "q": "2.80965100" + }, + { + "M": true, + "T": 1588749143936, + "a": 284861432, + "f": 310207716, + "l": 310207716, + "m": true, + "p": "9035.10000000", + "q": "0.06012300" + }, + { + "M": true, + "T": 1588749143975, + "a": 284861433, + "f": 310207717, + "l": 310207717, + "m": false, + "p": "9035.11000000", + "q": "0.00798400" + }, + { + "M": true, + "T": 1588749143975, + "a": 284861434, + "f": 310207718, + "l": 310207718, + "m": true, + "p": "9035.10000000", + "q": "0.04432700" + }, + { + "M": true, + "T": 1588749144145, + "a": 284861435, + "f": 310207719, + "l": 310207719, + "m": true, + "p": "9035.10000000", + "q": "0.07603200" + }, + { + "M": true, + "T": 1588749144258, + "a": 284861436, + "f": 310207720, + "l": 310207720, + "m": true, + "p": "9035.10000000", + "q": "0.06010000" + }, + { + "M": true, + "T": 1588749144336, + "a": 284861437, + "f": 310207721, + "l": 310207721, + "m": true, + "p": "9035.10000000", + "q": "0.00221400" + }, + { + "M": true, + "T": 1588749144339, + "a": 284861438, + "f": 310207722, + "l": 310207722, + "m": true, + "p": "9035.10000000", + "q": "0.00221400" + }, + { + "M": true, + "T": 1588749144340, + "a": 284861439, + "f": 310207723, + "l": 310207723, + "m": true, + "p": "9035.10000000", + "q": "0.00221400" + }, + { + "M": true, + "T": 1588749144588, + "a": 284861440, + "f": 310207724, + "l": 310207724, + "m": true, + "p": "9035.10000000", + "q": "0.06012100" + }, + { + "M": true, + "T": 1588749144605, + "a": 284861441, + "f": 310207725, + "l": 310207725, + "m": true, + "p": "9035.10000000", + "q": "0.00465400" + }, + { + "M": true, + "T": 1588749144904, + "a": 284861442, + "f": 310207726, + "l": 310207726, + "m": true, + "p": "9035.10000000", + "q": "0.06003300" + }, + { + "M": true, + "T": 1588749145216, + "a": 284861443, + "f": 310207727, + "l": 310207727, + "m": true, + "p": "9035.10000000", + "q": "0.55800000" + }, + { + "M": true, + "T": 1588749145226, + "a": 284861444, + "f": 310207728, + "l": 310207728, + "m": true, + "p": "9035.10000000", + "q": "0.06077500" + }, + { + "M": true, + "T": 1588749145235, + "a": 284861445, + "f": 310207729, + "l": 310207729, + "m": true, + "p": "9035.10000000", + "q": "0.06264300" + }, + { + "M": true, + "T": 1588749145359, + "a": 284861446, + "f": 310207730, + "l": 310207730, + "m": true, + "p": "9035.10000000", + "q": "0.03128600" + }, + { + "M": true, + "T": 1588749145539, + "a": 284861447, + "f": 310207731, + "l": 310207731, + "m": true, + "p": "9035.10000000", + "q": "0.06000500" + }, + { + "M": true, + "T": 1588749145855, + "a": 284861448, + "f": 310207732, + "l": 310207732, + "m": true, + "p": "9035.10000000", + "q": "0.06001100" + }, + { + "M": true, + "T": 1588749145952, + "a": 284861449, + "f": 310207733, + "l": 310207733, + "m": false, + "p": "9035.11000000", + "q": "0.33130000" + }, + { + "M": true, + "T": 1588749146184, + "a": 284861450, + "f": 310207734, + "l": 310207734, + "m": true, + "p": "9035.10000000", + "q": "0.06002900" + }, + { + "M": true, + "T": 1588749146499, + "a": 284861451, + "f": 310207735, + "l": 310207735, + "m": true, + "p": "9035.10000000", + "q": "0.06008100" + }, + { + "M": true, + "T": 1588749146823, + "a": 284861452, + "f": 310207736, + "l": 310207736, + "m": true, + "p": "9035.10000000", + "q": "0.06024000" + }, + { + "M": true, + "T": 1588749147159, + "a": 284861453, + "f": 310207737, + "l": 310207737, + "m": true, + "p": "9035.10000000", + "q": "0.06118300" + }, + { + "M": true, + "T": 1588749147249, + "a": 284861454, + "f": 310207738, + "l": 310207738, + "m": true, + "p": "9035.10000000", + "q": "0.03595700" + }, + { + "M": true, + "T": 1588749147257, + "a": 284861455, + "f": 310207739, + "l": 310207739, + "m": true, + "p": "9035.10000000", + "q": "0.18138900" + }, + { + "M": true, + "T": 1588749147277, + "a": 284861456, + "f": 310207740, + "l": 310207740, + "m": true, + "p": "9035.00000000", + "q": "0.05982400" + }, + { + "M": true, + "T": 1588749147349, + "a": 284861457, + "f": 310207741, + "l": 310207741, + "m": false, + "p": "9035.01000000", + "q": "0.06466000" + }, + { + "M": true, + "T": 1588749147448, + "a": 284861458, + "f": 310207742, + "l": 310207744, + "m": false, + "p": "9035.01000000", + "q": "2.80965500" + }, + { + "M": true, + "T": 1588749147479, + "a": 284861459, + "f": 310207745, + "l": 310207747, + "m": true, + "p": "9035.00000000", + "q": "0.06003600" + }, + { + "M": true, + "T": 1588749147487, + "a": 284861460, + "f": 310207748, + "l": 310207748, + "m": true, + "p": "9035.00000000", + "q": "0.00221400" + }, + { + "M": true, + "T": 1588749147489, + "a": 284861461, + "f": 310207749, + "l": 310207749, + "m": true, + "p": "9035.00000000", + "q": "0.00221400" + }, + { + "M": true, + "T": 1588749147489, + "a": 284861462, + "f": 310207750, + "l": 310207750, + "m": true, + "p": "9035.00000000", + "q": "0.00221400" + }, + { + "M": true, + "T": 1588749147489, + "a": 284861463, + "f": 310207751, + "l": 310207751, + "m": true, + "p": "9035.00000000", + "q": "0.00221400" + }, + { + "M": true, + "T": 1588749147796, + "a": 284861464, + "f": 310207752, + "l": 310207752, + "m": true, + "p": "9035.00000000", + "q": "0.06014900" + }, + { + "M": true, + "T": 1588749147968, + "a": 284861465, + "f": 310207753, + "l": 310207753, + "m": true, + "p": "9035.00000000", + "q": "0.04173300" + }, + { + "M": true, + "T": 1588749148119, + "a": 284861466, + "f": 310207754, + "l": 310207755, + "m": true, + "p": "9035.00000000", + "q": "0.06035800" + }, + { + "M": true, + "T": 1588749148151, + "a": 284861467, + "f": 310207756, + "l": 310207756, + "m": false, + "p": "9035.01000000", + "q": "0.01875800" + }, + { + "M": true, + "T": 1588749148251, + "a": 284861468, + "f": 310207757, + "l": 310207757, + "m": true, + "p": "9035.00000000", + "q": "0.00221400" + }, + { + "M": true, + "T": 1588749148255, + "a": 284861469, + "f": 310207758, + "l": 310207758, + "m": true, + "p": "9035.00000000", + "q": "0.00221400" + }, + { + "M": true, + "T": 1588749148255, + "a": 284861470, + "f": 310207759, + "l": 310207759, + "m": true, + "p": "9035.00000000", + "q": "0.00221400" + }, + { + "M": true, + "T": 1588749148274, + "a": 284861471, + "f": 310207760, + "l": 310207762, + "m": true, + "p": "9035.00000000", + "q": "0.06200000" + }, + { + "M": true, + "T": 1588749148279, + "a": 284861472, + "f": 310207763, + "l": 310207763, + "m": true, + "p": "9035.00000000", + "q": "0.33300000" + }, + { + "M": true, + "T": 1588749148326, + "a": 284861473, + "f": 310207764, + "l": 310207764, + "m": true, + "p": "9035.00000000", + "q": "0.00213400" + }, + { + "M": true, + "T": 1588749148353, + "a": 284861474, + "f": 310207765, + "l": 310207765, + "m": true, + "p": "9035.00000000", + "q": "0.04511600" + }, + { + "M": true, + "T": 1588749148430, + "a": 284861475, + "f": 310207766, + "l": 310207766, + "m": true, + "p": "9035.00000000", + "q": "0.06017200" + }, + { + "M": true, + "T": 1588749148594, + "a": 284861476, + "f": 310207767, + "l": 310207767, + "m": false, + "p": "9035.01000000", + "q": "0.01932600" + }, + { + "M": true, + "T": 1588749148741, + "a": 284861477, + "f": 310207768, + "l": 310207768, + "m": true, + "p": "9035.00000000", + "q": "0.06009800" + }, + { + "M": true, + "T": 1588749148888, + "a": 284861478, + "f": 310207769, + "l": 310207769, + "m": false, + "p": "9035.01000000", + "q": "0.00140000" + }, + { + "M": true, + "T": 1588749149056, + "a": 284861479, + "f": 310207770, + "l": 310207770, + "m": true, + "p": "9035.00000000", + "q": "0.06046200" + }, + { + "M": true, + "T": 1588749149383, + "a": 284861480, + "f": 310207771, + "l": 310207771, + "m": true, + "p": "9035.00000000", + "q": "0.06052800" + }, + { + "M": true, + "T": 1588749149705, + "a": 284861481, + "f": 310207772, + "l": 310207772, + "m": true, + "p": "9035.00000000", + "q": "0.06036600" + }, + { + "M": true, + "T": 1588749149784, + "a": 284861482, + "f": 310207773, + "l": 310207773, + "m": true, + "p": "9035.00000000", + "q": "0.01834700" + }, + { + "M": true, + "T": 1588749150018, + "a": 284861483, + "f": 310207774, + "l": 310207774, + "m": true, + "p": "9035.00000000", + "q": "0.06009600" + }, + { + "M": true, + "T": 1588749150227, + "a": 284861484, + "f": 310207775, + "l": 310207775, + "m": true, + "p": "9035.00000000", + "q": "0.31000000" + }, + { + "M": true, + "T": 1588749150342, + "a": 284861485, + "f": 310207776, + "l": 310207776, + "m": true, + "p": "9035.00000000", + "q": "0.06024300" + }, + { + "M": true, + "T": 1588749150488, + "a": 284861486, + "f": 310207777, + "l": 310207777, + "m": false, + "p": "9035.01000000", + "q": "0.00565300" + }, + { + "M": true, + "T": 1588749150664, + "a": 284861487, + "f": 310207778, + "l": 310207778, + "m": true, + "p": "9035.00000000", + "q": "0.06012800" + }, + { + "M": true, + "T": 1588749150984, + "a": 284861488, + "f": 310207779, + "l": 310207779, + "m": true, + "p": "9035.00000000", + "q": "0.06086100" + }, + { + "M": true, + "T": 1588749151306, + "a": 284861489, + "f": 310207780, + "l": 310207780, + "m": false, + "p": "9035.01000000", + "q": "0.02213400" + }, + { + "M": true, + "T": 1588749151320, + "a": 284861490, + "f": 310207781, + "l": 310207781, + "m": true, + "p": "9035.00000000", + "q": "0.06064400" + }, + { + "M": true, + "T": 1588749151570, + "a": 284861491, + "f": 310207782, + "l": 310207782, + "m": true, + "p": "9035.00000000", + "q": "0.00221400" + }, + { + "M": true, + "T": 1588749151570, + "a": 284861492, + "f": 310207783, + "l": 310207783, + "m": true, + "p": "9035.00000000", + "q": "0.00221400" + }, + { + "M": true, + "T": 1588749151571, + "a": 284861493, + "f": 310207784, + "l": 310207784, + "m": true, + "p": "9035.00000000", + "q": "0.00221400" + }, + { + "M": true, + "T": 1588749151574, + "a": 284861494, + "f": 310207785, + "l": 310207785, + "m": true, + "p": "9035.00000000", + "q": "0.00221400" + }, + { + "M": true, + "T": 1588749151646, + "a": 284861495, + "f": 310207786, + "l": 310207786, + "m": true, + "p": "9035.00000000", + "q": "0.06016600" + }, + { + "M": true, + "T": 1588749151968, + "a": 284861496, + "f": 310207787, + "l": 310207787, + "m": true, + "p": "9035.00000000", + "q": "0.06071900" + }, + { + "M": true, + "T": 1588749152071, + "a": 284861497, + "f": 310207788, + "l": 310207788, + "m": true, + "p": "9035.00000000", + "q": "0.11058600" + }, + { + "M": true, + "T": 1588749152298, + "a": 284861498, + "f": 310207789, + "l": 310207789, + "m": true, + "p": "9035.00000000", + "q": "2.30900000" + }, + { + "M": true, + "T": 1588749152299, + "a": 284861499, + "f": 310207790, + "l": 310207790, + "m": true, + "p": "9035.00000000", + "q": "0.06019600" + }, + { + "M": true, + "T": 1588749152312, + "a": 284861500, + "f": 310207791, + "l": 310207791, + "m": true, + "p": "9035.00000000", + "q": "0.36720500" + }, + { + "M": true, + "T": 1588749152316, + "a": 284861501, + "f": 310207792, + "l": 310207792, + "m": true, + "p": "9035.00000000", + "q": "5.66050000" + }, + { + "M": true, + "T": 1588749152316, + "a": 284861502, + "f": 310207793, + "l": 310207793, + "m": true, + "p": "9034.78000000", + "q": "0.00300000" + }, + { + "M": true, + "T": 1588749152348, + "a": 284861503, + "f": 310207794, + "l": 310207794, + "m": true, + "p": "9034.69000000", + "q": "0.00113500" + }, + { + "M": true, + "T": 1588749152348, + "a": 284861504, + "f": 310207795, + "l": 310207795, + "m": true, + "p": "9034.52000000", + "q": "0.00833700" + }, + { + "M": true, + "T": 1588749152348, + "a": 284861505, + "f": 310207796, + "l": 310207796, + "m": true, + "p": "9034.14000000", + "q": "0.03320700" + }, + { + "M": true, + "T": 1588749152348, + "a": 284861506, + "f": 310207797, + "l": 310207797, + "m": true, + "p": "9034.11000000", + "q": "0.00332400" + }, + { + "M": true, + "T": 1588749152348, + "a": 284861507, + "f": 310207798, + "l": 310207798, + "m": true, + "p": "9034.00000000", + "q": "0.01500000" + }, + { + "M": true, + "T": 1588749152348, + "a": 284861508, + "f": 310207799, + "l": 310207799, + "m": true, + "p": "9033.76000000", + "q": "0.00300000" + }, + { + "M": true, + "T": 1588749152348, + "a": 284861509, + "f": 310207800, + "l": 310207800, + "m": true, + "p": "9033.26000000", + "q": "0.00608900" + }, + { + "M": true, + "T": 1588749152348, + "a": 284861510, + "f": 310207801, + "l": 310207801, + "m": true, + "p": "9033.00000000", + "q": "0.07749300" + }, + { + "M": true, + "T": 1588749152348, + "a": 284861511, + "f": 310207802, + "l": 310207803, + "m": true, + "p": "9032.75000000", + "q": "0.30300000" + }, + { + "M": true, + "T": 1588749152348, + "a": 284861512, + "f": 310207804, + "l": 310207804, + "m": true, + "p": "9032.65000000", + "q": "0.00300000" + }, + { + "M": true, + "T": 1588749152348, + "a": 284861513, + "f": 310207805, + "l": 310207805, + "m": true, + "p": "9032.39000000", + "q": "0.24641500" + }, + { + "M": true, + "T": 1588749152361, + "a": 284861514, + "f": 310207806, + "l": 310207806, + "m": true, + "p": "9032.14000000", + "q": "0.12403000" + }, + { + "M": true, + "T": 1588749152361, + "a": 284861515, + "f": 310207807, + "l": 310207808, + "m": true, + "p": "9032.08000000", + "q": "0.15503500" + }, + { + "M": true, + "T": 1588749152361, + "a": 284861516, + "f": 310207809, + "l": 310207809, + "m": true, + "p": "9032.00000000", + "q": "0.11071700" + }, + { + "M": true, + "T": 1588749152361, + "a": 284861517, + "f": 310207810, + "l": 310207810, + "m": true, + "p": "9031.73000000", + "q": "0.00300000" + }, + { + "M": true, + "T": 1588749152361, + "a": 284861518, + "f": 310207811, + "l": 310207811, + "m": true, + "p": "9031.48000000", + "q": "0.08000000" + }, + { + "M": true, + "T": 1588749152361, + "a": 284861519, + "f": 310207812, + "l": 310207812, + "m": true, + "p": "9031.36000000", + "q": "0.12721800" + }, + { + "M": true, + "T": 1588749152372, + "a": 284861520, + "f": 310207813, + "l": 310207813, + "m": true, + "p": "9032.40000000", + "q": "0.02000000" + }, + { + "M": true, + "T": 1588749152376, + "a": 284861521, + "f": 310207814, + "l": 310207814, + "m": true, + "p": "9032.40000000", + "q": "0.03832400" + }, + { + "M": true, + "T": 1588749152376, + "a": 284861522, + "f": 310207815, + "l": 310207815, + "m": true, + "p": "9031.49000000", + "q": "0.08004200" + }, + { + "M": true, + "T": 1588749152376, + "a": 284861523, + "f": 310207816, + "l": 310207816, + "m": true, + "p": "9031.41000000", + "q": "0.58163400" + }, + { + "M": true, + "T": 1588749152376, + "a": 284861524, + "f": 310207817, + "l": 310207817, + "m": true, + "p": "9031.41000000", + "q": "0.66036600" + }, + { + "M": true, + "T": 1588749152376, + "a": 284861525, + "f": 310207818, + "l": 310207818, + "m": true, + "p": "9031.36000000", + "q": "0.08963400" + }, + { + "M": true, + "T": 1588749152378, + "a": 284861526, + "f": 310207819, + "l": 310207819, + "m": true, + "p": "9031.36000000", + "q": "0.02000000" + }, + { + "M": true, + "T": 1588749152394, + "a": 284861527, + "f": 310207820, + "l": 310207820, + "m": true, + "p": "9031.50000000", + "q": "0.26500000" + }, + { + "M": true, + "T": 1588749152394, + "a": 284861528, + "f": 310207821, + "l": 310207821, + "m": true, + "p": "9031.42000000", + "q": "0.01100000" + }, + { + "M": true, + "T": 1588749152406, + "a": 284861529, + "f": 310207822, + "l": 310207822, + "m": true, + "p": "9033.34000000", + "q": "0.00719200" + }, + { + "M": true, + "T": 1588749152406, + "a": 284861530, + "f": 310207823, + "l": 310207823, + "m": true, + "p": "9031.42000000", + "q": "0.04732400" + }, + { + "M": true, + "T": 1588749152406, + "a": 284861531, + "f": 310207824, + "l": 310207825, + "m": true, + "p": "9031.23000000", + "q": "0.25529300" + }, + { + "M": true, + "T": 1588749152406, + "a": 284861532, + "f": 310207826, + "l": 310207826, + "m": true, + "p": "9031.22000000", + "q": "0.00551900" + }, + { + "M": true, + "T": 1588749152406, + "a": 284861533, + "f": 310207827, + "l": 310207827, + "m": true, + "p": "9031.15000000", + "q": "0.04530000" + }, + { + "M": true, + "T": 1588749152406, + "a": 284861534, + "f": 310207828, + "l": 310207828, + "m": true, + "p": "9031.10000000", + "q": "0.00282500" + }, + { + "M": true, + "T": 1588749152406, + "a": 284861535, + "f": 310207829, + "l": 310207829, + "m": true, + "p": "9031.00000000", + "q": "0.01500000" + }, + { + "M": true, + "T": 1588749152406, + "a": 284861536, + "f": 310207830, + "l": 310207830, + "m": true, + "p": "9030.97000000", + "q": "0.05454700" + }, + { + "M": true, + "T": 1588749152411, + "a": 284861537, + "f": 310207831, + "l": 310207831, + "m": true, + "p": "9030.97000000", + "q": "0.04483200" + }, + { + "M": true, + "T": 1588749152411, + "a": 284861538, + "f": 310207832, + "l": 310207832, + "m": true, + "p": "9030.78000000", + "q": "0.00110800" + }, + { + "M": true, + "T": 1588749152411, + "a": 284861539, + "f": 310207833, + "l": 310207833, + "m": true, + "p": "9030.72000000", + "q": "0.00300000" + }, + { + "M": true, + "T": 1588749152411, + "a": 284861540, + "f": 310207834, + "l": 310207834, + "m": true, + "p": "9030.50000000", + "q": "0.60106000" + }, + { + "M": true, + "T": 1588749152430, + "a": 284861541, + "f": 310207835, + "l": 310207835, + "m": true, + "p": "9031.55000000", + "q": "0.01000000" + }, + { + "M": true, + "T": 1588749152460, + "a": 284861542, + "f": 310207836, + "l": 310207836, + "m": true, + "p": "9030.47000000", + "q": "0.08000000" + }, + { + "M": true, + "T": 1588749152460, + "a": 284861543, + "f": 310207837, + "l": 310207837, + "m": true, + "p": "9030.33000000", + "q": "0.03841200" + }, + { + "M": true, + "T": 1588749152460, + "a": 284861544, + "f": 310207838, + "l": 310207838, + "m": true, + "p": "9030.24000000", + "q": "0.00490000" + }, + { + "M": true, + "T": 1588749152460, + "a": 284861545, + "f": 310207839, + "l": 310207839, + "m": true, + "p": "9030.18000000", + "q": "0.00567700" + }, + { + "M": true, + "T": 1588749152460, + "a": 284861546, + "f": 310207840, + "l": 310207840, + "m": true, + "p": "9030.17000000", + "q": "0.10000000" + }, + { + "M": true, + "T": 1588749152460, + "a": 284861547, + "f": 310207841, + "l": 310207841, + "m": true, + "p": "9030.16000000", + "q": "0.06201100" + }, + { + "M": true, + "T": 1588749152463, + "a": 284861548, + "f": 310207842, + "l": 310207842, + "m": true, + "p": "9030.58000000", + "q": "0.02930800" + }, + { + "M": true, + "T": 1588749152463, + "a": 284861549, + "f": 310207843, + "l": 310207843, + "m": true, + "p": "9030.18000000", + "q": "0.05542000" + }, + { + "M": true, + "T": 1588749152463, + "a": 284861550, + "f": 310207844, + "l": 310207844, + "m": true, + "p": "9030.16000000", + "q": "0.04868700" + }, + { + "M": true, + "T": 1588749152463, + "a": 284861551, + "f": 310207845, + "l": 310207845, + "m": true, + "p": "9030.14000000", + "q": "0.02486800" + }, + { + "M": true, + "T": 1588749152463, + "a": 284861552, + "f": 310207846, + "l": 310207846, + "m": true, + "p": "9030.10000000", + "q": "0.00300000" + }, + { + "M": true, + "T": 1588749152463, + "a": 284861553, + "f": 310207847, + "l": 310207851, + "m": true, + "p": "9030.00000000", + "q": "0.12971700" + }, + { + "M": true, + "T": 1588749152477, + "a": 284861554, + "f": 310207852, + "l": 310207852, + "m": true, + "p": "9030.21000000", + "q": "0.04000000" + }, + { + "M": true, + "T": 1588749152478, + "a": 284861555, + "f": 310207853, + "l": 310207853, + "m": true, + "p": "9030.21000000", + "q": "0.07079300" + }, + { + "M": true, + "T": 1588749152478, + "a": 284861556, + "f": 310207854, + "l": 310207854, + "m": true, + "p": "9030.05000000", + "q": "0.15058100" + }, + { + "M": true, + "T": 1588749152487, + "a": 284861557, + "f": 310207855, + "l": 310207855, + "m": true, + "p": "9030.00000000", + "q": "0.00221400" + }, + { + "M": true, + "T": 1588749152491, + "a": 284861558, + "f": 310207856, + "l": 310207856, + "m": true, + "p": "9030.51000000", + "q": "0.00221400" + }, + { + "M": true, + "T": 1588749152491, + "a": 284861559, + "f": 310207857, + "l": 310207857, + "m": true, + "p": "9030.51000000", + "q": "0.00221400" + }, + { + "M": true, + "T": 1588749152492, + "a": 284861560, + "f": 310207858, + "l": 310207858, + "m": true, + "p": "9030.51000000", + "q": "0.00221400" + }, + { + "M": true, + "T": 1588749152492, + "a": 284861561, + "f": 310207859, + "l": 310207859, + "m": true, + "p": "9030.51000000", + "q": "0.11522200" + }, + { + "M": true, + "T": 1588749152492, + "a": 284861562, + "f": 310207860, + "l": 310207860, + "m": true, + "p": "9030.07000000", + "q": "0.30430200" + }, + { + "M": true, + "T": 1588749152507, + "a": 284861563, + "f": 310207861, + "l": 310207861, + "m": true, + "p": "9031.77000000", + "q": "0.00887200" + }, + { + "M": true, + "T": 1588749152507, + "a": 284861564, + "f": 310207862, + "l": 310207862, + "m": true, + "p": "9030.09000000", + "q": "0.00112800" + }, + { + "M": true, + "T": 1588749152595, + "a": 284861565, + "f": 310207863, + "l": 310207863, + "m": true, + "p": "9030.09000000", + "q": "0.07758000" + }, + { + "M": true, + "T": 1588749152595, + "a": 284861566, + "f": 310207864, + "l": 310207864, + "m": true, + "p": "9030.01000000", + "q": "0.04576400" + }, + { + "M": true, + "T": 1588749152595, + "a": 284861567, + "f": 310207865, + "l": 310207865, + "m": true, + "p": "9030.00000000", + "q": "0.26373000" + }, + { + "M": true, + "T": 1588749152615, + "a": 284861568, + "f": 310207866, + "l": 310207866, + "m": true, + "p": "9030.10000000", + "q": "0.06007100" + }, + { + "M": true, + "T": 1588749152645, + "a": 284861569, + "f": 310207867, + "l": 310207867, + "m": true, + "p": "9030.10000000", + "q": "0.21684600" + }, + { + "M": true, + "T": 1588749152645, + "a": 284861570, + "f": 310207868, + "l": 310207868, + "m": true, + "p": "9030.00000000", + "q": "0.22550000" + }, + { + "M": true, + "T": 1588749152657, + "a": 284861571, + "f": 310207869, + "l": 310207869, + "m": true, + "p": "9030.48000000", + "q": "0.03322100" + }, + { + "M": true, + "T": 1588749152657, + "a": 284861572, + "f": 310207870, + "l": 310207870, + "m": true, + "p": "9030.00000000", + "q": "0.17690500" + }, + { + "M": true, + "T": 1588749152700, + "a": 284861573, + "f": 310207871, + "l": 310207871, + "m": true, + "p": "9030.00000000", + "q": "0.01106000" + }, + { + "M": true, + "T": 1588749152704, + "a": 284861574, + "f": 310207872, + "l": 310207872, + "m": true, + "p": "9030.01000000", + "q": "0.34283700" + }, + { + "M": true, + "T": 1588749152822, + "a": 284861575, + "f": 310207873, + "l": 310207873, + "m": true, + "p": "9030.15000000", + "q": "0.00646400" + }, + { + "M": true, + "T": 1588749152822, + "a": 284861576, + "f": 310207874, + "l": 310207874, + "m": true, + "p": "9030.04000000", + "q": "0.10377700" + }, + { + "M": true, + "T": 1588749152940, + "a": 284861577, + "f": 310207875, + "l": 310207875, + "m": true, + "p": "9030.00000000", + "q": "0.06042800" + }, + { + "M": true, + "T": 1588749152944, + "a": 284861578, + "f": 310207876, + "l": 310207876, + "m": false, + "p": "9030.71000000", + "q": "0.01000000" + }, + { + "M": true, + "T": 1588749152944, + "a": 284861579, + "f": 310207877, + "l": 310207877, + "m": false, + "p": "9031.06000000", + "q": "0.04309900" + }, + { + "M": true, + "T": 1588749153067, + "a": 284861580, + "f": 310207878, + "l": 310207878, + "m": true, + "p": "9030.00000000", + "q": "1.75824600" + }, + { + "M": true, + "T": 1588749153183, + "a": 284861581, + "f": 310207879, + "l": 310207879, + "m": false, + "p": "9030.65000000", + "q": "0.00883000" + }, + { + "M": true, + "T": 1588749153233, + "a": 284861582, + "f": 310207880, + "l": 310207880, + "m": true, + "p": "9030.00000000", + "q": "4.11348600" + }, + { + "M": true, + "T": 1588749153268, + "a": 284861583, + "f": 310207881, + "l": 310207881, + "m": true, + "p": "9030.00000000", + "q": "0.06025200" + }, + { + "M": true, + "T": 1588749153370, + "a": 284861584, + "f": 310207882, + "l": 310207882, + "m": false, + "p": "9030.56000000", + "q": "0.03764900" + }, + { + "M": true, + "T": 1588749153464, + "a": 284861585, + "f": 310207883, + "l": 310207883, + "m": true, + "p": "9030.00000000", + "q": "0.21386000" + }, + { + "M": true, + "T": 1588749153580, + "a": 284861586, + "f": 310207884, + "l": 310207884, + "m": true, + "p": "9030.00000000", + "q": "0.02000000" + }, + { + "M": true, + "T": 1588749153588, + "a": 284861587, + "f": 310207885, + "l": 310207885, + "m": false, + "p": "9030.46000000", + "q": "0.00661100" + }, + { + "M": true, + "T": 1588749153596, + "a": 284861588, + "f": 310207886, + "l": 310207886, + "m": true, + "p": "9030.00000000", + "q": "0.06007300" + }, + { + "M": true, + "T": 1588749153599, + "a": 284861589, + "f": 310207887, + "l": 310207887, + "m": true, + "p": "9030.00000000", + "q": "0.03155700" + }, + { + "M": true, + "T": 1588749153879, + "a": 284861590, + "f": 310207888, + "l": 310207888, + "m": true, + "p": "9030.00000000", + "q": "0.01076700" + }, + { + "M": true, + "T": 1588749153918, + "a": 284861591, + "f": 310207889, + "l": 310207889, + "m": true, + "p": "9030.00000000", + "q": "0.06000800" + }, + { + "M": true, + "T": 1588749154009, + "a": 284861592, + "f": 310207890, + "l": 310207890, + "m": true, + "p": "9030.00000000", + "q": "0.00221400" + }, + { + "M": true, + "T": 1588749154014, + "a": 284861593, + "f": 310207891, + "l": 310207891, + "m": true, + "p": "9030.00000000", + "q": "0.00221400" + }, + { + "M": true, + "T": 1588749154014, + "a": 284861594, + "f": 310207892, + "l": 310207892, + "m": true, + "p": "9030.00000000", + "q": "0.00221400" + }, + { + "M": true, + "T": 1588749154016, + "a": 284861595, + "f": 310207893, + "l": 310207893, + "m": true, + "p": "9030.00000000", + "q": "0.00221400" + }, + { + "M": true, + "T": 1588749154198, + "a": 284861596, + "f": 310207894, + "l": 310207894, + "m": true, + "p": "9030.00000000", + "q": "0.51193200" + }, + { + "M": true, + "T": 1588749154238, + "a": 284861597, + "f": 310207895, + "l": 310207895, + "m": true, + "p": "9030.00000000", + "q": "0.19464900" + }, + { + "M": true, + "T": 1588749154242, + "a": 284861598, + "f": 310207896, + "l": 310207896, + "m": true, + "p": "9030.00000000", + "q": "0.06028500" + }, + { + "M": true, + "T": 1588749154387, + "a": 284861599, + "f": 310207897, + "l": 310207897, + "m": true, + "p": "9030.00000000", + "q": "0.24213300" + }, + { + "M": true, + "T": 1588749154491, + "a": 284861600, + "f": 310207898, + "l": 310207898, + "m": true, + "p": "9030.00000000", + "q": "0.01246600" + }, + { + "M": true, + "T": 1588749154558, + "a": 284861601, + "f": 310207899, + "l": 310207899, + "m": true, + "p": "9030.00000000", + "q": "0.06013400" + }, + { + "M": true, + "T": 1588749154879, + "a": 284861602, + "f": 310207900, + "l": 310207900, + "m": true, + "p": "9030.00000000", + "q": "0.06014600" + }, + { + "M": true, + "T": 1588749155013, + "a": 284861603, + "f": 310207901, + "l": 310207901, + "m": true, + "p": "9030.00000000", + "q": "0.01009500" + }, + { + "M": true, + "T": 1588749155031, + "a": 284861604, + "f": 310207902, + "l": 310207902, + "m": true, + "p": "9030.00000000", + "q": "0.01009500" + }, + { + "M": true, + "T": 1588749155049, + "a": 284861605, + "f": 310207903, + "l": 310207903, + "m": true, + "p": "9030.00000000", + "q": "0.18295200" + }, + { + "M": true, + "T": 1588749155193, + "a": 284861606, + "f": 310207904, + "l": 310207904, + "m": true, + "p": "9030.00000000", + "q": "0.06021600" + }, + { + "M": true, + "T": 1588749155440, + "a": 284861607, + "f": 310207905, + "l": 310207905, + "m": true, + "p": "9030.00000000", + "q": "0.05764100" + }, + { + "M": true, + "T": 1588749155520, + "a": 284861608, + "f": 310207906, + "l": 310207906, + "m": true, + "p": "9030.00000000", + "q": "0.01923300" + }, + { + "M": true, + "T": 1588749155522, + "a": 284861609, + "f": 310207907, + "l": 310207907, + "m": true, + "p": "9030.00000000", + "q": "0.06022900" + }, + { + "M": true, + "T": 1588749155523, + "a": 284861610, + "f": 310207908, + "l": 310207908, + "m": true, + "p": "9030.00000000", + "q": "0.07692800" + }, + { + "M": true, + "T": 1588749155593, + "a": 284861611, + "f": 310207909, + "l": 310207909, + "m": true, + "p": "9030.00000000", + "q": "0.16911100" + }, + { + "M": true, + "T": 1588749155640, + "a": 284861612, + "f": 310207910, + "l": 310207910, + "m": true, + "p": "9030.00000000", + "q": "0.00127900" + }, + { + "M": true, + "T": 1588749155655, + "a": 284861613, + "f": 310207911, + "l": 310207911, + "m": false, + "p": "9030.01000000", + "q": "0.00923800" + }, + { + "M": true, + "T": 1588749155758, + "a": 284861614, + "f": 310207912, + "l": 310207912, + "m": true, + "p": "9030.00000000", + "q": "0.01550200" + }, + { + "M": true, + "T": 1588749155759, + "a": 284861615, + "f": 310207913, + "l": 310207913, + "m": true, + "p": "9030.00000000", + "q": "0.06137400" + }, + { + "M": true, + "T": 1588749155838, + "a": 284861616, + "f": 310207914, + "l": 310207914, + "m": true, + "p": "9030.00000000", + "q": "0.06012400" + }, + { + "M": true, + "T": 1588749155844, + "a": 284861617, + "f": 310207915, + "l": 310207915, + "m": true, + "p": "9030.00000000", + "q": "0.01105000" + }, + { + "M": true, + "T": 1588749156021, + "a": 284861618, + "f": 310207916, + "l": 310207916, + "m": true, + "p": "9030.00000000", + "q": "0.05082900" + }, + { + "M": true, + "T": 1588749156072, + "a": 284861619, + "f": 310207917, + "l": 310207917, + "m": true, + "p": "9030.00000000", + "q": "0.00707900" + }, + { + "M": true, + "T": 1588749156308, + "a": 284861620, + "f": 310207918, + "l": 310207918, + "m": true, + "p": "9030.00000000", + "q": "0.08380100" + }, + { + "M": true, + "T": 1588749156393, + "a": 284861621, + "f": 310207919, + "l": 310207919, + "m": true, + "p": "9030.00000000", + "q": "0.00848500" + }, + { + "M": true, + "T": 1588749156488, + "a": 284861622, + "f": 310207920, + "l": 310207920, + "m": true, + "p": "9030.00000000", + "q": "0.01010100" + }, + { + "M": true, + "T": 1588749156602, + "a": 284861623, + "f": 310207921, + "l": 310207921, + "m": true, + "p": "9030.00000000", + "q": "0.01010100" + }, + { + "M": true, + "T": 1588749156632, + "a": 284861624, + "f": 310207922, + "l": 310207922, + "m": true, + "p": "9030.00000000", + "q": "0.06001300" + }, + { + "M": true, + "T": 1588749156921, + "a": 284861625, + "f": 310207923, + "l": 310207923, + "m": true, + "p": "9030.00000000", + "q": "0.01558500" + }, + { + "M": true, + "T": 1588749156960, + "a": 284861626, + "f": 310207924, + "l": 310207924, + "m": true, + "p": "9030.00000000", + "q": "0.06025000" + }, + { + "M": true, + "T": 1588749157124, + "a": 284861627, + "f": 310207925, + "l": 310207925, + "m": false, + "p": "9030.10000000", + "q": "0.00838400" + }, + { + "M": true, + "T": 1588749157222, + "a": 284861628, + "f": 310207926, + "l": 310207926, + "m": false, + "p": "9030.14000000", + "q": "0.00850000" + }, + { + "M": true, + "T": 1588749157292, + "a": 284861629, + "f": 310207927, + "l": 310207927, + "m": true, + "p": "9030.13000000", + "q": "0.06004200" + }, + { + "M": true, + "T": 1588749157327, + "a": 284861630, + "f": 310207928, + "l": 310207928, + "m": false, + "p": "9030.14000000", + "q": "0.00149100" + }, + { + "M": true, + "T": 1588749157337, + "a": 284861631, + "f": 310207929, + "l": 310207929, + "m": true, + "p": "9030.13000000", + "q": "0.01010500" + }, + { + "M": true, + "T": 1588749157514, + "a": 284861632, + "f": 310207930, + "l": 310207930, + "m": true, + "p": "9030.13000000", + "q": "0.08157400" + }, + { + "M": true, + "T": 1588749157620, + "a": 284861633, + "f": 310207931, + "l": 310207931, + "m": true, + "p": "9030.13000000", + "q": "0.06024800" + }, + { + "M": true, + "T": 1588749157729, + "a": 284861634, + "f": 310207932, + "l": 310207932, + "m": false, + "p": "9030.14000000", + "q": "0.00000900" + }, + { + "M": true, + "T": 1588749157729, + "a": 284861635, + "f": 310207933, + "l": 310207933, + "m": false, + "p": "9031.27000000", + "q": "0.00134200" + }, + { + "M": true, + "T": 1588749157729, + "a": 284861636, + "f": 310207934, + "l": 310207934, + "m": false, + "p": "9031.40000000", + "q": "0.00063700" + }, + { + "M": true, + "T": 1588749157855, + "a": 284861637, + "f": 310207935, + "l": 310207935, + "m": false, + "p": "9031.02000000", + "q": "0.00700900" + }, + { + "M": true, + "T": 1588749157953, + "a": 284861638, + "f": 310207936, + "l": 310207936, + "m": true, + "p": "9030.14000000", + "q": "0.00221400" + }, + { + "M": true, + "T": 1588749157953, + "a": 284861639, + "f": 310207937, + "l": 310207937, + "m": true, + "p": "9030.00000000", + "q": "0.05814100" + }, + { + "M": true, + "T": 1588749157970, + "a": 284861640, + "f": 310207938, + "l": 310207938, + "m": false, + "p": "9030.82000000", + "q": "0.00783600" + }, + { + "M": true, + "T": 1588749157970, + "a": 284861641, + "f": 310207939, + "l": 310207939, + "m": false, + "p": "9030.95000000", + "q": "0.00066400" + }, + { + "M": true, + "T": 1588749158064, + "a": 284861642, + "f": 310207940, + "l": 310207940, + "m": false, + "p": "9030.88000000", + "q": "0.00594900" + }, + { + "M": true, + "T": 1588749158129, + "a": 284861643, + "f": 310207941, + "l": 310207941, + "m": true, + "p": "9030.00000000", + "q": "0.03350300" + }, + { + "M": true, + "T": 1588749158283, + "a": 284861644, + "f": 310207942, + "l": 310207942, + "m": true, + "p": "9030.00000000", + "q": "0.06016200" + }, + { + "M": true, + "T": 1588749158896, + "a": 284861645, + "f": 310207943, + "l": 310207943, + "m": true, + "p": "9030.00000000", + "q": "0.03124800" + }, + { + "M": true, + "T": 1588749159319, + "a": 284861646, + "f": 310207944, + "l": 310207944, + "m": true, + "p": "9030.01000000", + "q": "0.03108500" + }, + { + "M": true, + "T": 1588749159449, + "a": 284861647, + "f": 310207945, + "l": 310207945, + "m": false, + "p": "9030.29000000", + "q": "0.00999800" + }, + { + "M": true, + "T": 1588749159451, + "a": 284861648, + "f": 310207946, + "l": 310207946, + "m": true, + "p": "9030.01000000", + "q": "0.00486000" + }, + { + "M": true, + "T": 1588749159647, + "a": 284861649, + "f": 310207947, + "l": 310207947, + "m": true, + "p": "9030.01000000", + "q": "0.05024000" + }, + { + "M": true, + "T": 1588749159750, + "a": 284861650, + "f": 310207948, + "l": 310207948, + "m": false, + "p": "9030.25000000", + "q": "0.00123100" + }, + { + "M": true, + "T": 1588749160405, + "a": 284861651, + "f": 310207949, + "l": 310207949, + "m": true, + "p": "9030.01000000", + "q": "0.27841000" + }, + { + "M": true, + "T": 1588749160405, + "a": 284861652, + "f": 310207950, + "l": 310207950, + "m": true, + "p": "9030.00000000", + "q": "0.12159000" + }, + { + "M": true, + "T": 1588749160493, + "a": 284861653, + "f": 310207951, + "l": 310207951, + "m": true, + "p": "9030.00000000", + "q": "0.04555600" + }, + { + "M": true, + "T": 1588749160588, + "a": 284861654, + "f": 310207952, + "l": 310207952, + "m": true, + "p": "9030.00000000", + "q": "0.00442000" + }, + { + "M": true, + "T": 1588749160702, + "a": 284861655, + "f": 310207953, + "l": 310207953, + "m": true, + "p": "9030.00000000", + "q": "0.00416700" + }, + { + "M": true, + "T": 1588749160719, + "a": 284861656, + "f": 310207954, + "l": 310207954, + "m": true, + "p": "9030.00000000", + "q": "0.06012800" + }, + { + "M": true, + "T": 1588749160811, + "a": 284861657, + "f": 310207955, + "l": 310207955, + "m": true, + "p": "9030.00000000", + "q": "0.00392600" + }, + { + "M": true, + "T": 1588749160999, + "a": 284861658, + "f": 310207956, + "l": 310207956, + "m": false, + "p": "9030.01000000", + "q": "0.01159900" + }, + { + "M": true, + "T": 1588749161003, + "a": 284861659, + "f": 310207957, + "l": 310207957, + "m": true, + "p": "9030.00000000", + "q": "0.03930800" + }, + { + "M": true, + "T": 1588749161025, + "a": 284861660, + "f": 310207958, + "l": 310207958, + "m": true, + "p": "9030.00000000", + "q": "0.06053000" + }, + { + "M": true, + "T": 1588749161337, + "a": 284861661, + "f": 310207959, + "l": 310207959, + "m": true, + "p": "9030.00000000", + "q": "0.06054300" + }, + { + "M": true, + "T": 1588749161443, + "a": 284861662, + "f": 310207960, + "l": 310207960, + "m": true, + "p": "9030.00000000", + "q": "0.00306400" + }, + { + "M": true, + "T": 1588749161651, + "a": 284861663, + "f": 310207961, + "l": 310207961, + "m": true, + "p": "9030.00000000", + "q": "0.06004300" + }, + { + "M": true, + "T": 1588749161749, + "a": 284861664, + "f": 310207962, + "l": 310207962, + "m": true, + "p": "9030.00000000", + "q": "0.00221500" + }, + { + "M": true, + "T": 1588749161753, + "a": 284861665, + "f": 310207963, + "l": 310207963, + "m": true, + "p": "9030.00000000", + "q": "0.00221500" + }, + { + "M": true, + "T": 1588749161757, + "a": 284861666, + "f": 310207964, + "l": 310207964, + "m": true, + "p": "9030.00000000", + "q": "0.00221500" + }, + { + "M": true, + "T": 1588749161857, + "a": 284861667, + "f": 310207965, + "l": 310207966, + "m": true, + "p": "9030.00000000", + "q": "0.00221500" + }, + { + "M": true, + "T": 1588749161960, + "a": 284861668, + "f": 310207967, + "l": 310207967, + "m": true, + "p": "9030.00000000", + "q": "0.06018100" + }, + { + "M": true, + "T": 1588749162264, + "a": 284861669, + "f": 310207968, + "l": 310207969, + "m": true, + "p": "9030.00000000", + "q": "0.06023400" + }, + { + "M": true, + "T": 1588749162311, + "a": 284861670, + "f": 310207970, + "l": 310207974, + "m": true, + "p": "9030.00000000", + "q": "0.11818400" + }, + { + "M": true, + "T": 1588749162370, + "a": 284861671, + "f": 310207975, + "l": 310207975, + "m": true, + "p": "9030.00000000", + "q": "0.00000900" + }, + { + "M": true, + "T": 1588749162415, + "a": 284861672, + "f": 310207976, + "l": 310207976, + "m": true, + "p": "9029.71000000", + "q": "0.00299300" + }, + { + "M": true, + "T": 1588749162529, + "a": 284861673, + "f": 310207977, + "l": 310207977, + "m": false, + "p": "9029.72000000", + "q": "0.00735500" + }, + { + "M": true, + "T": 1588749162580, + "a": 284861674, + "f": 310207978, + "l": 310207978, + "m": true, + "p": "9029.71000000", + "q": "0.00000700" + }, + { + "M": true, + "T": 1588749162580, + "a": 284861675, + "f": 310207979, + "l": 310207979, + "m": true, + "p": "9029.23000000", + "q": "0.06015900" + }, + { + "M": true, + "T": 1588749162901, + "a": 284861676, + "f": 310207980, + "l": 310207980, + "m": true, + "p": "9029.00000000", + "q": "0.00228000" + }, + { + "M": true, + "T": 1588749162901, + "a": 284861677, + "f": 310207981, + "l": 310207981, + "m": true, + "p": "9028.69000000", + "q": "0.00300000" + }, + { + "M": true, + "T": 1588749162901, + "a": 284861678, + "f": 310207982, + "l": 310207982, + "m": true, + "p": "9028.62000000", + "q": "0.01250000" + }, + { + "M": true, + "T": 1588749162901, + "a": 284861679, + "f": 310207983, + "l": 310207983, + "m": true, + "p": "9028.57000000", + "q": "0.00113500" + }, + { + "M": true, + "T": 1588749162901, + "a": 284861680, + "f": 310207984, + "l": 310207984, + "m": true, + "p": "9028.07000000", + "q": "0.04154100" + }, + { + "M": true, + "T": 1588749163133, + "a": 284861681, + "f": 310207985, + "l": 310207985, + "m": false, + "p": "9029.06000000", + "q": "0.00358300" + }, + { + "M": true, + "T": 1588749163230, + "a": 284861682, + "f": 310207986, + "l": 310207986, + "m": true, + "p": "9028.05000000", + "q": "0.06013300" + }, + { + "M": true, + "T": 1588749163239, + "a": 284861683, + "f": 310207987, + "l": 310207987, + "m": false, + "p": "9028.53000000", + "q": "0.00400600" + }, + { + "M": true, + "T": 1588749163275, + "a": 284861684, + "f": 310207988, + "l": 310207988, + "m": false, + "p": "9028.52000000", + "q": "0.00221500" + }, + { + "M": true, + "T": 1588749163337, + "a": 284861685, + "f": 310207989, + "l": 310207989, + "m": false, + "p": "9028.52000000", + "q": "0.00837900" + }, + { + "M": true, + "T": 1588749163467, + "a": 284861686, + "f": 310207990, + "l": 310207990, + "m": false, + "p": "9028.53000000", + "q": "0.00292400" + }, + { + "M": true, + "T": 1588749163559, + "a": 284861687, + "f": 310207991, + "l": 310207991, + "m": true, + "p": "9028.27000000", + "q": "0.06025000" + }, + { + "M": true, + "T": 1588749163881, + "a": 284861688, + "f": 310207992, + "l": 310207992, + "m": true, + "p": "9028.46000000", + "q": "0.06006900" + }, + { + "M": true, + "T": 1588749164130, + "a": 284861689, + "f": 310207993, + "l": 310207993, + "m": false, + "p": "9028.53000000", + "q": "0.00307000" + }, + { + "M": true, + "T": 1588749164130, + "a": 284861690, + "f": 310207994, + "l": 310207994, + "m": false, + "p": "9029.01000000", + "q": "0.00305300" + }, + { + "M": true, + "T": 1588749164130, + "a": 284861691, + "f": 310207995, + "l": 310207995, + "m": false, + "p": "9029.62000000", + "q": "0.00663900" + }, + { + "M": true, + "T": 1588749164130, + "a": 284861692, + "f": 310207996, + "l": 310207996, + "m": false, + "p": "9029.99000000", + "q": "0.01606500" + }, + { + "M": true, + "T": 1588749164130, + "a": 284861693, + "f": 310207997, + "l": 310207997, + "m": false, + "p": "9030.22000000", + "q": "0.07117300" + }, + { + "M": true, + "T": 1588749164256, + "a": 284861694, + "f": 310207998, + "l": 310207998, + "m": true, + "p": "9029.59000000", + "q": "0.06667600" + }, + { + "M": true, + "T": 1588749164351, + "a": 284861695, + "f": 310207999, + "l": 310207999, + "m": false, + "p": "9029.60000000", + "q": "0.00221000" + }, + { + "M": true, + "T": 1588749164583, + "a": 284861696, + "f": 310208000, + "l": 310208000, + "m": true, + "p": "9029.59000000", + "q": "0.06000800" + }, + { + "M": true, + "T": 1588749164626, + "a": 284861697, + "f": 310208001, + "l": 310208001, + "m": true, + "p": "9029.59000000", + "q": "0.10000000" + }, + { + "M": true, + "T": 1588749164727, + "a": 284861698, + "f": 310208002, + "l": 310208003, + "m": false, + "p": "9029.60000000", + "q": "0.00273300" + }, + { + "M": true, + "T": 1588749164911, + "a": 284861699, + "f": 310208004, + "l": 310208004, + "m": true, + "p": "9029.66000000", + "q": "0.06038200" + }, + { + "M": true, + "T": 1588749165074, + "a": 284861700, + "f": 310208005, + "l": 310208005, + "m": false, + "p": "9029.71000000", + "q": "0.00299000" + }, + { + "M": true, + "T": 1588749165238, + "a": 284861701, + "f": 310208006, + "l": 310208006, + "m": true, + "p": "9029.70000000", + "q": "0.06034200" + }, + { + "M": true, + "T": 1588749165807, + "a": 284861702, + "f": 310208007, + "l": 310208007, + "m": true, + "p": "9029.70000000", + "q": "0.05960000" + }, + { + "M": true, + "T": 1588749165894, + "a": 284861703, + "f": 310208008, + "l": 310208008, + "m": true, + "p": "9029.70000000", + "q": "0.00442600" + }, + { + "M": true, + "T": 1588749165943, + "a": 284861704, + "f": 310208009, + "l": 310208010, + "m": true, + "p": "9029.70000000", + "q": "1.00000000" + }, + { + "M": true, + "T": 1588749165991, + "a": 284861705, + "f": 310208011, + "l": 310208011, + "m": true, + "p": "9029.70000000", + "q": "0.00882800" + }, + { + "M": true, + "T": 1588749166124, + "a": 284861706, + "f": 310208012, + "l": 310208013, + "m": false, + "p": "9029.71000000", + "q": "0.17700100" + }, + { + "M": true, + "T": 1588749166313, + "a": 284861707, + "f": 310208014, + "l": 310208014, + "m": true, + "p": "9030.28000000", + "q": "0.00823000" + }, + { + "M": true, + "T": 1588749166325, + "a": 284861708, + "f": 310208015, + "l": 310208016, + "m": false, + "p": "9030.29000000", + "q": "0.00303900" + }, + { + "M": true, + "T": 1588749166452, + "a": 284861709, + "f": 310208017, + "l": 310208017, + "m": true, + "p": "9030.28000000", + "q": "0.26800000" + }, + { + "M": true, + "T": 1588749166511, + "a": 284861710, + "f": 310208018, + "l": 310208018, + "m": true, + "p": "9030.28000000", + "q": "0.00684500" + }, + { + "M": true, + "T": 1588749166622, + "a": 284861711, + "f": 310208019, + "l": 310208020, + "m": false, + "p": "9030.29000000", + "q": "0.06007000" + }, + { + "M": true, + "T": 1588749166727, + "a": 284861712, + "f": 310208021, + "l": 310208021, + "m": true, + "p": "9029.86000000", + "q": "0.12132600" + }, + { + "M": true, + "T": 1588749166939, + "a": 284861713, + "f": 310208022, + "l": 310208022, + "m": true, + "p": "9030.00000000", + "q": "0.00553700" + }, + { + "M": true, + "T": 1588749166965, + "a": 284861714, + "f": 310208023, + "l": 310208023, + "m": true, + "p": "9030.00000000", + "q": "0.00457000" + }, + { + "M": true, + "T": 1588749167035, + "a": 284861715, + "f": 310208024, + "l": 310208024, + "m": true, + "p": "9030.00000000", + "q": "0.00166200" + }, + { + "M": true, + "T": 1588749167223, + "a": 284861716, + "f": 310208025, + "l": 310208025, + "m": false, + "p": "9030.50000000", + "q": "0.00925000" + }, + { + "M": true, + "T": 1588749167270, + "a": 284861717, + "f": 310208026, + "l": 310208026, + "m": true, + "p": "9030.64000000", + "q": "0.01935600" + }, + { + "M": true, + "T": 1588749167270, + "a": 284861718, + "f": 310208027, + "l": 310208027, + "m": true, + "p": "9030.01000000", + "q": "0.35077700" + }, + { + "M": true, + "T": 1588749167778, + "a": 284861719, + "f": 310208028, + "l": 310208028, + "m": true, + "p": "9030.00000000", + "q": "0.00005900" + }, + { + "M": true, + "T": 1588749167778, + "a": 284861720, + "f": 310208029, + "l": 310208029, + "m": true, + "p": "9029.71000000", + "q": "0.00221500" + }, + { + "M": true, + "T": 1588749167778, + "a": 284861721, + "f": 310208030, + "l": 310208030, + "m": true, + "p": "9029.67000000", + "q": "0.00789600" + }, + { + "M": true, + "T": 1588749167778, + "a": 284861722, + "f": 310208031, + "l": 310208031, + "m": true, + "p": "9029.55000000", + "q": "0.08241600" + }, + { + "M": true, + "T": 1588749168088, + "a": 284861723, + "f": 310208032, + "l": 310208032, + "m": true, + "p": "9029.28000000", + "q": "0.00219700" + }, + { + "M": true, + "T": 1588749168181, + "a": 284861724, + "f": 310208033, + "l": 310208033, + "m": true, + "p": "9029.28000000", + "q": "0.00001700" + }, + { + "M": true, + "T": 1588749168181, + "a": 284861725, + "f": 310208034, + "l": 310208034, + "m": true, + "p": "9028.69000000", + "q": "0.00300000" + }, + { + "M": true, + "T": 1588749168181, + "a": 284861726, + "f": 310208035, + "l": 310208035, + "m": true, + "p": "9028.60000000", + "q": "0.06910600" + }, + { + "M": true, + "T": 1588749168419, + "a": 284861727, + "f": 310208036, + "l": 310208036, + "m": true, + "p": "9028.69000000", + "q": "0.00673500" + }, + { + "M": true, + "T": 1588749168656, + "a": 284861728, + "f": 310208037, + "l": 310208037, + "m": true, + "p": "9028.72000000", + "q": "0.00221400" + }, + { + "M": true, + "T": 1588749168656, + "a": 284861729, + "f": 310208038, + "l": 310208038, + "m": true, + "p": "9028.71000000", + "q": "0.07357200" + }, + { + "M": true, + "T": 1588749168702, + "a": 284861730, + "f": 310208039, + "l": 310208039, + "m": true, + "p": "9028.87000000", + "q": "0.00664800" + }, + { + "M": true, + "T": 1588749168702, + "a": 284861731, + "f": 310208040, + "l": 310208040, + "m": true, + "p": "9028.78000000", + "q": "0.08819000" + }, + { + "M": true, + "T": 1588749168818, + "a": 284861732, + "f": 310208041, + "l": 310208041, + "m": false, + "p": "9029.63000000", + "q": "0.00221400" + }, + { + "M": true, + "T": 1588749168922, + "a": 284861733, + "f": 310208042, + "l": 310208042, + "m": true, + "p": "9030.14000000", + "q": "0.01921500" + }, + { + "M": true, + "T": 1588749168954, + "a": 284861734, + "f": 310208043, + "l": 310208043, + "m": true, + "p": "9030.14000000", + "q": "0.01263700" + }, + { + "M": true, + "T": 1588749168954, + "a": 284861735, + "f": 310208044, + "l": 310208044, + "m": true, + "p": "9029.28000000", + "q": "0.01920800" + }, + { + "M": true, + "T": 1588749169018, + "a": 284861736, + "f": 310208045, + "l": 310208045, + "m": true, + "p": "9029.28000000", + "q": "0.01925200" + }, + { + "M": true, + "T": 1588749169035, + "a": 284861737, + "f": 310208046, + "l": 310208046, + "m": true, + "p": "9029.28000000", + "q": "0.06029800" + }, + { + "M": true, + "T": 1588749169131, + "a": 284861738, + "f": 310208047, + "l": 310208047, + "m": true, + "p": "9029.29000000", + "q": "0.01918300" + }, + { + "M": true, + "T": 1588749169359, + "a": 284861739, + "f": 310208048, + "l": 310208048, + "m": true, + "p": "9029.29000000", + "q": "0.06021300" + }, + { + "M": true, + "T": 1588749169408, + "a": 284861740, + "f": 310208049, + "l": 310208049, + "m": false, + "p": "9029.99000000", + "q": "0.10580000" + }, + { + "M": true, + "T": 1588749169473, + "a": 284861741, + "f": 310208050, + "l": 310208050, + "m": true, + "p": "9029.33000000", + "q": "0.17701100" + }, + { + "M": true, + "T": 1588749169473, + "a": 284861742, + "f": 310208051, + "l": 310208051, + "m": true, + "p": "9029.29000000", + "q": "0.03196700" + }, + { + "M": true, + "T": 1588749169918, + "a": 284861743, + "f": 310208052, + "l": 310208052, + "m": false, + "p": "9030.22000000", + "q": "0.00221400" + }, + { + "M": true, + "T": 1588749169918, + "a": 284861744, + "f": 310208053, + "l": 310208053, + "m": false, + "p": "9030.23000000", + "q": "0.01057900" + }, + { + "M": true, + "T": 1588749170467, + "a": 284861745, + "f": 310208054, + "l": 310208054, + "m": true, + "p": "9029.35000000", + "q": "0.32759400" + }, + { + "M": true, + "T": 1588749170467, + "a": 284861746, + "f": 310208055, + "l": 310208055, + "m": true, + "p": "9029.30000000", + "q": "0.00221400" + }, + { + "M": true, + "T": 1588749170619, + "a": 284861747, + "f": 310208056, + "l": 310208056, + "m": false, + "p": "9029.71000000", + "q": "0.00299300" + }, + { + "M": true, + "T": 1588749170629, + "a": 284861748, + "f": 310208057, + "l": 310208057, + "m": true, + "p": "9029.05000000", + "q": "0.00128200" + }, + { + "M": true, + "T": 1588749170758, + "a": 284861749, + "f": 310208058, + "l": 310208058, + "m": true, + "p": "9029.14000000", + "q": "0.17701600" + }, + { + "M": true, + "T": 1588749170758, + "a": 284861750, + "f": 310208059, + "l": 310208059, + "m": true, + "p": "9029.10000000", + "q": "0.07728000" + }, + { + "M": true, + "T": 1588749171148, + "a": 284861751, + "f": 310208060, + "l": 310208061, + "m": true, + "p": "9029.14000000", + "q": "0.00397000" + }, + { + "M": true, + "T": 1588749171148, + "a": 284861752, + "f": 310208062, + "l": 310208062, + "m": true, + "p": "9029.13000000", + "q": "0.06616600" + }, + { + "M": true, + "T": 1588749171458, + "a": 284861753, + "f": 310208063, + "l": 310208063, + "m": true, + "p": "9029.00000000", + "q": "0.01107500" + }, + { + "M": true, + "T": 1588749171667, + "a": 284861754, + "f": 310208064, + "l": 310208064, + "m": true, + "p": "9029.14000000", + "q": "0.01107500" + }, + { + "M": true, + "T": 1588749171667, + "a": 284861755, + "f": 310208065, + "l": 310208065, + "m": true, + "p": "9028.63000000", + "q": "0.08284200" + }, + { + "M": true, + "T": 1588749172462, + "a": 284861756, + "f": 310208066, + "l": 310208066, + "m": true, + "p": "9029.69000000", + "q": "0.59892900" + }, + { + "M": true, + "T": 1588749172668, + "a": 284861757, + "f": 310208067, + "l": 310208067, + "m": false, + "p": "9029.70000000", + "q": "0.00221400" + }, + { + "M": true, + "T": 1588749172759, + "a": 284861758, + "f": 310208068, + "l": 310208068, + "m": false, + "p": "9029.71000000", + "q": "0.00000700" + }, + { + "M": true, + "T": 1588749172759, + "a": 284861759, + "f": 310208069, + "l": 310208069, + "m": false, + "p": "9030.15000000", + "q": "0.00283300" + }, + { + "M": true, + "T": 1588749172770, + "a": 284861760, + "f": 310208070, + "l": 310208070, + "m": false, + "p": "9030.15000000", + "q": "0.00581000" + }, + { + "M": true, + "T": 1588749172770, + "a": 284861761, + "f": 310208071, + "l": 310208071, + "m": false, + "p": "9030.15000000", + "q": "0.00001100" + }, + { + "M": true, + "T": 1588749172770, + "a": 284861762, + "f": 310208072, + "l": 310208072, + "m": false, + "p": "9030.22000000", + "q": "0.00284200" + }, + { + "M": true, + "T": 1588749172770, + "a": 284861763, + "f": 310208073, + "l": 310208073, + "m": false, + "p": "9030.48000000", + "q": "0.13826700" + }, + { + "M": true, + "T": 1588749172770, + "a": 284861764, + "f": 310208074, + "l": 310208074, + "m": false, + "p": "9030.72000000", + "q": "0.00300000" + }, + { + "M": true, + "T": 1588749172770, + "a": 284861765, + "f": 310208075, + "l": 310208075, + "m": false, + "p": "9030.92000000", + "q": "1.09097100" + }, + { + "M": true, + "T": 1588749172855, + "a": 284861766, + "f": 310208076, + "l": 310208076, + "m": true, + "p": "9030.91000000", + "q": "0.00471100" + }, + { + "M": true, + "T": 1588749172895, + "a": 284861767, + "f": 310208077, + "l": 310208077, + "m": false, + "p": "9030.92000000", + "q": "0.04000000" + }, + { + "M": true, + "T": 1588749172903, + "a": 284861768, + "f": 310208078, + "l": 310208078, + "m": false, + "p": "9030.92000000", + "q": "0.01000000" + }, + { + "M": true, + "T": 1588749172925, + "a": 284861769, + "f": 310208079, + "l": 310208079, + "m": false, + "p": "9030.92000000", + "q": "0.02000000" + }, + { + "M": true, + "T": 1588749172935, + "a": 284861770, + "f": 310208080, + "l": 310208080, + "m": false, + "p": "9030.92000000", + "q": "0.38343400" + }, + { + "M": true, + "T": 1588749172935, + "a": 284861771, + "f": 310208081, + "l": 310208081, + "m": false, + "p": "9031.55000000", + "q": "0.15145900" + }, + { + "M": true, + "T": 1588749172935, + "a": 284861772, + "f": 310208082, + "l": 310208082, + "m": false, + "p": "9031.73000000", + "q": "0.00300000" + }, + { + "M": true, + "T": 1588749172935, + "a": 284861773, + "f": 310208083, + "l": 310208083, + "m": false, + "p": "9031.84000000", + "q": "0.14823200" + }, + { + "M": true, + "T": 1588749172935, + "a": 284861774, + "f": 310208084, + "l": 310208084, + "m": false, + "p": "9031.95000000", + "q": "0.00551900" + }, + { + "M": true, + "T": 1588749172935, + "a": 284861775, + "f": 310208085, + "l": 310208085, + "m": false, + "p": "9032.60000000", + "q": "0.28786800" + }, + { + "M": true, + "T": 1588749172948, + "a": 284861776, + "f": 310208086, + "l": 310208086, + "m": false, + "p": "9032.60000000", + "q": "0.01106100" + }, + { + "M": true, + "T": 1588749172985, + "a": 284861777, + "f": 310208087, + "l": 310208087, + "m": true, + "p": "9030.95000000", + "q": "0.00386600" + }, + { + "M": true, + "T": 1588749174034, + "a": 284861778, + "f": 310208088, + "l": 310208088, + "m": true, + "p": "9031.60000000", + "q": "0.40000000" + }, + { + "M": true, + "T": 1588749174144, + "a": 284861779, + "f": 310208089, + "l": 310208089, + "m": true, + "p": "9031.69000000", + "q": "0.00221400" + }, + { + "M": true, + "T": 1588749174144, + "a": 284861780, + "f": 310208090, + "l": 310208090, + "m": true, + "p": "9031.68000000", + "q": "0.01907000" + }, + { + "M": true, + "T": 1588749174360, + "a": 284861781, + "f": 310208091, + "l": 310208091, + "m": true, + "p": "9031.73000000", + "q": "0.06025900" + }, + { + "M": true, + "T": 1588749174470, + "a": 284861782, + "f": 310208092, + "l": 310208092, + "m": true, + "p": "9031.74000000", + "q": "0.07190000" + }, + { + "M": true, + "T": 1588749174471, + "a": 284861783, + "f": 310208093, + "l": 310208093, + "m": true, + "p": "9031.74000000", + "q": "0.01012100" + }, + { + "M": true, + "T": 1588749174691, + "a": 284861784, + "f": 310208094, + "l": 310208094, + "m": true, + "p": "9031.76000000", + "q": "0.06018300" + }, + { + "M": true, + "T": 1588749174893, + "a": 284861785, + "f": 310208095, + "l": 310208095, + "m": true, + "p": "9031.71000000", + "q": "0.00183500" + }, + { + "M": true, + "T": 1588749174951, + "a": 284861786, + "f": 310208096, + "l": 310208096, + "m": false, + "p": "9032.38000000", + "q": "0.00813600" + }, + { + "M": true, + "T": 1588749174951, + "a": 284861787, + "f": 310208097, + "l": 310208097, + "m": false, + "p": "9032.41000000", + "q": "0.08561700" + }, + { + "M": true, + "T": 1588749175014, + "a": 284861788, + "f": 310208098, + "l": 310208098, + "m": true, + "p": "9031.72000000", + "q": "0.00833700" + }, + { + "M": true, + "T": 1588749175027, + "a": 284861789, + "f": 310208099, + "l": 310208099, + "m": true, + "p": "9031.72000000", + "q": "0.06007900" + }, + { + "M": true, + "T": 1588749175413, + "a": 284861790, + "f": 310208100, + "l": 310208100, + "m": true, + "p": "9031.73000000", + "q": "0.00361500" + }, + { + "M": true, + "T": 1588749175521, + "a": 284861791, + "f": 310208101, + "l": 310208101, + "m": true, + "p": "9031.72000000", + "q": "0.01195000" + }, + { + "M": true, + "T": 1588749175638, + "a": 284861792, + "f": 310208102, + "l": 310208102, + "m": true, + "p": "9031.72000000", + "q": "0.01195000" + }, + { + "M": true, + "T": 1588749175738, + "a": 284861793, + "f": 310208103, + "l": 310208103, + "m": true, + "p": "9031.72000000", + "q": "0.00620400" + }, + { + "M": true, + "T": 1588749175859, + "a": 284861794, + "f": 310208104, + "l": 310208104, + "m": true, + "p": "9031.71000000", + "q": "0.00037900" + }, + { + "M": true, + "T": 1588749175859, + "a": 284861795, + "f": 310208105, + "l": 310208105, + "m": true, + "p": "9031.18000000", + "q": "0.14937600" + }, + { + "M": true, + "T": 1588749176155, + "a": 284861796, + "f": 310208106, + "l": 310208106, + "m": true, + "p": "9031.23000000", + "q": "0.00200000" + }, + { + "M": true, + "T": 1588749176260, + "a": 284861797, + "f": 310208107, + "l": 310208107, + "m": true, + "p": "9031.34000000", + "q": "0.00404000" + }, + { + "M": true, + "T": 1588749176571, + "a": 284861798, + "f": 310208108, + "l": 310208108, + "m": true, + "p": "9031.29000000", + "q": "0.00362200" + }, + { + "M": true, + "T": 1588749177264, + "a": 284861799, + "f": 310208109, + "l": 310208109, + "m": true, + "p": "9032.16000000", + "q": "0.25585300" + }, + { + "M": true, + "T": 1588749177530, + "a": 284861800, + "f": 310208110, + "l": 310208110, + "m": false, + "p": "9032.17000000", + "q": "0.00118200" + }, + { + "M": true, + "T": 1588749178041, + "a": 284861801, + "f": 310208111, + "l": 310208111, + "m": true, + "p": "9032.16000000", + "q": "0.00767600" + }, + { + "M": true, + "T": 1588749178152, + "a": 284861802, + "f": 310208112, + "l": 310208112, + "m": true, + "p": "9032.16000000", + "q": "0.04455800" + }, + { + "M": true, + "T": 1588749179063, + "a": 284861803, + "f": 310208113, + "l": 310208113, + "m": false, + "p": "9032.17000000", + "q": "0.00103200" + }, + { + "M": true, + "T": 1588749179063, + "a": 284861804, + "f": 310208114, + "l": 310208114, + "m": false, + "p": "9032.65000000", + "q": "0.00018500" + }, + { + "M": true, + "T": 1588749179079, + "a": 284861805, + "f": 310208115, + "l": 310208115, + "m": false, + "p": "9032.65000000", + "q": "0.00277000" + }, + { + "M": true, + "T": 1588749179107, + "a": 284861806, + "f": 310208116, + "l": 310208116, + "m": false, + "p": "9032.65000000", + "q": "0.00004500" + }, + { + "M": true, + "T": 1588749179107, + "a": 284861807, + "f": 310208117, + "l": 310208117, + "m": false, + "p": "9032.75000000", + "q": "0.00216600" + }, + { + "M": true, + "T": 1588749179209, + "a": 284861808, + "f": 310208118, + "l": 310208118, + "m": true, + "p": "9032.74000000", + "q": "0.00208000" + }, + { + "M": true, + "T": 1588749179484, + "a": 284861809, + "f": 310208119, + "l": 310208119, + "m": true, + "p": "9032.74000000", + "q": "0.00330000" + }, + { + "M": true, + "T": 1588749180143, + "a": 284861810, + "f": 310208120, + "l": 310208120, + "m": true, + "p": "9032.74000000", + "q": "0.01435000" + }, + { + "M": true, + "T": 1588749180560, + "a": 284861811, + "f": 310208121, + "l": 310208121, + "m": false, + "p": "9032.75000000", + "q": "0.00083400" + }, + { + "M": true, + "T": 1588749180560, + "a": 284861812, + "f": 310208122, + "l": 310208122, + "m": false, + "p": "9033.76000000", + "q": "0.00300000" + }, + { + "M": true, + "T": 1588749180560, + "a": 284861813, + "f": 310208123, + "l": 310208123, + "m": false, + "p": "9034.18000000", + "q": "0.00883000" + }, + { + "M": true, + "T": 1588749180560, + "a": 284861814, + "f": 310208124, + "l": 310208124, + "m": false, + "p": "9034.26000000", + "q": "0.02900000" + }, + { + "M": true, + "T": 1588749180560, + "a": 284861815, + "f": 310208125, + "l": 310208125, + "m": false, + "p": "9034.69000000", + "q": "0.00113500" + }, + { + "M": true, + "T": 1588749180560, + "a": 284861816, + "f": 310208126, + "l": 310208126, + "m": false, + "p": "9034.77000000", + "q": "0.00957400" + }, + { + "M": true, + "T": 1588749180560, + "a": 284861817, + "f": 310208127, + "l": 310208129, + "m": false, + "p": "9034.78000000", + "q": "0.10237900" + }, + { + "M": true, + "T": 1588749180560, + "a": 284861818, + "f": 310208130, + "l": 310208130, + "m": false, + "p": "9034.81000000", + "q": "0.20000000" + }, + { + "M": true, + "T": 1588749180560, + "a": 284861819, + "f": 310208131, + "l": 310208131, + "m": false, + "p": "9035.00000000", + "q": "0.15961000" + }, + { + "M": true, + "T": 1588749180560, + "a": 284861820, + "f": 310208132, + "l": 310208132, + "m": false, + "p": "9035.06000000", + "q": "1.03374700" + }, + { + "M": true, + "T": 1588749180606, + "a": 284861821, + "f": 310208133, + "l": 310208133, + "m": true, + "p": "9032.88000000", + "q": "0.00350000" + }, + { + "M": true, + "T": 1588749180904, + "a": 284861822, + "f": 310208134, + "l": 310208134, + "m": true, + "p": "9033.19000000", + "q": "0.00221300" + }, + { + "M": true, + "T": 1588749180904, + "a": 284861823, + "f": 310208135, + "l": 310208135, + "m": true, + "p": "9033.18000000", + "q": "0.00633000" + }, + { + "M": true, + "T": 1588749181631, + "a": 284861824, + "f": 310208136, + "l": 310208136, + "m": true, + "p": "9033.21000000", + "q": "0.00182700" + }, + { + "M": true, + "T": 1588749181792, + "a": 284861825, + "f": 310208137, + "l": 310208137, + "m": true, + "p": "9033.21000000", + "q": "0.00038600" + }, + { + "M": true, + "T": 1588749181792, + "a": 284861826, + "f": 310208138, + "l": 310208138, + "m": true, + "p": "9032.76000000", + "q": "0.00085100" + }, + { + "M": true, + "T": 1588749181841, + "a": 284861827, + "f": 310208139, + "l": 310208139, + "m": true, + "p": "9032.76000000", + "q": "0.00307900" + }, + { + "M": true, + "T": 1588749181949, + "a": 284861828, + "f": 310208140, + "l": 310208140, + "m": true, + "p": "9033.22000000", + "q": "0.00307900" + }, + { + "M": true, + "T": 1588749181998, + "a": 284861829, + "f": 310208141, + "l": 310208141, + "m": false, + "p": "9033.71000000", + "q": "0.00421400" + }, + { + "M": true, + "T": 1588749182068, + "a": 284861830, + "f": 310208142, + "l": 310208142, + "m": false, + "p": "9033.71000000", + "q": "0.00317800" + }, + { + "M": true, + "T": 1588749182072, + "a": 284861831, + "f": 310208143, + "l": 310208143, + "m": true, + "p": "9033.24000000", + "q": "0.00765400" + }, + { + "M": true, + "T": 1588749182581, + "a": 284861832, + "f": 310208144, + "l": 310208144, + "m": true, + "p": "9033.75000000", + "q": "0.24648500" + }, + { + "M": true, + "T": 1588749182790, + "a": 284861833, + "f": 310208145, + "l": 310208145, + "m": false, + "p": "9033.76000000", + "q": "0.00421400" + }, + { + "M": true, + "T": 1588749182891, + "a": 284861834, + "f": 310208146, + "l": 310208146, + "m": true, + "p": "9033.76000000", + "q": "0.00221300" + }, + { + "M": true, + "T": 1588749182893, + "a": 284861835, + "f": 310208147, + "l": 310208147, + "m": true, + "p": "9033.64000000", + "q": "0.00955500" + }, + { + "M": true, + "T": 1588749182893, + "a": 284861836, + "f": 310208148, + "l": 310208148, + "m": true, + "p": "9033.22000000", + "q": "0.00010600" + }, + { + "M": true, + "T": 1588749182893, + "a": 284861837, + "f": 310208149, + "l": 310208149, + "m": true, + "p": "9032.77000000", + "q": "0.29499900" + }, + { + "M": true, + "T": 1588749182893, + "a": 284861838, + "f": 310208150, + "l": 310208150, + "m": true, + "p": "9032.18000000", + "q": "0.09534000" + }, + { + "M": true, + "T": 1588749183145, + "a": 284861839, + "f": 310208151, + "l": 310208151, + "m": true, + "p": "9033.39000000", + "q": "0.00221300" + }, + { + "M": true, + "T": 1588749183145, + "a": 284861840, + "f": 310208152, + "l": 310208152, + "m": true, + "p": "9032.28000000", + "q": "0.01702400" + }, + { + "M": true, + "T": 1588749183147, + "a": 284861841, + "f": 310208153, + "l": 310208153, + "m": true, + "p": "9032.28000000", + "q": "0.07709700" + }, + { + "M": true, + "T": 1588749183156, + "a": 284861842, + "f": 310208154, + "l": 310208154, + "m": true, + "p": "9032.28000000", + "q": "0.17355100" + }, + { + "M": true, + "T": 1588749183277, + "a": 284861843, + "f": 310208155, + "l": 310208155, + "m": true, + "p": "9032.36000000", + "q": "0.06949500" + }, + { + "M": true, + "T": 1588749183300, + "a": 284861844, + "f": 310208156, + "l": 310208156, + "m": false, + "p": "9033.73000000", + "q": "0.00300000" + }, + { + "M": true, + "T": 1588749183418, + "a": 284861845, + "f": 310208157, + "l": 310208157, + "m": false, + "p": "9033.15000000", + "q": "0.00719000" + }, + { + "M": true, + "T": 1588749183418, + "a": 284861846, + "f": 310208158, + "l": 310208159, + "m": false, + "p": "9033.66000000", + "q": "0.14309000" + }, + { + "M": true, + "T": 1588749183418, + "a": 284861847, + "f": 310208160, + "l": 310208160, + "m": false, + "p": "9033.67000000", + "q": "0.02665900" + }, + { + "M": true, + "T": 1588749183515, + "a": 284861848, + "f": 310208161, + "l": 310208161, + "m": false, + "p": "9033.28000000", + "q": "0.00839500" + }, + { + "M": true, + "T": 1588749183515, + "a": 284861849, + "f": 310208162, + "l": 310208162, + "m": false, + "p": "9033.65000000", + "q": "0.15058300" + }, + { + "M": true, + "T": 1588749183603, + "a": 284861850, + "f": 310208163, + "l": 310208163, + "m": true, + "p": "9032.10000000", + "q": "0.00953500" + }, + { + "M": true, + "T": 1588749183603, + "a": 284861851, + "f": 310208164, + "l": 310208164, + "m": true, + "p": "9032.03000000", + "q": "0.00221300" + }, + { + "M": true, + "T": 1588749183603, + "a": 284861852, + "f": 310208165, + "l": 310208165, + "m": true, + "p": "9031.86000000", + "q": "0.04825900" + }, + { + "M": true, + "T": 1588749183915, + "a": 284861853, + "f": 310208166, + "l": 310208166, + "m": false, + "p": "9033.01000000", + "q": "0.01927000" + }, + { + "M": true, + "T": 1588749183932, + "a": 284861854, + "f": 310208167, + "l": 310208167, + "m": true, + "p": "9032.75000000", + "q": "0.00300000" + }, + { + "M": true, + "T": 1588749183932, + "a": 284861855, + "f": 310208168, + "l": 310208168, + "m": true, + "p": "9031.87000000", + "q": "0.00221400" + }, + { + "M": true, + "T": 1588749183932, + "a": 284861856, + "f": 310208169, + "l": 310208169, + "m": true, + "p": "9031.73000000", + "q": "0.00300000" + }, + { + "M": true, + "T": 1588749183932, + "a": 284861857, + "f": 310208170, + "l": 310208170, + "m": true, + "p": "9031.71000000", + "q": "0.05227700" + }, + { + "M": true, + "T": 1588749183942, + "a": 284861858, + "f": 310208171, + "l": 310208171, + "m": true, + "p": "9031.71000000", + "q": "0.00290800" + }, + { + "M": true, + "T": 1588749184156, + "a": 284861859, + "f": 310208172, + "l": 310208172, + "m": false, + "p": "9032.90000000", + "q": "0.00442600" + }, + { + "M": true, + "T": 1588749184156, + "a": 284861860, + "f": 310208173, + "l": 310208173, + "m": false, + "p": "9032.91000000", + "q": "0.00272300" + }, + { + "M": true, + "T": 1588749184261, + "a": 284861861, + "f": 310208174, + "l": 310208174, + "m": true, + "p": "9031.97000000", + "q": "0.06045200" + }, + { + "M": true, + "T": 1588749184474, + "a": 284861862, + "f": 310208175, + "l": 310208175, + "m": true, + "p": "9032.33000000", + "q": "0.00920000" + }, + { + "M": true, + "T": 1588749184588, + "a": 284861863, + "f": 310208176, + "l": 310208176, + "m": true, + "p": "9032.33000000", + "q": "0.00003500" + }, + { + "M": true, + "T": 1588749184588, + "a": 284861864, + "f": 310208177, + "l": 310208177, + "m": true, + "p": "9032.25000000", + "q": "0.06015000" + }, + { + "M": true, + "T": 1588749184914, + "a": 284861865, + "f": 310208178, + "l": 310208178, + "m": true, + "p": "9031.99000000", + "q": "0.00221400" + }, + { + "M": true, + "T": 1588749184914, + "a": 284861866, + "f": 310208179, + "l": 310208179, + "m": true, + "p": "9031.74000000", + "q": "0.05806900" + }, + { + "M": true, + "T": 1588749185212, + "a": 284861867, + "f": 310208180, + "l": 310208180, + "m": true, + "p": "9031.80000000", + "q": "0.00885800" + }, + { + "M": true, + "T": 1588749185242, + "a": 284861868, + "f": 310208181, + "l": 310208181, + "m": true, + "p": "9031.81000000", + "q": "0.06019800" + }, + { + "M": true, + "T": 1588749185555, + "a": 284861869, + "f": 310208182, + "l": 310208182, + "m": true, + "p": "9031.82000000", + "q": "0.00120000" + }, + { + "M": true, + "T": 1588749185571, + "a": 284861870, + "f": 310208183, + "l": 310208183, + "m": true, + "p": "9031.83000000", + "q": "0.06025900" + }, + { + "M": true, + "T": 1588749185911, + "a": 284861871, + "f": 310208184, + "l": 310208184, + "m": true, + "p": "9031.80000000", + "q": "0.06062400" + }, + { + "M": true, + "T": 1588749186223, + "a": 284861872, + "f": 310208185, + "l": 310208185, + "m": true, + "p": "9032.53000000", + "q": "0.06027700" + }, + { + "M": true, + "T": 1588749186551, + "a": 284861873, + "f": 310208186, + "l": 310208186, + "m": true, + "p": "9032.53000000", + "q": "0.06019100" + }, + { + "M": true, + "T": 1588749186865, + "a": 284861874, + "f": 310208187, + "l": 310208187, + "m": true, + "p": "9032.53000000", + "q": "0.06023900" + }, + { + "M": true, + "T": 1588749186900, + "a": 284861875, + "f": 310208188, + "l": 310208188, + "m": true, + "p": "9032.53000000", + "q": "0.01619300" + }, + { + "M": true, + "T": 1588749187078, + "a": 284861876, + "f": 310208189, + "l": 310208189, + "m": true, + "p": "9032.53000000", + "q": "0.24595300" + }, + { + "M": true, + "T": 1588749187182, + "a": 284861877, + "f": 310208190, + "l": 310208190, + "m": true, + "p": "9032.53000000", + "q": "0.06012200" + }, + { + "M": true, + "T": 1588749187502, + "a": 284861878, + "f": 310208191, + "l": 310208191, + "m": true, + "p": "9032.53000000", + "q": "0.00730100" + }, + { + "M": true, + "T": 1588749187510, + "a": 284861879, + "f": 310208192, + "l": 310208192, + "m": true, + "p": "9032.53000000", + "q": "0.00000300" + }, + { + "M": true, + "T": 1588749187510, + "a": 284861880, + "f": 310208193, + "l": 310208193, + "m": true, + "p": "9031.79000000", + "q": "0.00221400" + }, + { + "M": true, + "T": 1588749187510, + "a": 284861881, + "f": 310208194, + "l": 310208194, + "m": true, + "p": "9031.71000000", + "q": "0.05812700" + }, + { + "M": true, + "T": 1588749187746, + "a": 284861882, + "f": 310208195, + "l": 310208195, + "m": true, + "p": "9031.71000000", + "q": "0.00221400" + }, + { + "M": true, + "T": 1588749187746, + "a": 284861883, + "f": 310208196, + "l": 310208196, + "m": true, + "p": "9031.71000000", + "q": "0.00221400" + }, + { + "M": true, + "T": 1588749187821, + "a": 284861884, + "f": 310208197, + "l": 310208197, + "m": true, + "p": "9031.71000000", + "q": "0.06015000" + }, + { + "M": true, + "T": 1588749187829, + "a": 284861885, + "f": 310208198, + "l": 310208198, + "m": true, + "p": "9031.71000000", + "q": "0.37458200" + }, + { + "M": true, + "T": 1588749187834, + "a": 284861886, + "f": 310208199, + "l": 310208199, + "m": false, + "p": "9031.72000000", + "q": "0.05319600" + }, + { + "M": true, + "T": 1588749187847, + "a": 284861887, + "f": 310208200, + "l": 310208200, + "m": true, + "p": "9031.71000000", + "q": "0.00221400" + }, + { + "M": true, + "T": 1588749187850, + "a": 284861888, + "f": 310208201, + "l": 310208201, + "m": true, + "p": "9031.71000000", + "q": "0.00221400" + }, + { + "M": true, + "T": 1588749187930, + "a": 284861889, + "f": 310208202, + "l": 310208202, + "m": true, + "p": "9031.71000000", + "q": "0.00621200" + }, + { + "M": true, + "T": 1588749187969, + "a": 284861890, + "f": 310208203, + "l": 310208203, + "m": true, + "p": "9031.71000000", + "q": "0.01000000" + }, + { + "M": true, + "T": 1588749188021, + "a": 284861891, + "f": 310208204, + "l": 310208204, + "m": true, + "p": "9031.71000000", + "q": "0.00199400" + }, + { + "M": true, + "T": 1588749188137, + "a": 284861892, + "f": 310208205, + "l": 310208205, + "m": true, + "p": "9031.71000000", + "q": "0.00199400" + }, + { + "M": true, + "T": 1588749188141, + "a": 284861893, + "f": 310208206, + "l": 310208206, + "m": true, + "p": "9031.71000000", + "q": "0.06028800" + }, + { + "M": true, + "T": 1588749188167, + "a": 284861894, + "f": 310208207, + "l": 310208207, + "m": true, + "p": "9031.71000000", + "q": "0.93346800" + }, + { + "M": true, + "T": 1588749188360, + "a": 284861895, + "f": 310208208, + "l": 310208208, + "m": true, + "p": "9030.72000000", + "q": "0.00299700" + }, + { + "M": true, + "T": 1588749188412, + "a": 284861896, + "f": 310208209, + "l": 310208209, + "m": true, + "p": "9030.72000000", + "q": "0.00000300" + }, + { + "M": true, + "T": 1588749188412, + "a": 284861897, + "f": 310208210, + "l": 310208210, + "m": true, + "p": "9030.10000000", + "q": "0.00221100" + }, + { + "M": true, + "T": 1588749188417, + "a": 284861898, + "f": 310208211, + "l": 310208211, + "m": true, + "p": "9030.10000000", + "q": "0.00078900" + }, + { + "M": true, + "T": 1588749188417, + "a": 284861899, + "f": 310208212, + "l": 310208212, + "m": true, + "p": "9029.71000000", + "q": "0.00142500" + }, + { + "M": true, + "T": 1588749188417, + "a": 284861900, + "f": 310208213, + "l": 310208213, + "m": true, + "p": "9029.71000000", + "q": "0.00157500" + }, + { + "M": true, + "T": 1588749188417, + "a": 284861901, + "f": 310208214, + "l": 310208214, + "m": true, + "p": "9029.63000000", + "q": "0.00063900" + }, + { + "M": true, + "T": 1588749188418, + "a": 284861902, + "f": 310208215, + "l": 310208215, + "m": true, + "p": "9029.63000000", + "q": "0.00221400" + }, + { + "M": true, + "T": 1588749188476, + "a": 284861903, + "f": 310208216, + "l": 310208216, + "m": true, + "p": "9029.63000000", + "q": "0.06170800" + }, + { + "M": true, + "T": 1588749188538, + "a": 284861904, + "f": 310208217, + "l": 310208217, + "m": false, + "p": "9029.64000000", + "q": "0.00307900" + }, + { + "M": true, + "T": 1588749188562, + "a": 284861905, + "f": 310208218, + "l": 310208218, + "m": true, + "p": "9029.63000000", + "q": "0.03884100" + }, + { + "M": true, + "T": 1588749188966, + "a": 284861906, + "f": 310208219, + "l": 310208219, + "m": true, + "p": "9028.83000000", + "q": "0.08963200" + }, + { + "M": true, + "T": 1588749189292, + "a": 284861907, + "f": 310208220, + "l": 310208220, + "m": true, + "p": "9028.96000000", + "q": "0.06004700" + }, + { + "M": true, + "T": 1588749189334, + "a": 284861908, + "f": 310208221, + "l": 310208221, + "m": true, + "p": "9028.96000000", + "q": "0.02612300" + }, + { + "M": true, + "T": 1588749189334, + "a": 284861909, + "f": 310208222, + "l": 310208223, + "m": true, + "p": "9028.95000000", + "q": "0.27271600" + }, + { + "M": true, + "T": 1588749189422, + "a": 284861910, + "f": 310208224, + "l": 310208224, + "m": true, + "p": "9028.69000000", + "q": "0.00299600" + }, + { + "M": true, + "T": 1588749189622, + "a": 284861911, + "f": 310208225, + "l": 310208225, + "m": true, + "p": "9028.69000000", + "q": "0.00000400" + }, + { + "M": true, + "T": 1588749189622, + "a": 284861912, + "f": 310208226, + "l": 310208226, + "m": true, + "p": "9028.57000000", + "q": "0.00113500" + }, + { + "M": true, + "T": 1588749189622, + "a": 284861913, + "f": 310208227, + "l": 310208227, + "m": true, + "p": "9028.03000000", + "q": "0.05906800" + }, + { + "M": true, + "T": 1588749189726, + "a": 284861914, + "f": 310208228, + "l": 310208228, + "m": true, + "p": "9028.01000000", + "q": "0.00698500" + }, + { + "M": true, + "T": 1588749189803, + "a": 284861915, + "f": 310208229, + "l": 310208229, + "m": false, + "p": "9028.84000000", + "q": "0.00307900" + }, + { + "M": true, + "T": 1588749189830, + "a": 284861916, + "f": 310208230, + "l": 310208230, + "m": true, + "p": "9028.04000000", + "q": "0.00698400" + }, + { + "M": true, + "T": 1588749189931, + "a": 284861917, + "f": 310208231, + "l": 310208231, + "m": true, + "p": "9028.09000000", + "q": "0.01127800" + }, + { + "M": true, + "T": 1588749190033, + "a": 284861918, + "f": 310208232, + "l": 310208232, + "m": false, + "p": "9029.10000000", + "q": "0.00442700" + }, + { + "M": true, + "T": 1588749190033, + "a": 284861919, + "f": 310208233, + "l": 310208233, + "m": false, + "p": "9030.11000000", + "q": "0.00166900" + }, + { + "M": true, + "T": 1588749190045, + "a": 284861920, + "f": 310208234, + "l": 310208234, + "m": true, + "p": "9028.14000000", + "q": "0.00919400" + }, + { + "M": true, + "T": 1588749190149, + "a": 284861921, + "f": 310208235, + "l": 310208236, + "m": false, + "p": "9029.37000000", + "q": "0.03229900" + }, + { + "M": true, + "T": 1588749190151, + "a": 284861922, + "f": 310208237, + "l": 310208237, + "m": true, + "p": "9028.20000000", + "q": "0.03402300" + }, + { + "M": true, + "T": 1588749190154, + "a": 284861923, + "f": 310208238, + "l": 310208238, + "m": false, + "p": "9029.37000000", + "q": "0.37212900" + }, + { + "M": true, + "T": 1588749190154, + "a": 284861924, + "f": 310208239, + "l": 310208239, + "m": false, + "p": "9029.38000000", + "q": "0.00974200" + }, + { + "M": true, + "T": 1588749190154, + "a": 284861925, + "f": 310208240, + "l": 310208240, + "m": false, + "p": "9029.58000000", + "q": "0.14198900" + }, + { + "M": true, + "T": 1588749190154, + "a": 284861926, + "f": 310208241, + "l": 310208241, + "m": false, + "p": "9030.12000000", + "q": "0.30000000" + }, + { + "M": true, + "T": 1588749190154, + "a": 284861927, + "f": 310208242, + "l": 310208242, + "m": false, + "p": "9030.95000000", + "q": "0.22905500" + }, + { + "M": true, + "T": 1588749190154, + "a": 284861928, + "f": 310208243, + "l": 310208243, + "m": false, + "p": "9030.98000000", + "q": "0.02900000" + }, + { + "M": true, + "T": 1588749190154, + "a": 284861929, + "f": 310208244, + "l": 310208244, + "m": false, + "p": "9031.00000000", + "q": "0.20000000" + }, + { + "M": true, + "T": 1588749190154, + "a": 284861930, + "f": 310208245, + "l": 310208245, + "m": false, + "p": "9031.42000000", + "q": "0.50000000" + }, + { + "M": true, + "T": 1588749190154, + "a": 284861931, + "f": 310208246, + "l": 310208246, + "m": false, + "p": "9031.45000000", + "q": "0.20004600" + }, + { + "M": true, + "T": 1588749190154, + "a": 284861932, + "f": 310208247, + "l": 310208247, + "m": false, + "p": "9031.46000000", + "q": "0.20000000" + }, + { + "M": true, + "T": 1588749190154, + "a": 284861933, + "f": 310208248, + "l": 310208248, + "m": false, + "p": "9031.68000000", + "q": "1.00005200" + }, + { + "M": true, + "T": 1588749190154, + "a": 284861934, + "f": 310208249, + "l": 310208249, + "m": false, + "p": "9031.69000000", + "q": "0.08000000" + }, + { + "M": true, + "T": 1588749190154, + "a": 284861935, + "f": 310208250, + "l": 310208250, + "m": false, + "p": "9031.72000000", + "q": "0.35984500" + }, + { + "M": true, + "T": 1588749190201, + "a": 284861936, + "f": 310208251, + "l": 310208251, + "m": true, + "p": "9028.46000000", + "q": "0.10490800" + }, + { + "M": true, + "T": 1588749190252, + "a": 284861937, + "f": 310208252, + "l": 310208252, + "m": true, + "p": "9028.49000000", + "q": "0.00199400" + }, + { + "M": true, + "T": 1588749190397, + "a": 284861938, + "f": 310208253, + "l": 310208253, + "m": true, + "p": "9029.01000000", + "q": "4.00000000" + }, + { + "M": true, + "T": 1588749190397, + "a": 284861939, + "f": 310208254, + "l": 310208254, + "m": true, + "p": "9028.60000000", + "q": "0.09706700" + }, + { + "M": true, + "T": 1588749190397, + "a": 284861940, + "f": 310208255, + "l": 310208257, + "m": true, + "p": "9028.58000000", + "q": "3.26721400" + }, + { + "M": true, + "T": 1588749190397, + "a": 284861941, + "f": 310208258, + "l": 310208258, + "m": true, + "p": "9028.55000000", + "q": "0.17701700" + }, + { + "M": true, + "T": 1588749190397, + "a": 284861942, + "f": 310208259, + "l": 310208259, + "m": true, + "p": "9028.41000000", + "q": "4.00000000" + }, + { + "M": true, + "T": 1588749190397, + "a": 284861943, + "f": 310208260, + "l": 310208260, + "m": true, + "p": "9028.21000000", + "q": "5.10113600" + }, + { + "M": true, + "T": 1588749190465, + "a": 284861944, + "f": 310208261, + "l": 310208261, + "m": false, + "p": "9030.16000000", + "q": "0.00220800" + }, + { + "M": true, + "T": 1588749190470, + "a": 284861945, + "f": 310208262, + "l": 310208262, + "m": true, + "p": "9028.94000000", + "q": "0.02839700" + }, + { + "M": true, + "T": 1588749190564, + "a": 284861946, + "f": 310208263, + "l": 310208263, + "m": true, + "p": "9028.95000000", + "q": "0.00221000" + }, + { + "M": true, + "T": 1588749190677, + "a": 284861947, + "f": 310208264, + "l": 310208264, + "m": true, + "p": "9029.14000000", + "q": "0.00974500" + }, + { + "M": true, + "T": 1588749190765, + "a": 284861948, + "f": 310208265, + "l": 310208265, + "m": true, + "p": "9029.14000000", + "q": "0.01195500" + }, + { + "M": true, + "T": 1588749190870, + "a": 284861949, + "f": 310208266, + "l": 310208266, + "m": true, + "p": "9029.14000000", + "q": "0.01195500" + }, + { + "M": true, + "T": 1588749190874, + "a": 284861950, + "f": 310208267, + "l": 310208267, + "m": false, + "p": "9029.15000000", + "q": "0.00265100" + }, + { + "M": true, + "T": 1588749191013, + "a": 284861951, + "f": 310208268, + "l": 310208268, + "m": true, + "p": "9029.14000000", + "q": "0.01195700" + }, + { + "M": true, + "T": 1588749191082, + "a": 284861952, + "f": 310208269, + "l": 310208269, + "m": true, + "p": "9029.14000000", + "q": "0.01195700" + }, + { + "M": true, + "T": 1588749191189, + "a": 284861953, + "f": 310208270, + "l": 310208270, + "m": true, + "p": "9029.14000000", + "q": "0.01195900" + }, + { + "M": true, + "T": 1588749191197, + "a": 284861954, + "f": 310208271, + "l": 310208272, + "m": false, + "p": "9029.15000000", + "q": "0.00133800" + }, + { + "M": true, + "T": 1588749191278, + "a": 284861955, + "f": 310208273, + "l": 310208273, + "m": true, + "p": "9029.14000000", + "q": "0.01916400" + }, + { + "M": true, + "T": 1588749191304, + "a": 284861956, + "f": 310208274, + "l": 310208274, + "m": true, + "p": "9029.14000000", + "q": "0.01195900" + }, + { + "M": true, + "T": 1588749191766, + "a": 284861957, + "f": 310208275, + "l": 310208275, + "m": false, + "p": "9030.00000000", + "q": "0.00460200" + }, + { + "M": true, + "T": 1588749191819, + "a": 284861958, + "f": 310208276, + "l": 310208276, + "m": true, + "p": "9029.56000000", + "q": "0.03379500" + }, + { + "M": true, + "T": 1588749191861, + "a": 284861959, + "f": 310208277, + "l": 310208277, + "m": true, + "p": "9029.57000000", + "q": "0.29780800" + }, + { + "M": true, + "T": 1588749192032, + "a": 284861960, + "f": 310208278, + "l": 310208278, + "m": true, + "p": "9029.64000000", + "q": "0.01350000" + }, + { + "M": true, + "T": 1588749192142, + "a": 284861961, + "f": 310208279, + "l": 310208279, + "m": true, + "p": "9029.67000000", + "q": "0.01195800" + }, + { + "M": true, + "T": 1588749192193, + "a": 284861962, + "f": 310208280, + "l": 310208280, + "m": true, + "p": "9029.69000000", + "q": "0.06011400" + }, + { + "M": true, + "T": 1588749192260, + "a": 284861963, + "f": 310208281, + "l": 310208281, + "m": true, + "p": "9029.72000000", + "q": "0.01195600" + }, + { + "M": true, + "T": 1588749192458, + "a": 284861964, + "f": 310208282, + "l": 310208282, + "m": true, + "p": "9029.93000000", + "q": "0.00442600" + }, + { + "M": true, + "T": 1588749192524, + "a": 284861965, + "f": 310208283, + "l": 310208283, + "m": true, + "p": "9029.93000000", + "q": "0.06026100" + }, + { + "M": true, + "T": 1588749192593, + "a": 284861966, + "f": 310208284, + "l": 310208284, + "m": true, + "p": "9029.93000000", + "q": "0.00884600" + }, + { + "M": true, + "T": 1588749192694, + "a": 284861967, + "f": 310208285, + "l": 310208285, + "m": true, + "p": "9029.93000000", + "q": "0.01362500" + }, + { + "M": true, + "T": 1588749192782, + "a": 284861968, + "f": 310208286, + "l": 310208286, + "m": true, + "p": "9029.93000000", + "q": "0.00641500" + }, + { + "M": true, + "T": 1588749192852, + "a": 284861969, + "f": 310208287, + "l": 310208287, + "m": true, + "p": "9029.93000000", + "q": "0.06030700" + }, + { + "M": true, + "T": 1588749192884, + "a": 284861970, + "f": 310208288, + "l": 310208288, + "m": true, + "p": "9029.93000000", + "q": "0.00810800" + }, + { + "M": true, + "T": 1588749192911, + "a": 284861971, + "f": 310208289, + "l": 310208289, + "m": false, + "p": "9029.94000000", + "q": "0.03682600" + }, + { + "M": true, + "T": 1588749193101, + "a": 284861972, + "f": 310208290, + "l": 310208290, + "m": true, + "p": "9030.02000000", + "q": "0.01918000" + }, + { + "M": true, + "T": 1588749193178, + "a": 284861973, + "f": 310208291, + "l": 310208291, + "m": true, + "p": "9030.02000000", + "q": "0.06004500" + }, + { + "M": true, + "T": 1588749193507, + "a": 284861974, + "f": 310208292, + "l": 310208292, + "m": true, + "p": "9030.02000000", + "q": "0.06025700" + }, + { + "M": true, + "T": 1588749193517, + "a": 284861975, + "f": 310208293, + "l": 310208293, + "m": false, + "p": "9030.03000000", + "q": "0.17700400" + }, + { + "M": true, + "T": 1588749193517, + "a": 284861976, + "f": 310208294, + "l": 310208294, + "m": false, + "p": "9030.09000000", + "q": "0.00221600" + }, + { + "M": true, + "T": 1588749193630, + "a": 284861977, + "f": 310208295, + "l": 310208295, + "m": true, + "p": "9030.43000000", + "q": "0.00540100" + }, + { + "M": true, + "T": 1588749193837, + "a": 284861978, + "f": 310208296, + "l": 310208296, + "m": true, + "p": "9031.70000000", + "q": "0.06000200" + }, + { + "M": true, + "T": 1588749193842, + "a": 284861979, + "f": 310208297, + "l": 310208297, + "m": true, + "p": "9031.70000000", + "q": "0.00307900" + }, + { + "M": true, + "T": 1588749193941, + "a": 284861980, + "f": 310208298, + "l": 310208298, + "m": true, + "p": "9031.70000000", + "q": "0.00307900" + }, + { + "M": true, + "T": 1588749194150, + "a": 284861981, + "f": 310208299, + "l": 310208299, + "m": true, + "p": "9031.17000000", + "q": "0.00854500" + }, + { + "M": true, + "T": 1588749194201, + "a": 284861982, + "f": 310208300, + "l": 310208300, + "m": true, + "p": "9031.42000000", + "q": "0.06523400" + }, + { + "M": true, + "T": 1588749194215, + "a": 284861983, + "f": 310208301, + "l": 310208301, + "m": false, + "p": "9031.66000000", + "q": "0.06951000" + }, + { + "M": true, + "T": 1588749194254, + "a": 284861984, + "f": 310208302, + "l": 310208302, + "m": true, + "p": "9031.65000000", + "q": "0.01355300" + }, + { + "M": true, + "T": 1588749194364, + "a": 284861985, + "f": 310208303, + "l": 310208303, + "m": true, + "p": "9031.66000000", + "q": "0.01195800" + }, + { + "M": true, + "T": 1588749194471, + "a": 284861986, + "f": 310208304, + "l": 310208304, + "m": false, + "p": "9031.70000000", + "q": "0.01274300" + }, + { + "M": true, + "T": 1588749194525, + "a": 284861987, + "f": 310208305, + "l": 310208305, + "m": true, + "p": "9031.69000000", + "q": "0.06002000" + }, + { + "M": true, + "T": 1588749194581, + "a": 284861988, + "f": 310208306, + "l": 310208306, + "m": true, + "p": "9031.69000000", + "q": "0.00290900" + }, + { + "M": true, + "T": 1588749194623, + "a": 284861989, + "f": 310208307, + "l": 310208307, + "m": true, + "p": "9031.69000000", + "q": "0.01918900" + }, + { + "M": true, + "T": 1588749194793, + "a": 284861990, + "f": 310208308, + "l": 310208308, + "m": true, + "p": "9031.69000000", + "q": "0.01038700" + }, + { + "M": true, + "T": 1588749194898, + "a": 284861991, + "f": 310208309, + "l": 310208309, + "m": true, + "p": "9031.69000000", + "q": "0.01038700" + }, + { + "M": true, + "T": 1588749195004, + "a": 284861992, + "f": 310208310, + "l": 310208311, + "m": false, + "p": "9031.70000000", + "q": "0.00221000" + }, + { + "M": true, + "T": 1588749195006, + "a": 284861993, + "f": 310208312, + "l": 310208312, + "m": true, + "p": "9031.69000000", + "q": "0.01038700" + }, + { + "M": true, + "T": 1588749195110, + "a": 284861994, + "f": 310208313, + "l": 310208313, + "m": true, + "p": "9031.69000000", + "q": "0.01038700" + }, + { + "M": true, + "T": 1588749195213, + "a": 284861995, + "f": 310208314, + "l": 310208314, + "m": true, + "p": "9031.69000000", + "q": "0.01038700" + }, + { + "M": true, + "T": 1588749195325, + "a": 284861996, + "f": 310208315, + "l": 310208315, + "m": true, + "p": "9031.69000000", + "q": "0.00997200" + }, + { + "M": true, + "T": 1588749195365, + "a": 284861997, + "f": 310208316, + "l": 310208316, + "m": true, + "p": "9031.69000000", + "q": "0.00300000" + }, + { + "M": true, + "T": 1588749195434, + "a": 284861998, + "f": 310208317, + "l": 310208317, + "m": true, + "p": "9031.69000000", + "q": "0.00476600" + }, + { + "M": true, + "T": 1588749195529, + "a": 284861999, + "f": 310208318, + "l": 310208318, + "m": true, + "p": "9031.69000000", + "q": "0.00221000" + }, + { + "M": true, + "T": 1588749195844, + "a": 284862000, + "f": 310208319, + "l": 310208319, + "m": true, + "p": "9031.69000000", + "q": "0.00300000" + }, + { + "M": true, + "T": 1588749196180, + "a": 284862001, + "f": 310208320, + "l": 310208320, + "m": true, + "p": "9031.70000000", + "q": "0.01014300" + }, + { + "M": true, + "T": 1588749196492, + "a": 284862002, + "f": 310208321, + "l": 310208321, + "m": true, + "p": "9031.70000000", + "q": "0.00211800" + }, + { + "M": true, + "T": 1588749196588, + "a": 284862003, + "f": 310208322, + "l": 310208322, + "m": true, + "p": "9031.70000000", + "q": "0.00524300" + }, + { + "M": true, + "T": 1588749196638, + "a": 284862004, + "f": 310208323, + "l": 310208323, + "m": false, + "p": "9031.71000000", + "q": "0.05563300" + }, + { + "M": true, + "T": 1588749196703, + "a": 284862005, + "f": 310208324, + "l": 310208324, + "m": true, + "p": "9031.70000000", + "q": "0.00524300" + }, + { + "M": true, + "T": 1588749196800, + "a": 284862006, + "f": 310208325, + "l": 310208325, + "m": true, + "p": "9031.70000000", + "q": "0.00524300" + }, + { + "M": true, + "T": 1588749197323, + "a": 284862007, + "f": 310208326, + "l": 310208326, + "m": true, + "p": "9031.70000000", + "q": "0.03250000" + }, + { + "M": true, + "T": 1588749198338, + "a": 284862008, + "f": 310208327, + "l": 310208327, + "m": false, + "p": "9031.71000000", + "q": "0.00112700" + }, + { + "M": true, + "T": 1588749198338, + "a": 284862009, + "f": 310208328, + "l": 310208328, + "m": false, + "p": "9031.73000000", + "q": "0.00108700" + }, + { + "M": true, + "T": 1588749198339, + "a": 284862010, + "f": 310208329, + "l": 310208329, + "m": false, + "p": "9031.73000000", + "q": "0.00191300" + }, + { + "M": true, + "T": 1588749198339, + "a": 284862011, + "f": 310208330, + "l": 310208330, + "m": false, + "p": "9031.89000000", + "q": "0.00030100" + }, + { + "M": true, + "T": 1588749198425, + "a": 284862012, + "f": 310208331, + "l": 310208331, + "m": true, + "p": "9031.88000000", + "q": "0.03142100" + }, + { + "M": true, + "T": 1588749199174, + "a": 284862013, + "f": 310208332, + "l": 310208332, + "m": true, + "p": "9031.88000000", + "q": "0.02128800" + }, + { + "M": true, + "T": 1588749199205, + "a": 284862014, + "f": 310208333, + "l": 310208333, + "m": true, + "p": "9031.88000000", + "q": "0.02126600" + }, + { + "M": true, + "T": 1588749199260, + "a": 284862015, + "f": 310208334, + "l": 310208334, + "m": true, + "p": "9031.88000000", + "q": "0.02125100" + }, + { + "M": true, + "T": 1588749199410, + "a": 284862016, + "f": 310208335, + "l": 310208336, + "m": false, + "p": "9031.89000000", + "q": "0.06255800" + }, + { + "M": true, + "T": 1588749199538, + "a": 284862017, + "f": 310208337, + "l": 310208337, + "m": true, + "p": "9032.48000000", + "q": "0.00307900" + }, + { + "M": true, + "T": 1588749199956, + "a": 284862018, + "f": 310208338, + "l": 310208338, + "m": true, + "p": "9032.63000000", + "q": "0.01014200" + }, + { + "M": true, + "T": 1588749200060, + "a": 284862019, + "f": 310208339, + "l": 310208339, + "m": true, + "p": "9032.63000000", + "q": "0.00910000" + }, + { + "M": true, + "T": 1588749200589, + "a": 284862020, + "f": 310208340, + "l": 310208340, + "m": true, + "p": "9032.63000000", + "q": "0.00271600" + }, + { + "M": true, + "T": 1588749200992, + "a": 284862021, + "f": 310208341, + "l": 310208341, + "m": true, + "p": "9032.60000000", + "q": "0.05614900" + }, + { + "M": true, + "T": 1588749201044, + "a": 284862022, + "f": 310208342, + "l": 310208342, + "m": true, + "p": "9032.62000000", + "q": "0.00523200" + }, + { + "M": true, + "T": 1588749201125, + "a": 284862023, + "f": 310208343, + "l": 310208343, + "m": true, + "p": "9032.63000000", + "q": "0.01299900" + }, + { + "M": true, + "T": 1588749201211, + "a": 284862024, + "f": 310208344, + "l": 310208344, + "m": true, + "p": "9032.63000000", + "q": "0.01195800" + }, + { + "M": true, + "T": 1588749201317, + "a": 284862025, + "f": 310208345, + "l": 310208345, + "m": true, + "p": "9032.63000000", + "q": "0.01195800" + }, + { + "M": true, + "T": 1588749201355, + "a": 284862026, + "f": 310208346, + "l": 310208346, + "m": true, + "p": "9032.63000000", + "q": "0.00147600" + }, + { + "M": true, + "T": 1588749201425, + "a": 284862027, + "f": 310208347, + "l": 310208347, + "m": true, + "p": "9032.63000000", + "q": "0.01195800" + }, + { + "M": true, + "T": 1588749201532, + "a": 284862028, + "f": 310208348, + "l": 310208348, + "m": true, + "p": "9032.63000000", + "q": "0.00709100" + }, + { + "M": true, + "T": 1588749201606, + "a": 284862029, + "f": 310208349, + "l": 310208349, + "m": true, + "p": "9032.63000000", + "q": "0.05601900" + }, + { + "M": true, + "T": 1588749201607, + "a": 284862030, + "f": 310208350, + "l": 310208350, + "m": true, + "p": "9032.63000000", + "q": "0.15163400" + }, + { + "M": true, + "T": 1588749201607, + "a": 284862031, + "f": 310208351, + "l": 310208351, + "m": true, + "p": "9032.62000000", + "q": "0.05601800" + }, + { + "M": true, + "T": 1588749202148, + "a": 284862032, + "f": 310208352, + "l": 310208352, + "m": true, + "p": "9032.62000000", + "q": "0.01100000" + }, + { + "M": true, + "T": 1588749202331, + "a": 284862033, + "f": 310208353, + "l": 310208353, + "m": false, + "p": "9032.63000000", + "q": "0.00273900" + }, + { + "M": true, + "T": 1588749203024, + "a": 284862034, + "f": 310208354, + "l": 310208354, + "m": true, + "p": "9032.63000000", + "q": "0.00906400" + }, + { + "M": true, + "T": 1588749204119, + "a": 284862035, + "f": 310208355, + "l": 310208355, + "m": true, + "p": "9032.63000000", + "q": "0.00919400" + }, + { + "M": true, + "T": 1588749204602, + "a": 284862036, + "f": 310208356, + "l": 310208356, + "m": false, + "p": "9032.64000000", + "q": "0.00401000" + }, + { + "M": true, + "T": 1588749205675, + "a": 284862037, + "f": 310208357, + "l": 310208357, + "m": false, + "p": "9032.64000000", + "q": "0.00713000" + }, + { + "M": true, + "T": 1588749206828, + "a": 284862038, + "f": 310208358, + "l": 310208358, + "m": false, + "p": "9032.65000000", + "q": "0.00299300" + }, + { + "M": true, + "T": 1588749206834, + "a": 284862039, + "f": 310208359, + "l": 310208359, + "m": false, + "p": "9032.65000000", + "q": "0.00000700" + }, + { + "M": true, + "T": 1588749206939, + "a": 284862040, + "f": 310208360, + "l": 310208361, + "m": false, + "p": "9032.75000000", + "q": "0.01423300" + }, + { + "M": true, + "T": 1588749207763, + "a": 284862041, + "f": 310208362, + "l": 310208362, + "m": false, + "p": "9032.75000000", + "q": "0.00002100" + }, + { + "M": true, + "T": 1588749207763, + "a": 284862042, + "f": 310208363, + "l": 310208363, + "m": false, + "p": "9033.76000000", + "q": "0.00300000" + }, + { + "M": true, + "T": 1588749207763, + "a": 284862043, + "f": 310208364, + "l": 310208364, + "m": false, + "p": "9034.10000000", + "q": "0.00795500" + }, + { + "M": true, + "T": 1588749207763, + "a": 284862044, + "f": 310208365, + "l": 310208365, + "m": false, + "p": "9034.29000000", + "q": "0.02587400" + }, + { + "M": true, + "T": 1588749208721, + "a": 284862045, + "f": 310208366, + "l": 310208366, + "m": true, + "p": "9033.37000000", + "q": "0.00715900" + }, + { + "M": true, + "T": 1588749208721, + "a": 284862046, + "f": 310208367, + "l": 310208367, + "m": true, + "p": "9033.26000000", + "q": "0.05434800" + }, + { + "M": true, + "T": 1588749208721, + "a": 284862047, + "f": 310208368, + "l": 310208368, + "m": true, + "p": "9033.23000000", + "q": "0.06284000" + }, + { + "M": true, + "T": 1588749208721, + "a": 284862048, + "f": 310208369, + "l": 310208370, + "m": true, + "p": "9033.22000000", + "q": "0.27565300" + }, + { + "M": true, + "T": 1588749208760, + "a": 284862049, + "f": 310208371, + "l": 310208371, + "m": true, + "p": "9033.46000000", + "q": "0.01774100" + }, + { + "M": true, + "T": 1588749208957, + "a": 284862050, + "f": 310208372, + "l": 310208372, + "m": false, + "p": "9034.58000000", + "q": "0.02405200" + }, + { + "M": true, + "T": 1588749209051, + "a": 284862051, + "f": 310208373, + "l": 310208373, + "m": true, + "p": "9033.47000000", + "q": "0.00221300" + }, + { + "M": true, + "T": 1588749209051, + "a": 284862052, + "f": 310208374, + "l": 310208374, + "m": true, + "p": "9033.24000000", + "q": "0.00964300" + }, + { + "M": true, + "T": 1588749209051, + "a": 284862053, + "f": 310208375, + "l": 310208375, + "m": true, + "p": "9032.95000000", + "q": "0.04823900" + }, + { + "M": true, + "T": 1588749209055, + "a": 284862054, + "f": 310208376, + "l": 310208376, + "m": false, + "p": "9034.47000000", + "q": "0.00896200" + }, + { + "M": true, + "T": 1588749209483, + "a": 284862055, + "f": 310208377, + "l": 310208377, + "m": false, + "p": "9034.31000000", + "q": "0.10685700" + }, + { + "M": true, + "T": 1588749209499, + "a": 284862056, + "f": 310208378, + "l": 310208379, + "m": true, + "p": "9033.06000000", + "q": "0.07333800" + }, + { + "M": true, + "T": 1588749209596, + "a": 284862057, + "f": 310208380, + "l": 310208380, + "m": false, + "p": "9033.99000000", + "q": "0.00219000" + }, + { + "M": true, + "T": 1588749209991, + "a": 284862058, + "f": 310208381, + "l": 310208381, + "m": true, + "p": "9033.27000000", + "q": "0.05416900" + }, + { + "M": true, + "T": 1588749210418, + "a": 284862059, + "f": 310208382, + "l": 310208382, + "m": true, + "p": "9033.29000000", + "q": "0.02034600" + }, + { + "M": true, + "T": 1588749210524, + "a": 284862060, + "f": 310208383, + "l": 310208383, + "m": true, + "p": "9033.29000000", + "q": "0.00769400" + }, + { + "M": true, + "T": 1588749210723, + "a": 284862061, + "f": 310208384, + "l": 310208384, + "m": false, + "p": "9033.84000000", + "q": "0.01698000" + }, + { + "M": true, + "T": 1588749211103, + "a": 284862062, + "f": 310208385, + "l": 310208385, + "m": false, + "p": "9033.99000000", + "q": "0.00002300" + }, + { + "M": true, + "T": 1588749211103, + "a": 284862063, + "f": 310208386, + "l": 310208386, + "m": false, + "p": "9034.69000000", + "q": "0.00113500" + }, + { + "M": true, + "T": 1588749211103, + "a": 284862064, + "f": 310208387, + "l": 310208387, + "m": false, + "p": "9034.78000000", + "q": "0.00300000" + }, + { + "M": true, + "T": 1588749211103, + "a": 284862065, + "f": 310208388, + "l": 310208388, + "m": false, + "p": "9034.96000000", + "q": "0.00328600" + }, + { + "M": true, + "T": 1588749211181, + "a": 284862066, + "f": 310208389, + "l": 310208389, + "m": true, + "p": "9034.00000000", + "q": "0.00221300" + }, + { + "M": true, + "T": 1588749211181, + "a": 284862067, + "f": 310208390, + "l": 310208390, + "m": true, + "p": "9033.99000000", + "q": "0.03797000" + }, + { + "M": true, + "T": 1588749211181, + "a": 284862068, + "f": 310208391, + "l": 310208391, + "m": true, + "p": "9033.36000000", + "q": "0.30000000" + }, + { + "M": true, + "T": 1588749211181, + "a": 284862069, + "f": 310208392, + "l": 310208392, + "m": true, + "p": "9033.35000000", + "q": "0.05275200" + }, + { + "M": true, + "T": 1588749211918, + "a": 284862070, + "f": 310208393, + "l": 310208393, + "m": false, + "p": "9033.87000000", + "q": "0.06810800" + }, + { + "M": true, + "T": 1588749212020, + "a": 284862071, + "f": 310208394, + "l": 310208394, + "m": true, + "p": "9034.27000000", + "q": "0.15108700" + }, + { + "M": true, + "T": 1588749212150, + "a": 284862072, + "f": 310208395, + "l": 310208395, + "m": false, + "p": "9034.29000000", + "q": "0.00221300" + }, + { + "M": true, + "T": 1588749212150, + "a": 284862073, + "f": 310208396, + "l": 310208396, + "m": false, + "p": "9034.34000000", + "q": "0.00050300" + }, + { + "M": true, + "T": 1588749212539, + "a": 284862074, + "f": 310208397, + "l": 310208397, + "m": true, + "p": "9034.36000000", + "q": "0.09449800" + }, + { + "M": true, + "T": 1588749212863, + "a": 284862075, + "f": 310208398, + "l": 310208398, + "m": true, + "p": "9034.36000000", + "q": "0.06005600" + }, + { + "M": true, + "T": 1588749212948, + "a": 284862076, + "f": 310208399, + "l": 310208399, + "m": false, + "p": "9034.37000000", + "q": "0.17691900" + }, + { + "M": true, + "T": 1588749212948, + "a": 284862077, + "f": 310208400, + "l": 310208400, + "m": false, + "p": "9034.72000000", + "q": "0.15438100" + }, + { + "M": true, + "T": 1588749213196, + "a": 284862078, + "f": 310208401, + "l": 310208401, + "m": true, + "p": "9034.36000000", + "q": "0.06034800" + }, + { + "M": true, + "T": 1588749213287, + "a": 284862079, + "f": 310208402, + "l": 310208402, + "m": true, + "p": "9034.36000000", + "q": "0.64000000" + }, + { + "M": true, + "T": 1588749213530, + "a": 284862080, + "f": 310208403, + "l": 310208403, + "m": true, + "p": "9034.36000000", + "q": "0.06040300" + }, + { + "M": true, + "T": 1588749213795, + "a": 284862081, + "f": 310208404, + "l": 310208404, + "m": true, + "p": "9034.36000000", + "q": "0.00767900" + }, + { + "M": true, + "T": 1588749213868, + "a": 284862082, + "f": 310208405, + "l": 310208405, + "m": true, + "p": "9034.36000000", + "q": "0.06015600" + }, + { + "M": true, + "T": 1588749214047, + "a": 284862083, + "f": 310208406, + "l": 310208406, + "m": true, + "p": "9034.36000000", + "q": "0.01686000" + }, + { + "M": true, + "T": 1588749214047, + "a": 284862084, + "f": 310208407, + "l": 310208407, + "m": true, + "p": "9033.76000000", + "q": "0.00300000" + }, + { + "M": true, + "T": 1588749214047, + "a": 284862085, + "f": 310208408, + "l": 310208408, + "m": true, + "p": "9033.39000000", + "q": "0.00221300" + }, + { + "M": true, + "T": 1588749214047, + "a": 284862086, + "f": 310208409, + "l": 310208409, + "m": true, + "p": "9032.75000000", + "q": "0.00300000" + }, + { + "M": true, + "T": 1588749214047, + "a": 284862087, + "f": 310208410, + "l": 310208410, + "m": true, + "p": "9032.70000000", + "q": "0.01492700" + }, + { + "M": true, + "T": 1588749214231, + "a": 284862088, + "f": 310208411, + "l": 310208411, + "m": true, + "p": "9034.35000000", + "q": "0.06732400" + }, + { + "M": true, + "T": 1588749214650, + "a": 284862089, + "f": 310208412, + "l": 310208412, + "m": false, + "p": "9033.97000000", + "q": "0.00221200" + }, + { + "M": true, + "T": 1588749214752, + "a": 284862090, + "f": 310208413, + "l": 310208413, + "m": false, + "p": "9033.92000000", + "q": "0.00628100" + }, + { + "M": true, + "T": 1588749215533, + "a": 284862091, + "f": 310208414, + "l": 310208414, + "m": true, + "p": "9033.43000000", + "q": "0.00408600" + }, + { + "M": true, + "T": 1588749215533, + "a": 284862092, + "f": 310208415, + "l": 310208415, + "m": true, + "p": "9033.42000000", + "q": "0.00510400" + }, + { + "M": true, + "T": 1588749215916, + "a": 284862093, + "f": 310208416, + "l": 310208416, + "m": true, + "p": "9033.45000000", + "q": "0.00375300" + }, + { + "M": true, + "T": 1588749216016, + "a": 284862094, + "f": 310208417, + "l": 310208417, + "m": true, + "p": "9033.46000000", + "q": "0.00192000" + }, + { + "M": true, + "T": 1588749216129, + "a": 284862095, + "f": 310208418, + "l": 310208418, + "m": false, + "p": "9033.76000000", + "q": "0.00299900" + }, + { + "M": true, + "T": 1588749216139, + "a": 284862096, + "f": 310208419, + "l": 310208419, + "m": true, + "p": "9033.49000000", + "q": "0.01195400" + }, + { + "M": true, + "T": 1588749216981, + "a": 284862097, + "f": 310208420, + "l": 310208420, + "m": true, + "p": "9033.52000000", + "q": "0.01196100" + }, + { + "M": true, + "T": 1588749217173, + "a": 284862098, + "f": 310208421, + "l": 310208421, + "m": true, + "p": "9033.58000000", + "q": "0.01082500" + }, + { + "M": true, + "T": 1588749217445, + "a": 284862099, + "f": 310208422, + "l": 310208422, + "m": false, + "p": "9033.76000000", + "q": "0.00000100" + }, + { + "M": true, + "T": 1588749217615, + "a": 284862100, + "f": 310208423, + "l": 310208423, + "m": true, + "p": "9033.59000000", + "q": "0.00310300" + }, + { + "M": true, + "T": 1588749217735, + "a": 284862101, + "f": 310208424, + "l": 310208424, + "m": true, + "p": "9033.59000000", + "q": "0.01054800" + }, + { + "M": true, + "T": 1588749219343, + "a": 284862102, + "f": 310208425, + "l": 310208425, + "m": true, + "p": "9033.59000000", + "q": "0.00141300" + }, + { + "M": true, + "T": 1588749219456, + "a": 284862103, + "f": 310208426, + "l": 310208426, + "m": false, + "p": "9033.93000000", + "q": "0.10427300" + }, + { + "M": true, + "T": 1588749219468, + "a": 284862104, + "f": 310208427, + "l": 310208427, + "m": true, + "p": "9033.59000000", + "q": "0.01196100" + }, + { + "M": true, + "T": 1588749219554, + "a": 284862105, + "f": 310208428, + "l": 310208428, + "m": false, + "p": "9033.93000000", + "q": "0.06354800" + }, + { + "M": true, + "T": 1588749219595, + "a": 284862106, + "f": 310208429, + "l": 310208429, + "m": true, + "p": "9033.59000000", + "q": "0.01000800" + }, + { + "M": true, + "T": 1588749219674, + "a": 284862107, + "f": 310208430, + "l": 310208430, + "m": false, + "p": "9033.89000000", + "q": "0.00477700" + }, + { + "M": true, + "T": 1588749219718, + "a": 284862108, + "f": 310208431, + "l": 310208431, + "m": false, + "p": "9033.89000000", + "q": "0.17215400" + }, + { + "M": true, + "T": 1588749219718, + "a": 284862109, + "f": 310208432, + "l": 310208432, + "m": false, + "p": "9033.93000000", + "q": "0.11564800" + }, + { + "M": true, + "T": 1588749222023, + "a": 284862110, + "f": 310208433, + "l": 310208433, + "m": true, + "p": "9033.72000000", + "q": "0.00600900" + }, + { + "M": true, + "T": 1588749222214, + "a": 284862111, + "f": 310208434, + "l": 310208434, + "m": true, + "p": "9033.72000000", + "q": "0.01325500" + }, + { + "M": true, + "T": 1588749222458, + "a": 284862112, + "f": 310208435, + "l": 310208435, + "m": true, + "p": "9033.69000000", + "q": "0.17693000" + }, + { + "M": true, + "T": 1588749222458, + "a": 284862113, + "f": 310208436, + "l": 310208436, + "m": true, + "p": "9033.65000000", + "q": "0.17263000" + }, + { + "M": true, + "T": 1588749222660, + "a": 284862114, + "f": 310208437, + "l": 310208437, + "m": false, + "p": "9033.92000000", + "q": "0.00285300" + }, + { + "M": true, + "T": 1588749222781, + "a": 284862115, + "f": 310208438, + "l": 310208438, + "m": false, + "p": "9033.97000000", + "q": "0.00000100" + }, + { + "M": true, + "T": 1588749222781, + "a": 284862116, + "f": 310208439, + "l": 310208439, + "m": false, + "p": "9034.05000000", + "q": "0.00840200" + }, + { + "M": true, + "T": 1588749222781, + "a": 284862117, + "f": 310208440, + "l": 310208440, + "m": false, + "p": "9034.73000000", + "q": "0.12175200" + }, + { + "M": true, + "T": 1588749222781, + "a": 284862118, + "f": 310208441, + "l": 310208441, + "m": false, + "p": "9034.78000000", + "q": "0.00300000" + }, + { + "M": true, + "T": 1588749222781, + "a": 284862119, + "f": 310208442, + "l": 310208442, + "m": false, + "p": "9034.82000000", + "q": "0.16684500" + }, + { + "M": true, + "T": 1588749224258, + "a": 284862120, + "f": 310208443, + "l": 310208443, + "m": false, + "p": "9033.77000000", + "q": "0.02419200" + }, + { + "M": true, + "T": 1588749225293, + "a": 284862121, + "f": 310208444, + "l": 310208444, + "m": false, + "p": "9033.77000000", + "q": "0.10000000" + }, + { + "M": true, + "T": 1588749225794, + "a": 284862122, + "f": 310208445, + "l": 310208446, + "m": true, + "p": "9033.76000000", + "q": "0.00521300" + }, + { + "M": true, + "T": 1588749225794, + "a": 284862123, + "f": 310208447, + "l": 310208447, + "m": true, + "p": "9033.28000000", + "q": "0.08762000" + }, + { + "M": true, + "T": 1588749225794, + "a": 284862124, + "f": 310208448, + "l": 310208448, + "m": true, + "p": "9033.26000000", + "q": "0.00716700" + }, + { + "M": true, + "T": 1588749226839, + "a": 284862125, + "f": 310208449, + "l": 310208449, + "m": false, + "p": "9033.63000000", + "q": "0.14333200" + }, + { + "M": true, + "T": 1588749227213, + "a": 284862126, + "f": 310208450, + "l": 310208450, + "m": true, + "p": "9033.30000000", + "q": "0.02214100" + }, + { + "M": true, + "T": 1588749228758, + "a": 284862127, + "f": 310208451, + "l": 310208451, + "m": false, + "p": "9033.70000000", + "q": "0.19302600" + }, + { + "M": true, + "T": 1588749228758, + "a": 284862128, + "f": 310208452, + "l": 310208452, + "m": false, + "p": "9033.72000000", + "q": "0.00755100" + }, + { + "M": true, + "T": 1588749228758, + "a": 284862129, + "f": 310208453, + "l": 310208453, + "m": false, + "p": "9033.79000000", + "q": "0.09488700" + }, + { + "M": true, + "T": 1588749230513, + "a": 284862130, + "f": 310208454, + "l": 310208454, + "m": true, + "p": "9033.34000000", + "q": "0.00221300" + }, + { + "M": true, + "T": 1588749230513, + "a": 284862131, + "f": 310208455, + "l": 310208456, + "m": true, + "p": "9033.26000000", + "q": "0.09554300" + }, + { + "M": true, + "T": 1588749230513, + "a": 284862132, + "f": 310208457, + "l": 310208457, + "m": true, + "p": "9032.76000000", + "q": "0.18248800" + }, + { + "M": true, + "T": 1588749230513, + "a": 284862133, + "f": 310208458, + "l": 310208460, + "m": true, + "p": "9032.75000000", + "q": "0.01452300" + }, + { + "M": true, + "T": 1588749230513, + "a": 284862134, + "f": 310208461, + "l": 310208461, + "m": true, + "p": "9032.18000000", + "q": "0.10523300" + }, + { + "M": true, + "T": 1588749230737, + "a": 284862135, + "f": 310208462, + "l": 310208462, + "m": false, + "p": "9033.03000000", + "q": "0.01910900" + }, + { + "M": true, + "T": 1588749230744, + "a": 284862136, + "f": 310208463, + "l": 310208463, + "m": false, + "p": "9033.03000000", + "q": "0.02392000" + }, + { + "M": true, + "T": 1588749230847, + "a": 284862137, + "f": 310208464, + "l": 310208464, + "m": false, + "p": "9032.99000000", + "q": "0.01869300" + }, + { + "M": true, + "T": 1588749230859, + "a": 284862138, + "f": 310208465, + "l": 310208465, + "m": true, + "p": "9032.21000000", + "q": "0.00221400" + }, + { + "M": true, + "T": 1588749230859, + "a": 284862139, + "f": 310208466, + "l": 310208466, + "m": true, + "p": "9031.92000000", + "q": "0.00001200" + }, + { + "M": true, + "T": 1588749231463, + "a": 284862140, + "f": 310208467, + "l": 310208467, + "m": false, + "p": "9032.91000000", + "q": "0.00149300" + }, + { + "M": true, + "T": 1588749232655, + "a": 284862141, + "f": 310208468, + "l": 310208468, + "m": true, + "p": "9032.78000000", + "q": "0.03052400" + }, + { + "M": true, + "T": 1588749232806, + "a": 284862142, + "f": 310208469, + "l": 310208469, + "m": true, + "p": "9032.89000000", + "q": "0.17694800" + }, + { + "M": true, + "T": 1588749232806, + "a": 284862143, + "f": 310208470, + "l": 310208470, + "m": true, + "p": "9032.78000000", + "q": "0.22305200" + }, + { + "M": true, + "T": 1588749234556, + "a": 284862144, + "f": 310208471, + "l": 310208471, + "m": false, + "p": "9032.79000000", + "q": "0.00736000" + }, + { + "M": true, + "T": 1588749234556, + "a": 284862145, + "f": 310208472, + "l": 310208472, + "m": false, + "p": "9033.00000000", + "q": "0.05323400" + }, + { + "M": true, + "T": 1588749235418, + "a": 284862146, + "f": 310208473, + "l": 310208473, + "m": false, + "p": "9033.00000000", + "q": "0.04675200" + }, + { + "M": true, + "T": 1588749235620, + "a": 284862147, + "f": 310208474, + "l": 310208474, + "m": false, + "p": "9033.00000000", + "q": "0.00001400" + }, + { + "M": true, + "T": 1588749235620, + "a": 284862148, + "f": 310208475, + "l": 310208475, + "m": false, + "p": "9033.26000000", + "q": "0.00254400" + }, + { + "M": true, + "T": 1588749235641, + "a": 284862149, + "f": 310208476, + "l": 310208476, + "m": true, + "p": "9033.03000000", + "q": "0.17694300" + }, + { + "M": true, + "T": 1588749235641, + "a": 284862150, + "f": 310208477, + "l": 310208477, + "m": true, + "p": "9033.00000000", + "q": "0.38752300" + }, + { + "M": true, + "T": 1588749235641, + "a": 284862151, + "f": 310208478, + "l": 310208478, + "m": true, + "p": "9032.99000000", + "q": "0.15113500" + }, + { + "M": true, + "T": 1588749237197, + "a": 284862152, + "f": 310208479, + "l": 310208479, + "m": false, + "p": "9033.14000000", + "q": "0.01370900" + }, + { + "M": true, + "T": 1588749238872, + "a": 284862153, + "f": 310208480, + "l": 310208480, + "m": false, + "p": "9033.26000000", + "q": "0.00221400" + }, + { + "M": true, + "T": 1588749238873, + "a": 284862154, + "f": 310208481, + "l": 310208481, + "m": false, + "p": "9033.26000000", + "q": "0.00221400" + }, + { + "M": true, + "T": 1588749239695, + "a": 284862155, + "f": 310208482, + "l": 310208482, + "m": true, + "p": "9033.25000000", + "q": "0.00326000" + }, + { + "M": true, + "T": 1588749240265, + "a": 284862156, + "f": 310208483, + "l": 310208483, + "m": false, + "p": "9033.26000000", + "q": "0.01936800" + }, + { + "M": true, + "T": 1588749241110, + "a": 284862157, + "f": 310208484, + "l": 310208484, + "m": false, + "p": "9033.26000000", + "q": "0.00000700" + }, + { + "M": true, + "T": 1588749241417, + "a": 284862158, + "f": 310208485, + "l": 310208485, + "m": true, + "p": "9033.75000000", + "q": "0.00216600" + }, + { + "M": true, + "T": 1588749241521, + "a": 284862159, + "f": 310208486, + "l": 310208486, + "m": true, + "p": "9033.75000000", + "q": "0.03234900" + }, + { + "M": true, + "T": 1588749241658, + "a": 284862160, + "f": 310208487, + "l": 310208487, + "m": false, + "p": "9033.76000000", + "q": "0.00300000" + }, + { + "M": true, + "T": 1588749241658, + "a": 284862161, + "f": 310208488, + "l": 310208488, + "m": false, + "p": "9034.50000000", + "q": "0.00887200" + }, + { + "M": true, + "T": 1588749241658, + "a": 284862162, + "f": 310208489, + "l": 310208489, + "m": false, + "p": "9034.70000000", + "q": "0.00213800" + }, + { + "M": true, + "T": 1588749242084, + "a": 284862163, + "f": 310208490, + "l": 310208490, + "m": true, + "p": "9033.53000000", + "q": "0.00207700" + }, + { + "M": true, + "T": 1588749242207, + "a": 284862164, + "f": 310208491, + "l": 310208491, + "m": true, + "p": "9033.53000000", + "q": "0.00013600" + }, + { + "M": true, + "T": 1588749242207, + "a": 284862165, + "f": 310208492, + "l": 310208492, + "m": true, + "p": "9033.30000000", + "q": "0.00326000" + }, + { + "M": true, + "T": 1588749242245, + "a": 284862166, + "f": 310208493, + "l": 310208493, + "m": true, + "p": "9033.30000000", + "q": "0.01163000" + }, + { + "M": true, + "T": 1588749242387, + "a": 284862167, + "f": 310208494, + "l": 310208494, + "m": true, + "p": "9033.30000000", + "q": "0.00326900" + }, + { + "M": true, + "T": 1588749242387, + "a": 284862168, + "f": 310208495, + "l": 310208495, + "m": true, + "p": "9032.78000000", + "q": "0.01887100" + }, + { + "M": true, + "T": 1588749243106, + "a": 284862169, + "f": 310208496, + "l": 310208496, + "m": true, + "p": "9033.67000000", + "q": "0.08647100" + }, + { + "M": true, + "T": 1588749244280, + "a": 284862170, + "f": 310208497, + "l": 310208497, + "m": true, + "p": "9033.10000000", + "q": "0.00473900" + }, + { + "M": true, + "T": 1588749245682, + "a": 284862171, + "f": 310208498, + "l": 310208498, + "m": true, + "p": "9033.48000000", + "q": "0.05043800" + }, + { + "M": true, + "T": 1588749245832, + "a": 284862172, + "f": 310208499, + "l": 310208499, + "m": false, + "p": "9033.72000000", + "q": "0.00221300" + }, + { + "M": true, + "T": 1588749245880, + "a": 284862173, + "f": 310208500, + "l": 310208500, + "m": true, + "p": "9033.82000000", + "q": "0.00221300" + }, + { + "M": true, + "T": 1588749245880, + "a": 284862174, + "f": 310208501, + "l": 310208501, + "m": true, + "p": "9033.81000000", + "q": "0.00086600" + }, + { + "M": true, + "T": 1588749247456, + "a": 284862175, + "f": 310208502, + "l": 310208502, + "m": false, + "p": "9033.82000000", + "q": "0.14939100" + }, + { + "M": true, + "T": 1588749249172, + "a": 284862176, + "f": 310208503, + "l": 310208503, + "m": false, + "p": "9034.63000000", + "q": "0.02153500" + }, + { + "M": true, + "T": 1588749249988, + "a": 284862177, + "f": 310208504, + "l": 310208504, + "m": false, + "p": "9034.33000000", + "q": "0.00130000" + }, + { + "M": true, + "T": 1588749250605, + "a": 284862178, + "f": 310208505, + "l": 310208505, + "m": false, + "p": "9034.11000000", + "q": "0.01617000" + }, + { + "M": true, + "T": 1588749251227, + "a": 284862179, + "f": 310208506, + "l": 310208506, + "m": false, + "p": "9034.11000000", + "q": "0.01906100" + }, + { + "M": true, + "T": 1588749251452, + "a": 284862180, + "f": 310208507, + "l": 310208507, + "m": true, + "p": "9034.41000000", + "q": "0.40000000" + }, + { + "M": true, + "T": 1588749251512, + "a": 284862181, + "f": 310208508, + "l": 310208508, + "m": true, + "p": "9034.61000000", + "q": "0.00646800" + }, + { + "M": true, + "T": 1588749253390, + "a": 284862182, + "f": 310208509, + "l": 310208509, + "m": true, + "p": "9034.23000000", + "q": "0.00221400" + }, + { + "M": true, + "T": 1588749256526, + "a": 284862183, + "f": 310208510, + "l": 310208510, + "m": true, + "p": "9034.23000000", + "q": "0.00221400" + }, + { + "M": true, + "T": 1588749256529, + "a": 284862184, + "f": 310208511, + "l": 310208511, + "m": true, + "p": "9034.23000000", + "q": "0.00221400" + }, + { + "M": true, + "T": 1588749256534, + "a": 284862185, + "f": 310208512, + "l": 310208512, + "m": true, + "p": "9034.23000000", + "q": "0.00221400" + }, + { + "M": true, + "T": 1588749256534, + "a": 284862186, + "f": 310208513, + "l": 310208513, + "m": true, + "p": "9034.23000000", + "q": "0.00221400" + }, + { + "M": true, + "T": 1588749256755, + "a": 284862187, + "f": 310208514, + "l": 310208514, + "m": true, + "p": "9034.23000000", + "q": "0.03371300" + }, + { + "M": true, + "T": 1588749256755, + "a": 284862188, + "f": 310208515, + "l": 310208516, + "m": true, + "p": "9033.84000000", + "q": "0.01628700" + }, + { + "M": true, + "T": 1588749258021, + "a": 284862189, + "f": 310208517, + "l": 310208518, + "m": false, + "p": "9033.85000000", + "q": "0.36724000" + }, + { + "M": true, + "T": 1588749258021, + "a": 284862190, + "f": 310208519, + "l": 310208519, + "m": false, + "p": "9034.00000000", + "q": "0.15371900" + }, + { + "M": true, + "T": 1588749258144, + "a": 284862191, + "f": 310208520, + "l": 310208520, + "m": true, + "p": "9033.84000000", + "q": "0.00479400" + }, + { + "M": true, + "T": 1588749258271, + "a": 284862192, + "f": 310208521, + "l": 310208521, + "m": false, + "p": "9033.93000000", + "q": "0.01212200" + }, + { + "M": true, + "T": 1588749260187, + "a": 284862193, + "f": 310208522, + "l": 310208522, + "m": true, + "p": "9033.84000000", + "q": "0.00221400" + }, + { + "M": true, + "T": 1588749260193, + "a": 284862194, + "f": 310208523, + "l": 310208523, + "m": true, + "p": "9033.84000000", + "q": "0.00221400" + }, + { + "M": true, + "T": 1588749260193, + "a": 284862195, + "f": 310208524, + "l": 310208524, + "m": true, + "p": "9033.84000000", + "q": "0.00221400" + }, + { + "M": true, + "T": 1588749260212, + "a": 284862196, + "f": 310208525, + "l": 310208525, + "m": true, + "p": "9033.84000000", + "q": "0.00221400" + }, + { + "M": true, + "T": 1588749260493, + "a": 284862197, + "f": 310208526, + "l": 310208527, + "m": false, + "p": "9033.85000000", + "q": "0.21682400" + }, + { + "M": true, + "T": 1588749261522, + "a": 284862198, + "f": 310208528, + "l": 310208528, + "m": true, + "p": "9033.84000000", + "q": "0.00166900" + }, + { + "M": true, + "T": 1588749262305, + "a": 284862199, + "f": 310208529, + "l": 310208529, + "m": true, + "p": "9033.84000000", + "q": "0.05665300" + }, + { + "M": true, + "T": 1588749262305, + "a": 284862200, + "f": 310208530, + "l": 310208530, + "m": true, + "p": "9033.82000000", + "q": "0.00221300" + }, + { + "M": true, + "T": 1588749262305, + "a": 284862201, + "f": 310208531, + "l": 310208531, + "m": true, + "p": "9033.81000000", + "q": "0.01113400" + }, + { + "M": true, + "T": 1588749262616, + "a": 284862202, + "f": 310208532, + "l": 310208532, + "m": false, + "p": "9034.00000000", + "q": "0.04755900" + }, + { + "M": true, + "T": 1588749262719, + "a": 284862203, + "f": 310208533, + "l": 310208533, + "m": false, + "p": "9034.00000000", + "q": "0.00755800" + }, + { + "M": true, + "T": 1588749263231, + "a": 284862204, + "f": 310208534, + "l": 310208534, + "m": false, + "p": "9034.00000000", + "q": "0.06546300" + } + ], + "queryString": "limit=1000\u0026symbol=BTCUSDT", + "bodyParams": "", + "headers": {} + }, + { + "data": [ + { + "M": true, + "T": 1590640145871, + "a": 303004096, + "f": 329755557, + "l": 329755557, + "m": false, + "p": "9195.09000000", + "q": "0.10000000" + }, + { + "M": true, + "T": 1590640145901, + "a": 303004097, + "f": 329755558, + "l": 329755558, + "m": true, + "p": "9194.99000000", + "q": "0.00000700" + }, + { + "M": true, + "T": 1590640145901, + "a": 303004098, + "f": 329755559, + "l": 329755559, + "m": true, + "p": "9194.98000000", + "q": "0.01963500" + }, + { + "M": true, + "T": 1590640145980, + "a": 303004099, + "f": 329755560, + "l": 329755560, + "m": false, + "p": "9194.99000000", + "q": "0.00490700" + }, + { + "M": true, + "T": 1590640146110, + "a": 303004100, + "f": 329755561, + "l": 329755561, + "m": false, + "p": "9194.99000000", + "q": "0.09509300" } ], "queryString": "limit=5\u0026symbol=BTCUSDT", @@ -942,25 +10949,25 @@ { "data": [ { - "symbol": "LTCBTC", - "orderId": 1, - "clientOrderId": "mySuperOrderOfAwesome", - "price": "0.1", - "origQty": "1.0", - "executedQty": "0.0", + "clientOrderId": "myOrder1", "cummulativeQuoteQty": "0.0", + "executedQty": "0.0", + "icebergQty": "0.0", + "isWorking": true, + "orderId": 1, + "origQty": "1.0", + "price": "0.1", + "side": "BUY", "status": "NEW", + "stopPrice": "0.0", + "symbol": "LTCBTC", + "time": 1499827319559, "timeInForce": "GTC", "type": "LIMIT", - "side": "BUY", - "stopPrice": "0.0", - "icebergQty": "0.0", - "time": 1499827319559, - "updateTime": 1499827319559, - "isWorking": true + "updateTime": 1499827319559 } ], - "queryString": "limit=1000\u0026recvWindow=5000\u0026signature=4c63d8c6c56c8376c43df8bae65c19bc5c45677e501f8cf07227c7061d40ab28\u0026symbol=LTCBTC\u0026timestamp=1560295613000", + "queryString": "recvWindow=5000\u0026signature=2d45930bd9a4579c19378046d570031e38473b9c24f796f60a80ba5b7768626d\u0026symbol=BTCUSDT\u0026timestamp=1588749277000", "bodyParams": "", "headers": { "X-Mbx-Apikey": [ @@ -971,25 +10978,25 @@ { "data": [ { - "symbol": "LTCBTC", - "orderId": 1, - "clientOrderId": "myOrder1", - "price": "0.1", - "origQty": "1.0", - "executedQty": "0.0", + "clientOrderId": "mySuperOrderOfAwesome", "cummulativeQuoteQty": "0.0", + "executedQty": "0.0", + "icebergQty": "0.0", + "isWorking": true, + "orderId": 1, + "origQty": "1.0", + "price": "0.1", + "side": "BUY", "status": "NEW", + "stopPrice": "0.0", + "symbol": "LTCBTC", + "time": 1499827319559, "timeInForce": "GTC", "type": "LIMIT", - "side": "BUY", - "stopPrice": "0.0", - "icebergQty": "0.0", - "time": 1499827319559, - "updateTime": 1499827319559, - "isWorking": true + "updateTime": 1499827319559 } ], - "queryString": "recvWindow=5000\u0026signature=ffa80a00a4ac2e29493e2d7b36df11de1e4b63f4f0cc584cfeaf1709a6478dc1\u0026symbol=BTCUSDT\u0026timestamp=1560296162000", + "queryString": "limit=1000\u0026recvWindow=5000\u0026signature=0c070605ec17040dfff47b9be73e6e0e2104315bab928cf6d288bf340c4619d0\u0026symbol=LTCBTC\u0026timestamp=1588749355000", "bodyParams": "", "headers": { "X-Mbx-Apikey": [ @@ -49752,6 +59759,6334 @@ "queryString": "interval=5m\u0026limit=24\u0026symbol=BTCUSDT", "bodyParams": "", "headers": {} + }, + { + "data": [ + [ + 1588740120000, + "9033.34000000", + "9039.99000000", + "9032.75000000", + "9033.15000000", + "31.19296800", + 1588740179999, + "281893.08800082", + 282, + "6.35810300", + "57447.26912415", + "0" + ], + [ + 1588740180000, + "9033.15000000", + "9035.00000000", + "9012.00000000", + "9012.00000000", + "135.21584100", + 1588740239999, + "1220631.05800100", + 864, + "31.88240800", + "287831.95256737", + "0" + ], + [ + 1588740240000, + "9012.00000000", + "9021.93000000", + "9006.84000000", + "9012.03000000", + "43.69574800", + 1588740299999, + "393923.24133765", + 661, + "17.43171000", + "157152.06909673", + "0" + ], + [ + 1588740300000, + "9011.78000000", + "9019.54000000", + "9010.79000000", + "9017.53000000", + "9.72578600", + 1588740359999, + "87680.26853897", + 270, + "6.42492600", + "57923.75798630", + "0" + ], + [ + 1588740360000, + "9017.25000000", + "9021.00000000", + "9016.91000000", + "9020.00000000", + "13.86743300", + 1588740419999, + "125077.29293425", + 285, + "8.29386900", + "74806.54435326", + "0" + ], + [ + 1588740420000, + "9020.00000000", + "9020.00000000", + "9017.00000000", + "9018.19000000", + "9.18255800", + 1588740479999, + "82818.96982245", + 184, + "5.54443700", + "50006.58491580", + "0" + ], + [ + 1588740480000, + "9017.10000000", + "9018.19000000", + "9009.00000000", + "9009.59000000", + "25.45786300", + 1588740539999, + "229445.26448543", + 376, + "10.40268600", + "93755.58526551", + "0" + ], + [ + 1588740540000, + "9009.00000000", + "9009.01000000", + "8990.54000000", + "9002.05000000", + "55.53048800", + 1588740599999, + "499743.90059820", + 959, + "17.33477500", + "155995.02621397", + "0" + ], + [ + 1588740600000, + "9002.06000000", + "9008.48000000", + "8996.56000000", + "9000.45000000", + "27.10670300", + 1588740659999, + "244040.85258475", + 439, + "9.26255700", + "83393.76245690", + "0" + ], + [ + 1588740660000, + "9000.45000000", + "9006.92000000", + "8998.60000000", + "9005.26000000", + "42.28895900", + 1588740719999, + "380700.01238360", + 458, + "16.50008200", + "148539.95008793", + "0" + ], + [ + 1588740720000, + "9005.36000000", + "9005.84000000", + "8993.31000000", + "8996.93000000", + "41.87053000", + 1588740779999, + "376831.74142875", + 498, + "17.86056700", + "160731.80135188", + "0" + ], + [ + 1588740780000, + "8996.25000000", + "9009.00000000", + "8993.90000000", + "9000.00000000", + "58.18868200", + 1588740839999, + "523732.15333055", + 628, + "34.95054500", + "314606.94518286", + "0" + ], + [ + 1588740840000, + "8999.96000000", + "9000.00000000", + "8993.20000000", + "8996.31000000", + "17.97325100", + 1588740899999, + "161689.60634113", + 387, + "11.67267500", + "105009.81319499", + "0" + ], + [ + 1588740900000, + "8996.43000000", + "9008.98000000", + "8994.00000000", + "9007.94000000", + "34.13762900", + 1588740959999, + "307301.09881780", + 398, + "25.61865000", + "230610.27935463", + "0" + ], + [ + 1588740960000, + "9007.53000000", + "9015.00000000", + "9007.49000000", + "9014.78000000", + "30.48718500", + 1588741019999, + "274672.19856966", + 342, + "20.53458000", + "184990.77795860", + "0" + ], + [ + 1588741020000, + "9014.79000000", + "9017.74000000", + "9008.70000000", + "9010.07000000", + "45.76446600", + 1588741079999, + "412451.21505946", + 532, + "21.29281300", + "191937.66648174", + "0" + ], + [ + 1588741080000, + "9010.07000000", + "9010.43000000", + "9001.00000000", + "9004.36000000", + "38.63655700", + 1588741139999, + "347890.37124877", + 420, + "28.07446300", + "252782.96345283", + "0" + ], + [ + 1588741140000, + "9004.79000000", + "9008.84000000", + "8997.24000000", + "8997.26000000", + "33.82842100", + 1588741199999, + "304579.01159329", + 520, + "13.73651800", + "123713.98084934", + "0" + ], + [ + 1588741200000, + "8997.94000000", + "9020.00000000", + "8996.94000000", + "9018.11000000", + "54.01503400", + 1588741259999, + "486774.35876987", + 707, + "44.29706000", + "399185.79694346", + "0" + ], + [ + 1588741260000, + "9018.65000000", + "9024.00000000", + "9017.36000000", + "9023.03000000", + "23.68471100", + 1588741319999, + "213659.45909136", + 362, + "17.75810500", + "160193.08955811", + "0" + ], + [ + 1588741320000, + "9022.30000000", + "9024.52000000", + "9021.63000000", + "9022.70000000", + "18.47926400", + 1588741379999, + "166745.70821999", + 272, + "8.67826000", + "78307.15206862", + "0" + ], + [ + 1588741380000, + "9022.52000000", + "9023.62000000", + "9012.92000000", + "9016.07000000", + "101.59759300", + 1588741439999, + "916415.66385271", + 631, + "8.74759400", + "78901.75916905", + "0" + ], + [ + 1588741440000, + "9015.02000000", + "9018.51000000", + "9012.47000000", + "9016.00000000", + "15.85388000", + 1588741499999, + "142942.32215488", + 228, + "9.24766800", + "83383.83658712", + "0" + ], + [ + 1588741500000, + "9015.99000000", + "9016.53000000", + "9010.44000000", + "9011.84000000", + "20.67416500", + 1588741559999, + "186383.62765609", + 267, + "7.58947500", + "68418.92495879", + "0" + ], + [ + 1588741560000, + "9011.86000000", + "9012.42000000", + "9005.71000000", + "9012.26000000", + "13.31294900", + 1588741619999, + "119948.88735353", + 364, + "7.24855000", + "65309.88113298", + "0" + ], + [ + 1588741620000, + "9012.29000000", + "9021.58000000", + "9010.00000000", + "9020.82000000", + "23.51237500", + 1588741679999, + "211994.11007935", + 402, + "13.51012900", + "121821.74989254", + "0" + ], + [ + 1588741680000, + "9019.56000000", + "9031.06000000", + "9018.24000000", + "9029.29000000", + "36.17083900", + 1588741739999, + "326421.55030256", + 574, + "27.16687300", + "245158.59494372", + "0" + ], + [ + 1588741740000, + "9029.31000000", + "9030.94000000", + "9023.70000000", + "9023.85000000", + "23.28230300", + 1588741799999, + "210196.88145576", + 422, + "10.15721400", + "91701.95379557", + "0" + ], + [ + 1588741800000, + "9024.29000000", + "9030.54000000", + "9023.85000000", + "9028.64000000", + "26.60593700", + 1588741859999, + "240174.92100312", + 351, + "9.76419700", + "88153.86381321", + "0" + ], + [ + 1588741860000, + "9028.37000000", + "9031.70000000", + "9027.89000000", + "9029.74000000", + "11.61868300", + 1588741919999, + "104913.63657645", + 235, + "6.27622200", + "56674.05652614", + "0" + ], + [ + 1588741920000, + "9029.71000000", + "9030.00000000", + "9021.32000000", + "9030.00000000", + "23.85147700", + 1588741979999, + "215248.78497947", + 359, + "4.43172300", + "39995.10866686", + "0" + ], + [ + 1588741980000, + "9029.70000000", + "9029.94000000", + "9021.42000000", + "9024.82000000", + "13.27966000", + 1588742039999, + "119852.44393009", + 280, + "8.61523500", + "77755.42198854", + "0" + ], + [ + 1588742040000, + "9024.82000000", + "9025.64000000", + "9019.52000000", + "9024.00000000", + "13.98337600", + 1588742099999, + "126171.24458970", + 255, + "7.17423300", + "64737.93254748", + "0" + ], + [ + 1588742100000, + "9024.26000000", + "9027.11000000", + "9024.26000000", + "9027.04000000", + "11.33726400", + 1588742159999, + "102333.95099086", + 190, + "5.32147200", + "48032.94616679", + "0" + ], + [ + 1588742160000, + "9027.03000000", + "9037.00000000", + "9027.00000000", + "9035.81000000", + "31.81861500", + 1588742219999, + "287373.12585420", + 565, + "22.76582700", + "205608.36579273", + "0" + ], + [ + 1588742220000, + "9036.68000000", + "9039.00000000", + "9031.14000000", + "9033.60000000", + "29.92982200", + 1588742279999, + "270441.88727415", + 364, + "11.51944600", + "104081.44443003", + "0" + ], + [ + 1588742280000, + "9033.13000000", + "9035.78000000", + "9031.97000000", + "9033.42000000", + "11.87005300", + 1588742339999, + "107239.31074589", + 177, + "7.99858100", + "72262.49274076", + "0" + ], + [ + 1588742340000, + "9033.02000000", + "9033.94000000", + "9031.00000000", + "9032.11000000", + "7.43913000", + 1588742399999, + "67192.10856243", + 205, + "2.52815900", + "22834.69731851", + "0" + ], + [ + 1588742400000, + "9032.11000000", + "9033.86000000", + "9024.07000000", + "9025.22000000", + "19.39855000", + 1588742459999, + "175113.39600941", + 281, + "5.26727200", + "47552.53343066", + "0" + ], + [ + 1588742460000, + "9025.21000000", + "9026.64000000", + "9015.91000000", + "9021.80000000", + "67.76629600", + 1588742519999, + "611264.70969212", + 464, + "36.24148100", + "326894.87545571", + "0" + ], + [ + 1588742520000, + "9021.80000000", + "9021.80000000", + "9017.06000000", + "9020.90000000", + "8.24457300", + 1588742579999, + "74360.17287803", + 198, + "3.93783000", + "35517.08957260", + "0" + ], + [ + 1588742580000, + "9020.90000000", + "9022.86000000", + "9019.24000000", + "9020.25000000", + "14.92094000", + 1588742639999, + "134599.05776398", + 251, + "10.23677000", + "92344.87758704", + "0" + ], + [ + 1588742640000, + "9020.25000000", + "9029.71000000", + "9020.12000000", + "9029.70000000", + "39.03665400", + 1588742699999, + "352276.52806054", + 271, + "29.80518400", + "268972.81592918", + "0" + ], + [ + 1588742700000, + "9029.49000000", + "9029.69000000", + "9022.78000000", + "9026.27000000", + "103.69784300", + 1588742759999, + "936199.69702442", + 399, + "92.05563300", + "831115.86330628", + "0" + ], + [ + 1588742760000, + "9026.66000000", + "9026.94000000", + "9022.17000000", + "9022.91000000", + "10.08109200", + 1588742819999, + "90975.57395060", + 204, + "4.41066500", + "39804.49900078", + "0" + ], + [ + 1588742820000, + "9022.91000000", + "9025.00000000", + "9022.49000000", + "9025.00000000", + "15.09621000", + 1588742879999, + "136234.95880880", + 136, + "10.54292600", + "95147.00031457", + "0" + ], + [ + 1588742880000, + "9025.00000000", + "9028.39000000", + "9025.00000000", + "9028.26000000", + "8.22180500", + 1588742939999, + "74217.35599539", + 161, + "3.84496400", + "34708.43928476", + "0" + ], + [ + 1588742940000, + "9028.26000000", + "9028.39000000", + "9025.65000000", + "9025.65000000", + "17.57860900", + 1588742999999, + "158687.53469343", + 185, + "5.52433000", + "49874.69322131", + "0" + ], + [ + 1588743000000, + "9025.01000000", + "9026.24000000", + "9020.67000000", + "9025.00000000", + "40.80576400", + 1588743059999, + "368223.76536127", + 336, + "13.33411700", + "120324.69215032", + "0" + ], + [ + 1588743060000, + "9025.00000000", + "9026.98000000", + "9024.71000000", + "9025.93000000", + "15.73151300", + 1588743119999, + "141981.87714001", + 196, + "8.10819900", + "73179.15729431", + "0" + ], + [ + 1588743120000, + "9026.33000000", + "9026.71000000", + "9001.77000000", + "9009.34000000", + "117.88902600", + 1588743179999, + "1062767.08266898", + 857, + "36.93554500", + "332910.33596602", + "0" + ], + [ + 1588743180000, + "9009.24000000", + "9013.63000000", + "9006.00000000", + "9007.25000000", + "28.75162900", + 1588743239999, + "259037.86976549", + 290, + "9.48824100", + "85485.75918373", + "0" + ], + [ + 1588743240000, + "9007.03000000", + "9010.05000000", + "9000.01000000", + "9001.71000000", + "32.55775400", + 1588743299999, + "293248.61128426", + 329, + "14.91075000", + "134315.34636590", + "0" + ], + [ + 1588743300000, + "9001.42000000", + "9007.88000000", + "8998.07000000", + "9006.37000000", + "54.10228800", + 1588743359999, + "487053.40129973", + 564, + "19.17545300", + "172648.35134442", + "0" + ], + [ + 1588743360000, + "9006.37000000", + "9007.25000000", + "9002.43000000", + "9006.23000000", + "51.00998500", + 1588743419999, + "459360.19688129", + 381, + "12.49521400", + "112536.04940054", + "0" + ], + [ + 1588743420000, + "9007.12000000", + "9015.00000000", + "9006.29000000", + "9015.00000000", + "44.31393500", + 1588743479999, + "399345.59620079", + 661, + "29.72078900", + "267836.42848920", + "0" + ], + [ + 1588743480000, + "9015.00000000", + "9017.87000000", + "9012.24000000", + "9016.61000000", + "34.41648900", + 1588743539999, + "310270.70720703", + 455, + "21.04386400", + "189712.48116327", + "0" + ], + [ + 1588743540000, + "9016.60000000", + "9021.78000000", + "9014.33000000", + "9021.00000000", + "92.77696900", + 1588743599999, + "836880.13549888", + 550, + "22.72430400", + "204948.46103232", + "0" + ], + [ + 1588743600000, + "9021.00000000", + "9024.06000000", + "9016.14000000", + "9021.32000000", + "38.36612500", + 1588743659999, + "346047.87183309", + 494, + "26.84553700", + "242129.36247451", + "0" + ], + [ + 1588743660000, + "9021.32000000", + "9024.06000000", + "9016.00000000", + "9016.01000000", + "16.88851600", + 1588743719999, + "152333.24938438", + 194, + "11.62854600", + "104888.25866399", + "0" + ] + ], + "queryString": "endTime=1588743688000\u0026interval=1m\u0026startTime=1588740088000\u0026symbol=BTCUSDT", + "bodyParams": "", + "headers": {} + }, + { + "data": [ + [ + 1588636800000, + "8871.92000000", + "8888.00000000", + "8871.92000000", + "8887.62000000", + "47.66737000", + 1588636859999, + "423305.63773405", + 617, + "25.94719700", + "230410.46415390", + "0" + ] + ], + "queryString": "endTime=1588636800000\u0026interval=1m\u0026startTime=1588636800000\u0026symbol=BTCUSDT", + "bodyParams": "", + "headers": {} + }, + { + "data": [ + [ + 1577836800000, + "7195.24000000", + "7196.25000000", + "7178.64000000", + "7179.78000000", + "95.50913300", + 1577837099999, + "686317.13625177", + 1127, + "32.77324500", + "235537.29504531", + "0" + ], + [ + 1577837100000, + "7179.76000000", + "7191.77000000", + "7178.20000000", + "7191.07000000", + "59.36522500", + 1577837399999, + "426481.26036406", + 631, + "24.76651300", + "177935.61820100", + "0" + ], + [ + 1577837400000, + "7193.15000000", + "7193.53000000", + "7180.24000000", + "7180.97000000", + "48.06851000", + 1577837699999, + "345446.50301879", + 694, + "19.42228300", + "139596.62168263", + "0" + ], + [ + 1577837700000, + "7180.97000000", + "7186.40000000", + "7177.35000000", + "7178.29000000", + "32.19292900", + 1577837999999, + "231162.55542356", + 576, + "12.96325800", + "93091.43327629", + "0" + ], + [ + 1577838000000, + "7177.71000000", + "7182.46000000", + "7175.47000000", + "7176.96000000", + "49.02739700", + 1577838299999, + "351927.89388145", + 710, + "22.81974400", + "163817.88115474", + "0" + ], + [ + 1577838300000, + "7177.59000000", + "7185.56000000", + "7176.11000000", + "7178.45000000", + "47.02232800", + 1577838599999, + "337612.29777385", + 662, + "22.60610800", + "162317.15701592", + "0" + ], + [ + 1577838600000, + "7178.19000000", + "7185.44000000", + "7177.54000000", + "7180.68000000", + "35.10983000", + 1577838899999, + "252130.90500262", + 635, + "19.13954100", + "137447.70846574", + "0" + ], + [ + 1577838900000, + "7180.96000000", + "7182.53000000", + "7176.23000000", + "7177.53000000", + "24.86349600", + 1577839199999, + "178533.13638991", + 515, + "10.40067900", + "74689.13949208", + "0" + ], + [ + 1577839200000, + "7177.14000000", + "7182.45000000", + "7176.34000000", + "7179.56000000", + "23.51413200", + 1577839499999, + "168815.11141275", + 430, + "14.28215400", + "102530.47311368", + "0" + ], + [ + 1577839500000, + "7179.35000000", + "7182.99000000", + "7179.35000000", + "7182.94000000", + "21.35885000", + 1577839799999, + "153387.48781809", + 388, + "13.23975300", + "95080.11545929", + "0" + ], + [ + 1577839800000, + "7182.94000000", + "7183.98000000", + "7175.51000000", + "7179.03000000", + "42.91097100", + 1577840099999, + "308092.13673214", + 739, + "20.42254800", + "146652.86619733", + "0" + ], + [ + 1577840100000, + "7178.65000000", + "7181.75000000", + "7175.46000000", + "7177.02000000", + "32.87210000", + 1577840399999, + "235950.15541644", + 533, + "13.31730000", + "95592.88054636", + "0" + ], + [ + 1577840400000, + "7176.47000000", + "7185.86000000", + "7175.71000000", + "7183.29000000", + "30.16307600", + 1577840699999, + "216611.56911648", + 596, + "13.60798500", + "97723.51606860", + "0" + ], + [ + 1577840700000, + "7183.55000000", + "7194.04000000", + "7182.82000000", + "7189.62000000", + "44.80332700", + 1577840999999, + "322109.95174577", + 564, + "31.19321800", + "224247.23205552", + "0" + ], + [ + 1577841000000, + "7189.63000000", + "7194.04000000", + "7188.62000000", + "7190.86000000", + "28.55411900", + 1577841299999, + "205367.58317887", + 428, + "11.45017500", + "82359.75026194", + "0" + ], + [ + 1577841300000, + "7190.46000000", + "7194.27000000", + "7189.23000000", + "7194.06000000", + "24.21607800", + 1577841599999, + "174147.67835753", + 449, + "9.21024500", + "66240.18705864", + "0" + ], + [ + 1577841600000, + "7193.02000000", + "7198.00000000", + "7190.79000000", + "7192.39000000", + "34.10757500", + 1577841899999, + "245382.36092326", + 546, + "15.49876300", + "111511.59548775", + "0" + ], + [ + 1577841900000, + "7193.01000000", + "7217.00000000", + "7191.98000000", + "7212.10000000", + "193.21939900", + 1577842199999, + "1392268.35865829", + 1477, + "141.44239000", + "1019053.48118736", + "0" + ], + [ + 1577842200000, + "7212.10000000", + "7230.00000000", + "7211.32000000", + "7218.83000000", + "273.46807000", + 1577842499999, + "1974637.04622372", + 1837, + "204.41950300", + "1475997.47530984", + "0" + ], + [ + 1577842500000, + "7219.11000000", + "7221.95000000", + "7210.53000000", + "7216.00000000", + "60.97776600", + 1577842799999, + "440073.27302928", + 696, + "25.91291800", + "187028.64162685", + "0" + ], + [ + 1577842800000, + "7216.02000000", + "7219.11000000", + "7207.17000000", + "7211.87000000", + "52.80141600", + 1577843099999, + "380871.05492710", + 670, + "27.73147800", + "200051.89521924", + "0" + ], + [ + 1577843100000, + "7212.34000000", + "7212.67000000", + "7205.01000000", + "7205.08000000", + "47.98705500", + 1577843399999, + "345869.92301800", + 583, + "22.70245600", + "163640.51690998", + "0" + ], + [ + 1577843400000, + "7205.08000000", + "7211.77000000", + "7204.28000000", + "7209.35000000", + "54.49179200", + 1577843699999, + "392739.25101900", + 668, + "43.09262500", + "310591.99690708", + "0" + ], + [ + 1577843700000, + "7209.75000000", + "7216.41000000", + "7207.39000000", + "7216.27000000", + "38.26293000", + 1577843999999, + "275874.49091546", + 519, + "24.45966300", + "176357.76159813", + "0" + ] + ], + "queryString": "endTime=1580515200000\u0026interval=5m\u0026limit=24\u0026startTime=1577836800000\u0026symbol=BTCUSDT", + "bodyParams": "", + "headers": {} + }, + { + "data": [ + [ + 1546300800000, + "3701.23000000", + "3810.16000000", + "3642.00000000", + "3797.14000000", + "23741.68703300", + 1546387199999, + "88149249.09230461", + 154227, + "12919.15589900", + "47973435.86685800", + "0" + ], + [ + 1546387200000, + "3796.45000000", + "3882.14000000", + "3750.45000000", + "3858.56000000", + "35156.46336900", + 1546473599999, + "133876627.24651060", + 218538, + "17921.60011400", + "68277897.66105788", + "0" + ], + [ + 1546473600000, + "3857.57000000", + "3862.74000000", + "3730.00000000", + "3766.78000000", + "29406.94835900", + 1546559999999, + "111657372.69526468", + 199812, + "14793.08326700", + "56172495.42692984", + "0" + ], + [ + 1546560000000, + "3767.20000000", + "3823.64000000", + "3703.57000000", + "3792.01000000", + "29519.55467100", + 1546646399999, + "111034550.64066196", + 192232, + "15579.30325800", + "58616203.97789647", + "0" + ], + [ + 1546646400000, + "3790.09000000", + "3840.99000000", + "3751.00000000", + "3770.96000000", + "30490.66775100", + 1546732799999, + "115893501.27515878", + 203673, + "14908.91417500", + "56667455.38615935", + "0" + ], + [ + 1546732800000, + "3771.12000000", + "4027.71000000", + "3740.00000000", + "3987.60000000", + "36553.80670900", + 1546819199999, + "142198812.18914709", + 240496, + "19772.88700800", + "76903705.93007119", + "0" + ], + [ + 1546819200000, + "3987.62000000", + "4017.90000000", + "3921.53000000", + "3975.45000000", + "31869.84626400", + 1546905599999, + "126830380.49287239", + 221219, + "16404.35224100", + "65287611.65056139", + "0" + ], + [ + 1546905600000, + "3976.76000000", + "4069.80000000", + "3903.00000000", + "3955.13000000", + "38901.42312200", + 1546991999999, + "154778846.54236616", + 242898, + "20047.97760100", + "79781104.89538665", + "0" + ], + [ + 1546992000000, + "3955.45000000", + "4006.81000000", + "3930.04000000", + "3966.65000000", + "28989.43951100", + 1547078399999, + "115218950.31554872", + 209240, + "14984.33702000", + "59559010.74523400", + "0" + ], + [ + 1547078400000, + "3966.06000000", + "3996.01000000", + "3540.00000000", + "3585.88000000", + "59402.22851000", + 1547164799999, + "221789348.03469807", + 374760, + "28288.32257400", + "105616252.06340843", + "0" + ], + [ + 1547164800000, + "3585.88000000", + "3658.00000000", + "3465.00000000", + "3601.31000000", + "38338.65473300", + 1547251199999, + "137560743.62485982", + 264996, + "19907.35058600", + "71430015.64522145", + "0" + ], + [ + 1547251200000, + "3601.31000000", + "3618.19000000", + "3530.00000000", + "3583.13000000", + "21999.92835400", + 1547337599999, + "78908770.67658037", + 175679, + "11645.59884600", + "41778835.50680978", + "0" + ], + [ + 1547337600000, + "3584.10000000", + "3611.10000000", + "3441.30000000", + "3476.81000000", + "26385.75745400", + 1547423999999, + "92882249.46737902", + 183113, + "13692.42064000", + "48229503.01532720", + "0" + ], + [ + 1547424000000, + "3477.56000000", + "3671.87000000", + "3467.02000000", + "3626.09000000", + "35235.21121500", + 1547510399999, + "125631820.06705057", + 229452, + "18416.41690200", + "65668831.10400985", + "0" + ], + [ + 1547510400000, + "3626.08000000", + "3648.42000000", + "3516.62000000", + "3553.06000000", + "34137.99745900", + 1547596799999, + "122785440.22887539", + 231684, + "17225.62243400", + "61971796.91256990", + "0" + ], + [ + 1547596800000, + "3553.06000000", + "3645.00000000", + "3543.51000000", + "3591.84000000", + "27480.17997700", + 1547683199999, + "98504455.20666535", + 205159, + "14183.69988000", + "50843136.81523343", + "0" + ], + [ + 1547683200000, + "3591.84000000", + "3634.70000000", + "3530.39000000", + "3616.21000000", + "29755.44083800", + 1547769599999, + "106709136.97324342", + 217797, + "16010.50339500", + "57427195.93767381", + "0" + ], + [ + 1547769600000, + "3613.32000000", + "3620.00000000", + "3565.75000000", + "3594.87000000", + "22713.44675500", + 1547855999999, + "81699723.54479144", + 177567, + "12611.08375700", + "45362975.23668103", + "0" + ], + [ + 1547856000000, + "3594.87000000", + "3720.00000000", + "3594.23000000", + "3665.30000000", + "22171.57812300", + 1547942399999, + "81354185.90325992", + 175054, + "11637.25817100", + "42690540.30785225", + "0" + ], + [ + 1547942400000, + "3665.75000000", + "3693.73000000", + "3475.00000000", + "3539.28000000", + "27901.93859800", + 1548028799999, + "99767239.95381454", + 204941, + "13875.11138100", + "49633530.63808028", + "0" + ], + [ + 1548028800000, + "3539.26000000", + "3559.51000000", + "3475.50000000", + "3526.90000000", + "19644.43683900", + 1548115199999, + "69316548.76685554", + 160825, + "10462.02027800", + "36918177.63501831", + "0" + ], + [ + 1548115200000, + "3526.88000000", + "3608.50000000", + "3434.85000000", + "3570.93000000", + "29336.44296700", + 1548201599999, + "103804480.11605988", + 195484, + "15661.33300100", + "55461347.69397660", + "0" + ], + [ + 1548201600000, + "3570.41000000", + "3607.98000000", + "3514.50000000", + "3552.82000000", + "24938.84269800", + 1548287999999, + "88816396.34583544", + 192892, + "13136.69325300", + "46789527.00878810", + "0" + ], + [ + 1548288000000, + "3552.97000000", + "3589.00000000", + "3529.22000000", + "3569.62000000", + "20826.25118000", + 1548374399999, + "74037052.86632736", + 162159, + "10975.97457000", + "39023591.88152408", + "0" + ], + [ + 1548374400000, + "3569.07000000", + "3587.15000000", + "3522.51000000", + "3565.29000000", + "17608.34667100", + 1548460799999, + "62634926.45524528", + 153413, + "9690.39815200", + "34473989.38670668", + "0" + ], + [ + 1548460800000, + "3566.69000000", + "3662.94000000", + "3545.00000000", + "3565.25000000", + "19476.53234400", + 1548547199999, + "69841766.64693149", + 135369, + "10203.40031500", + "36578851.51879908", + "0" + ], + [ + 1548547200000, + "3565.62000000", + "3579.00000000", + "3486.00000000", + "3550.84000000", + "22735.59816200", + 1548633599999, + "80743416.84653682", + 163855, + "11568.56739900", + "41100311.44740031", + "0" + ], + [ + 1548633600000, + "3550.05000000", + "3557.75000000", + "3380.27000000", + "3434.15000000", + "40405.11140100", + 1548719999999, + "139258708.76430879", + 260799, + "20334.27173900", + "70100390.81728584", + "0" + ], + [ + 1548720000000, + "3434.00000000", + "3443.45000000", + "3349.92000000", + "3411.04000000", + "29544.92897700", + 1548806399999, + "100542807.46479908", + 189650, + "15626.31123100", + "53180295.18051735", + "0" + ], + [ + 1548806400000, + "3410.04000000", + "3478.00000000", + "3387.10000000", + "3458.18000000", + "23968.26024300", + 1548892799999, + "82521122.86191754", + 180820, + "13324.33962800", + "45877250.05787340", + "0" + ], + [ + 1548892800000, + "3457.50000000", + "3489.20000000", + "3418.80000000", + "3434.10000000", + "29607.19025300", + 1548979199999, + "101928346.97699686", + 198100, + "15325.82878300", + "52764623.95051864", + "0" + ], + [ + 1548979200000, + "3434.10000000", + "3488.00000000", + "3401.20000000", + "3462.07000000", + "25260.47615900", + 1549065599999, + "87075914.23266830", + 167520, + "13533.34462800", + "46664199.94907889", + "0" + ], + [ + 1549065600000, + "3462.20000000", + "3526.40000000", + "3440.29000000", + "3504.77000000", + "17920.80200000", + 1549151999999, + "62134037.97539881", + 153234, + "9637.41923000", + "33417963.69624554", + "0" + ], + [ + 1549152000000, + "3504.06000000", + "3511.09000000", + "3426.00000000", + "3458.11000000", + "19867.33639000", + 1549238399999, + "68801620.06241606", + 138592, + "10126.71614300", + "35070884.46205618", + "0" + ], + [ + 1549238400000, + "3458.11000000", + "3484.88000000", + "3433.31000000", + "3463.22000000", + "23131.98110800", + 1549324799999, + "80024258.22766613", + 155686, + "12387.10978100", + "42856551.66874073", + "0" + ], + [ + 1549324800000, + "3463.22000000", + "3478.97000000", + "3448.43000000", + "3471.59000000", + "25264.41503000", + 1549411199999, + "87491347.06381486", + 162066, + "13642.82308400", + "47248405.24357039", + "0" + ], + [ + 1549411200000, + "3471.57000000", + "3482.72000000", + "3380.00000000", + "3405.37000000", + "35310.24484600", + 1549497599999, + "120500703.00515730", + 207024, + "18054.00834700", + "61609674.49994292", + "0" + ], + [ + 1549497600000, + "3407.00000000", + "3426.45000000", + "3390.00000000", + "3398.40000000", + "18665.53863800", + 1549583999999, + "63611505.78657223", + 148209, + "9971.89096000", + "33985909.98028422", + "0" + ], + [ + 1549584000000, + "3398.40000000", + "3733.58000000", + "3373.10000000", + "3659.04000000", + "47968.05801300", + 1549670399999, + "170118212.46197886", + 277242, + "25500.97034500", + "90453750.95066435", + "0" + ], + [ + 1549670400000, + "3660.27000000", + "3680.02000000", + "3625.13000000", + "3665.18000000", + "24759.83371900", + 1549756799999, + "90488500.06766240", + 192209, + "13208.14275000", + "48274378.26417207", + "0" + ], + [ + 1549756800000, + "3665.18000000", + "3684.99000000", + "3609.76000000", + "3680.06000000", + "23250.60263400", + 1549843199999, + "84696423.96233752", + 171099, + "12445.22054600", + "45337811.06485932", + "0" + ], + [ + 1549843200000, + "3679.75000000", + "3684.90000000", + "3615.53000000", + "3631.05000000", + "24954.61457100", + 1549929599999, + "90731831.90427426", + 172626, + "12713.19166600", + "46221559.64321214", + "0" + ], + [ + 1549929600000, + "3631.05000000", + "3667.60000000", + "3582.34000000", + "3631.46000000", + "29479.59823000", + 1550015999999, + "106766439.99436474", + 198996, + "14986.11962900", + "54283275.96877608", + "0" + ], + [ + 1550016000000, + "3631.51000000", + "3670.00000000", + "3591.75000000", + "3609.40000000", + "25773.99764800", + 1550102399999, + "93350740.94830574", + 167690, + "13552.84642000", + "49100779.82827613", + "0" + ], + [ + 1550102400000, + "3608.34000000", + "3626.40000000", + "3568.11000000", + "3590.56000000", + "21753.50126100", + 1550188799999, + "78367545.57945933", + 155215, + "11271.17502000", + "40602592.45976747", + "0" + ], + [ + 1550188800000, + "3590.57000000", + "3653.23000000", + "3573.45000000", + "3602.47000000", + "20777.87289900", + 1550275199999, + "74938358.18352868", + 151256, + "10840.39689500", + "39106496.49706577", + "0" + ], + [ + 1550275200000, + "3602.49000000", + "3648.20000000", + "3597.91000000", + "3618.41000000", + "19565.99275100", + 1550361599999, + "70894921.80761533", + 149393, + "10452.11973000", + "37873280.57143865", + "0" + ], + [ + 1550361600000, + "3617.22000000", + "3700.11000000", + "3604.40000000", + "3667.58000000", + "25690.22777900", + 1550447999999, + "93426433.13226133", + 179511, + "13004.16467600", + "47317986.79403941", + "0" + ], + [ + 1550448000000, + "3667.62000000", + "3925.00000000", + "3655.00000000", + "3898.60000000", + "64042.73049200", + 1550534399999, + "242898012.76922592", + 393515, + "33934.97317100", + "128779026.65413163", + "0" + ], + [ + 1550534400000, + "3897.35000000", + "3994.52000000", + "3856.00000000", + "3907.79000000", + "50207.17266700", + 1550620799999, + "197091641.04739993", + 332281, + "27008.59756600", + "106038298.75034281", + "0" + ], + [ + 1550620800000, + "3907.35000000", + "3986.98000000", + "3870.66000000", + "3969.74000000", + "36205.14085000", + 1550707199999, + "142571564.56112989", + 250176, + "19952.70098400", + "78593009.21716801", + "0" + ], + [ + 1550707200000, + "3969.74000000", + "4016.48000000", + "3901.03000000", + "3937.31000000", + "31103.88472800", + 1550793599999, + "122714273.87417651", + 209571, + "16678.73094500", + "65816472.08951928", + "0" + ], + [ + 1550793600000, + "3937.31000000", + "3988.00000000", + "3926.65000000", + "3962.00000000", + "23943.16375000", + 1550879999999, + "94739322.74557025", + 179588, + "12932.07849400", + "51172984.85084170", + "0" + ], + [ + 1550880000000, + "3962.00000000", + "4162.02000000", + "3933.15000000", + "4117.76000000", + "33657.94288300", + 1550966399999, + "135782959.41827349", + 231563, + "17790.39681500", + "71727695.50468791", + "0" + ], + [ + 1550966400000, + "4118.00000000", + "4198.00000000", + "3712.66000000", + "3743.56000000", + "62224.18689000", + 1551052799999, + "244146803.51886994", + 410578, + "30284.98096300", + "118938981.43024275", + "0" + ], + [ + 1551052800000, + "3743.56000000", + "3872.66000000", + "3740.00000000", + "3827.92000000", + "38102.96624500", + 1551139199999, + "145285565.20317070", + 262716, + "20414.12531600", + "77851143.96719552", + "0" + ], + [ + 1551139200000, + "3828.44000000", + "3841.51000000", + "3777.00000000", + "3809.23000000", + "28838.74803600", + 1551225599999, + "109932596.10609363", + 213897, + "14790.21331100", + "56376982.48230529", + "0" + ], + [ + 1551225600000, + "3809.31000000", + "3838.85000000", + "3677.17000000", + "3818.07000000", + "31500.99546600", + 1551311999999, + "119564023.12004227", + 201626, + "16214.23584600", + "61560455.27515973", + "0" + ], + [ + 1551312000000, + "3818.04000000", + "3888.00000000", + "3763.87000000", + "3813.69000000", + "32561.96104400", + 1551398399999, + "124703738.39336836", + 233849, + "16907.09230100", + "64761233.24960861", + "0" + ], + [ + 1551398400000, + "3814.26000000", + "3857.00000000", + "3813.01000000", + "3823.00000000", + "23174.57217000", + 1551484799999, + "88851336.52111789", + 179860, + "12773.95259500", + "48982541.74343915", + "0" + ], + [ + 1551484800000, + "3822.17000000", + "3841.31000000", + "3772.25000000", + "3819.93000000", + "19445.83835500", + 1551571199999, + "74175357.77882297", + 149854, + "10248.94565500", + "39098061.94664881", + "0" + ], + [ + 1551571200000, + "3819.97000000", + "3835.00000000", + "3781.32000000", + "3807.75000000", + "16718.16541000", + 1551657599999, + "63791898.99159701", + 127681, + "8854.21887800", + "33793163.48606208", + "0" + ], + [ + 1551657600000, + "3807.32000000", + "3830.00000000", + "3670.69000000", + "3715.30000000", + "34742.84166000", + 1551743999999, + "129739738.23815794", + 218615, + "18023.02240700", + "67312533.26381876", + "0" + ], + [ + 1551744000000, + "3716.10000000", + "3877.10000000", + "3703.55000000", + "3857.73000000", + "32962.53616200", + 1551830399999, + "124945530.76214453", + 202444, + "17980.12771200", + "68134618.18206475", + "0" + ], + [ + 1551830400000, + "3857.58000000", + "3907.00000000", + "3813.09000000", + "3861.84000000", + "24775.11883000", + 1551916799999, + "95417637.58898660", + 165101, + "13139.77457300", + "50622286.06205380", + "0" + ], + [ + 1551916800000, + "3861.84000000", + "3905.40000000", + "3840.40000000", + "3873.64000000", + "26455.25766100", + 1552003199999, + "102585458.38333898", + 180520, + "13365.94621300", + "51827450.49331647", + "0" + ], + [ + 1552003200000, + "3873.63000000", + "3932.00000000", + "3800.00000000", + "3864.89000000", + "34730.36659200", + 1552089599999, + "135000852.01035948", + 211534, + "17947.93422800", + "69791058.74747885", + "0" + ], + [ + 1552089600000, + "3864.88000000", + "3971.75000000", + "3854.75000000", + "3943.04000000", + "30979.74765300", + 1552175999999, + "121353606.96803356", + 206869, + "16447.34655800", + "64429542.99978998", + "0" + ], + [ + 1552176000000, + "3943.43000000", + "3943.43000000", + "3881.69000000", + "3916.82000000", + "23187.56141200", + 1552262399999, + "90693949.72150731", + 167920, + "12518.49638600", + "48968093.08714351", + "0" + ], + [ + 1552262400000, + "3915.99000000", + "3936.98000000", + "3830.00000000", + "3871.61000000", + "38066.88570500", + 1552348799999, + "147721971.09446938", + 209916, + "19416.22101400", + "75329574.17851433", + "0" + ], + [ + 1552348800000, + "3871.61000000", + "3905.20000000", + "3826.06000000", + "3882.73000000", + "26921.00862200", + 1552435199999, + "104393849.44844826", + 182885, + "13827.42106500", + "53624520.45494350", + "0" + ], + [ + 1552435200000, + "3882.69000000", + "3893.56000000", + "3840.00000000", + "3866.00000000", + "24461.00875700", + 1552521599999, + "94680049.46033754", + 186572, + "12839.14650500", + "49699859.82552118", + "0" + ], + [ + 1552521600000, + "3866.00000000", + "3920.00000000", + "3810.43000000", + "3877.12000000", + "27048.74853000", + 1552607999999, + "104673038.77602254", + 196651, + "14244.45531900", + "55141147.28364773", + "0" + ], + [ + 1552608000000, + "3877.12000000", + "3939.22000000", + "3872.20000000", + "3923.76000000", + "21740.06149800", + 1552694399999, + "84919900.71744472", + 163866, + "12025.70553400", + "46979306.89873034", + "0" + ], + [ + 1552694400000, + "3924.46000000", + "4056.98000000", + "3921.98000000", + "4005.98000000", + "28568.37612400", + 1552780799999, + "114227606.40681695", + 216198, + "15580.63108000", + "62301622.91259946", + "0" + ], + [ + 1552780800000, + "4005.98000000", + "4012.00000000", + "3950.01000000", + "3981.14000000", + "18814.25557700", + 1552867199999, + "74893913.05776027", + 146953, + "9927.11655900", + "39524144.17139103", + "0" + ], + [ + 1552867200000, + "3981.85000000", + "4037.00000000", + "3953.33000000", + "3987.81000000", + "22454.47801000", + 1552953599999, + "89526258.38910637", + 157876, + "11964.18976900", + "47710908.05709871", + "0" + ], + [ + 1552953600000, + "3987.83000000", + "4031.00000000", + "3970.00000000", + "4015.53000000", + "19893.74181500", + 1553039999999, + "79503748.36263466", + 147394, + "10745.63056500", + "42949860.70592456", + "0" + ], + [ + 1553040000000, + "4017.48000000", + "4050.00000000", + "3980.50000000", + "4043.04000000", + "23432.30025500", + 1553126399999, + "94019734.23326426", + 175036, + "12201.21427900", + "48961351.11750316", + "0" + ], + [ + 1553126400000, + "4043.04000000", + "4069.32000000", + "3880.01000000", + "3980.64000000", + "35997.68211900", + 1553212799999, + "144010401.50845117", + 236100, + "18704.22183700", + "74835394.39208286", + "0" + ], + [ + 1553212800000, + "3980.85000000", + "4008.00000000", + "3968.25000000", + "3986.93000000", + "20022.60631800", + 1553299199999, + "79861943.81089970", + 153703, + "10561.69457700", + "42127893.35065794", + "0" + ], + [ + 1553299200000, + "3987.89000000", + "4018.83000000", + "3978.01000000", + "4006.01000000", + "17302.60431800", + 1553385599999, + "69169819.86286371", + 143155, + "9491.14472800", + "37945846.04025019", + "0" + ], + [ + 1553385600000, + "4006.01000000", + "4006.02000000", + "3950.00000000", + "3992.18000000", + "17179.85064800", + 1553471999999, + "68524082.74695625", + 131087, + "8617.36592500", + "34375232.36909545", + "0" + ], + [ + 1553472000000, + "3991.35000000", + "3999.30000000", + "3888.71000000", + "3936.12000000", + "33192.89021700", + 1553558399999, + "131507366.37512891", + 227739, + "17050.63482700", + "67573128.16531547", + "0" + ], + [ + 1553558400000, + "3935.47000000", + "3958.98000000", + "3894.00000000", + "3948.55000000", + "29349.53762700", + 1553644799999, + "115330070.99071545", + 192418, + "15963.90520500", + "62738463.89189890", + "0" + ], + [ + 1553644800000, + "3948.77000000", + "4048.00000000", + "3936.15000000", + "4038.05000000", + "32364.55585200", + 1553731199999, + "129681258.01621350", + 224309, + "17964.55060100", + "71983196.76062553", + "0" + ], + [ + 1553731200000, + "4039.58000000", + "4039.70000000", + "4002.00000000", + "4027.81000000", + "20089.29387500", + 1553817599999, + "80822230.57984656", + 157060, + "10111.82627600", + "40683986.77430117", + "0" + ], + [ + 1553817600000, + "4028.22000000", + "4123.71000000", + "4024.03000000", + "4103.25000000", + "30084.21744400", + 1553903999999, + "122585822.58650480", + 203826, + "16800.50957200", + "68459620.27240319", + "0" + ], + [ + 1553904000000, + "4104.24000000", + "4140.00000000", + "4052.00000000", + "4106.97000000", + "19509.29260100", + 1553990399999, + "79853835.58182401", + 162463, + "10322.14877500", + "42255037.00428935", + "0" + ], + [ + 1553990400000, + "4106.99000000", + "4116.12000000", + "4082.57000000", + "4103.95000000", + "13525.08743300", + 1554076799999, + "55472147.12701675", + 124046, + "6824.65737800", + "27993469.17112726", + "0" + ], + [ + 1554076800000, + "4102.44000000", + "4158.70000000", + "4067.00000000", + "4144.56000000", + "25507.06764100", + 1554163199999, + "105388238.14788892", + 184268, + "12915.28932000", + "53371959.95327402", + "0" + ], + [ + 1554163200000, + "4144.54000000", + "4897.99000000", + "4140.54000000", + "4857.29000000", + "105383.63926300", + 1554249599999, + "489018726.75750669", + 609133, + "55726.14168400", + "258300768.81540301", + "0" + ], + [ + 1554249600000, + "4857.19000000", + "5275.01000000", + "4753.50000000", + "4932.60000000", + "109890.12574300", + 1554335999999, + "548900970.91788429", + 692019, + "55975.58476100", + "279654422.07491424", + "0" + ], + [ + 1554336000000, + "4932.59000000", + "5039.08000000", + "4777.00000000", + "4898.66000000", + "61054.25416800", + 1554422399999, + "301411332.00902432", + 419141, + "31203.30835400", + "154090564.79115182", + "0" + ], + [ + 1554422400000, + "4898.64000000", + "5028.22000000", + "4880.62000000", + "5004.95000000", + "39768.55280600", + 1554508799999, + "197660830.71096662", + 292375, + "21235.63623700", + "105586318.20991643", + "0" + ], + [ + 1554508800000, + "5004.96000000", + "5205.00000000", + "4928.59000000", + "5043.89000000", + "41770.84231300", + 1554595199999, + "210963411.61313188", + 281237, + "21796.02186900", + "110119190.88917793", + "0" + ], + [ + 1554595200000, + "5042.07000000", + "5234.00000000", + "5026.00000000", + "5170.27000000", + "37615.48680400", + 1554681599999, + "192916750.57190406", + 274084, + "19504.61283200", + "100069310.55713653", + "0" + ], + [ + 1554681600000, + "5170.27000000", + "5305.00000000", + "5039.00000000", + "5236.90000000", + "50178.43078200", + 1554767999999, + "260487077.76756680", + 350828, + "25302.16540200", + "131396468.34738519", + "0" + ], + [ + 1554768000000, + "5238.38000000", + "5238.40000000", + "5076.68000000", + "5150.00000000", + "34067.01231100", + 1554854399999, + "175633627.31637351", + 253381, + "16967.00611500", + "87496291.75731626", + "0" + ], + [ + 1554854400000, + "5150.00000000", + "5422.00000000", + "5135.00000000", + "5308.25000000", + "40073.62047100", + 1554940799999, + "210870034.51205530", + 260967, + "21269.62094900", + "111952601.71234791", + "0" + ], + [ + 1554940800000, + "5307.86000000", + "5332.67000000", + "4927.00000000", + "5017.37000000", + "54696.60068600", + 1555027199999, + "277736905.85749792", + 369304, + "26631.11240900", + "135174561.68852918", + "0" + ], + [ + 1555027200000, + "5017.37000000", + "5080.58000000", + "4861.22000000", + "5048.01000000", + "33276.67861400", + 1555113599999, + "166485761.07931210", + 226036, + "16899.59053300", + "84561818.27888816", + "0" + ], + [ + 1555113600000, + "5047.00000000", + "5099.00000000", + "5004.00000000", + "5045.22000000", + "17292.45680200", + 1555199999999, + "87375984.44461506", + 138674, + "8692.05325900", + "43925293.92220215", + "0" + ], + [ + 1555200000000, + "5047.45000000", + "5152.99000000", + "5000.00000000", + "5131.30000000", + "18281.60773900", + 1555286399999, + "92594930.42710131", + 131700, + "10043.91166700", + "50893945.02767781", + "0" + ], + [ + 1555286400000, + "5131.28000000", + "5167.38000000", + "4950.00000000", + "5024.95000000", + "29057.19158100", + 1555372799999, + "147687551.94147710", + 204944, + "14170.25240200", + "72070166.00084409", + "0" + ], + [ + 1555372800000, + "5024.95000000", + "5197.72000000", + "5003.94000000", + "5173.72000000", + "24242.22949300", + 1555459199999, + "123581651.71216356", + 168550, + "12804.63376800", + "65290617.51599363", + "0" + ], + [ + 1555459200000, + "5173.72000000", + "5230.40000000", + "5146.80000000", + "5202.82000000", + "23307.53613400", + 1555545599999, + "120972345.51821637", + 179490, + "12172.53172400", + "63190167.89632924", + "0" + ], + [ + 1555545600000, + "5202.41000000", + "5287.00000000", + "5198.80000000", + "5258.44000000", + "22619.23900100", + 1555631999999, + "118573129.86520114", + 167110, + "12104.85293200", + "63464128.54331125", + "0" + ], + [ + 1555632000000, + "5258.44000000", + "5320.00000000", + "5175.00000000", + "5258.68000000", + "24611.23632300", + 1555718399999, + "128937309.63806376", + 178148, + "12889.68334400", + "67549701.12506344", + "0" + ], + [ + 1555718400000, + "5258.68000000", + "5333.42000000", + "5230.10000000", + "5291.73000000", + "19168.90827400", + 1555804799999, + "101343660.15324434", + 157080, + "10029.27226200", + "53029542.91017945", + "0" + ], + [ + 1555804800000, + "5292.91000000", + "5314.35000000", + "5165.00000000", + "5256.14000000", + "25549.57093900", + 1555891199999, + "133929931.15068736", + 210494, + "13147.77101600", + "68909870.81367928", + "0" + ], + [ + 1555891200000, + "5257.41000000", + "5400.00000000", + "5208.35000000", + "5357.14000000", + "29563.85230900", + 1555977599999, + "156632202.97099613", + 210361, + "15828.00485100", + "83879362.28322349", + "0" + ], + [ + 1555977600000, + "5357.14000000", + "5600.00000000", + "5332.41000000", + "5493.31000000", + "41262.10391700", + 1556063999999, + "227154061.85771411", + 282563, + "21260.01446900", + "117054771.35759218", + "0" + ], + [ + 1556064000000, + "5490.91000000", + "5582.20000000", + "5333.35000000", + "5415.00000000", + "48224.15241300", + 1556150399999, + "262493252.93584237", + 339599, + "23401.18852000", + "127419838.49784201", + "0" + ], + [ + 1556150400000, + "5415.00000000", + "5491.84000000", + "5102.00000000", + "5219.90000000", + "49636.08994800", + 1556236799999, + "265091565.61466024", + 331089, + "21401.17196500", + "114223925.41789762", + "0" + ], + [ + 1556236800000, + "5220.47000000", + "5510.00000000", + "5161.62000000", + "5314.10000000", + "48912.29451300", + 1556323199999, + "259659705.65138580", + 333183, + "25076.71829700", + "133163032.45656707", + "0" + ], + [ + 1556323200000, + "5315.00000000", + "5342.50000000", + "5257.67000000", + "5295.69000000", + "15422.89693500", + 1556409599999, + "81749716.42174439", + 145733, + "7918.22705600", + "41978251.89852615", + "0" + ], + [ + 1556409600000, + "5295.69000000", + "5340.00000000", + "5259.48000000", + "5307.52000000", + "14371.43386900", + 1556495999999, + "76277087.37424076", + 127730, + "7160.77372500", + "38011547.93921391", + "0" + ], + [ + 1556496000000, + "5309.81000000", + "5332.00000000", + "5178.80000000", + "5238.14000000", + "19918.13507900", + 1556582399999, + "104822151.51444980", + 178472, + "9983.62213700", + "52529726.63061370", + "0" + ], + [ + 1556582400000, + "5238.14000000", + "5339.98000000", + "5192.15000000", + "5320.81000000", + "22238.06823000", + 1556668799999, + "117309839.23079812", + 180989, + "12264.55293800", + "64721155.04645376", + "0" + ], + [ + 1556668800000, + "5321.94000000", + "5402.00000000", + "5316.20000000", + "5383.20000000", + "17217.47321600", + 1556755199999, + "92194935.60478040", + 161488, + "9636.26589900", + "51604847.88561128", + "0" + ], + [ + 1556755200000, + "5383.20000000", + "5538.00000000", + "5370.00000000", + "5492.87000000", + "22795.78783500", + 1556841599999, + "124498567.20765440", + 181896, + "11908.89589200", + "65029410.50078300", + "0" + ], + [ + 1556841600000, + "5494.81000000", + "5844.00000000", + "5477.57000000", + "5772.69000000", + "46297.17284900", + 1556927999999, + "264435878.92811019", + 338298, + "24992.74319000", + "142732584.07587240", + "0" + ], + [ + 1556928000000, + "5770.62000000", + "5900.00000000", + "5587.45000000", + "5829.45000000", + "39682.40899100", + 1557014399999, + "228942582.45077919", + 283145, + "21037.29947700", + "121524183.92743250", + "0" + ], + [ + 1557014400000, + "5829.83000000", + "5839.90000000", + "5696.00000000", + "5775.62000000", + "23822.54377500", + 1557100799999, + "137653160.76602159", + 185365, + "11824.08792100", + "68357177.93240788", + "0" + ], + [ + 1557100800000, + "5773.18000000", + "5805.00000000", + "5619.14000000", + "5747.79000000", + "25256.59632500", + 1557187199999, + "144358553.85462249", + 230431, + "12922.62549000", + "73880906.50332905", + "0" + ], + [ + 1557187200000, + "5749.92000000", + "6028.41000000", + "5747.74000000", + "5846.34000000", + "39905.06442200", + 1557273599999, + "236176663.81792103", + 301388, + "21302.98121700", + "126064101.91225619", + "0" + ], + [ + 1557273600000, + "5846.34000000", + "6014.72000000", + "5772.20000000", + "5987.29000000", + "23074.05152000", + 1557359999999, + "136245255.55720780", + 190966, + "11960.90403200", + "70659279.91367500", + "0" + ], + [ + 1557360000000, + "5986.66000000", + "6224.55000000", + "5983.71000000", + "6209.18000000", + "27453.01143600", + 1557446399999, + "167489934.34358988", + 227841, + "13875.18235600", + "84696142.54932348", + "0" + ], + [ + 1557446400000, + "6209.95000000", + "6468.92000000", + "6172.00000000", + "6373.33000000", + "36623.61079000", + 1557532799999, + "231801342.43209280", + 283074, + "18548.92799500", + "117379030.42732471", + "0" + ], + [ + 1557532800000, + "6375.16000000", + "7343.99000000", + "6372.85000000", + "7076.22000000", + "74022.42439300", + 1557619199999, + "507216001.34340413", + 562540, + "40091.99721500", + "274656200.80251044", + "0" + ], + [ + 1557619200000, + "7076.24000000", + "7521.78000000", + "6750.00000000", + "6967.31000000", + "86948.97533900", + 1557705599999, + "619939454.48965513", + 647345, + "42689.58967600", + "304720922.90832519", + "0" + ], + [ + 1557705600000, + "6968.24000000", + "8100.00000000", + "6870.00000000", + "7790.71000000", + "85804.73533300", + 1557791999999, + "648012612.29270131", + 588497, + "45381.26225900", + "342327287.01661900", + "0" + ], + [ + 1557792000000, + "7795.62000000", + "8366.00000000", + "7599.56000000", + "7947.56000000", + "76583.72260300", + 1557878399999, + "611103206.00327249", + 655426, + "38953.03233500", + "310810946.93725249", + "0" + ], + [ + 1557878400000, + "7945.26000000", + "8249.00000000", + "7850.00000000", + "8169.87000000", + "37884.32721100", + 1557964799999, + "305196285.27558238", + 347533, + "19660.57618600", + "158426245.70097857", + "0" + ], + [ + 1557964800000, + "8169.08000000", + "8320.00000000", + "7705.00000000", + "7866.59000000", + "69630.51399600", + 1558051199999, + "557126171.27896418", + 666538, + "35097.40415800", + "280897013.06816628", + "0" + ], + [ + 1558051200000, + "7868.67000000", + "7925.00000000", + "6913.00000000", + "7355.26000000", + "88752.00815900", + 1558137599999, + "645676487.37440289", + 803893, + "45121.47497800", + "328348049.16308968", + "0" + ], + [ + 1558137600000, + "7355.28000000", + "7458.00000000", + "7156.61000000", + "7257.45000000", + "37054.94477900", + 1558223999999, + "271170511.05093318", + 379504, + "19375.84836000", + "141830045.16939757", + "0" + ], + [ + 1558224000000, + "7257.32000000", + "8275.09000000", + "7243.08000000", + "8148.48000000", + "65577.44205800", + 1558310399999, + "517729474.35844101", + 583432, + "35593.49002200", + "281177713.21845129", + "0" + ], + [ + 1558310400000, + "8147.94000000", + "8156.03000000", + "7553.00000000", + "7938.15000000", + "65859.20856400", + 1558396799999, + "517939277.86885798", + 610360, + "34629.64564500", + "272371020.30677796", + "0" + ], + [ + 1558396800000, + "7937.16000000", + "8042.32000000", + "7771.00000000", + "7904.87000000", + "52301.75224700", + 1558483199999, + "413637782.36974554", + 554038, + "27272.36044800", + "215730616.60421489", + "0" + ], + [ + 1558483200000, + "7904.48000000", + "8016.00000000", + "7465.00000000", + "7628.43000000", + "49136.99458900", + 1558569599999, + "384730220.72195171", + 461337, + "24410.96266200", + "191296198.55463496", + "0" + ], + [ + 1558569600000, + "7627.80000000", + "7940.98000000", + "7461.00000000", + "7851.51000000", + "49648.18470100", + 1558655999999, + "381536239.51284835", + 449220, + "25959.85983800", + "199607980.98608009", + "0" + ], + [ + 1558656000000, + "7849.95000000", + "8130.00000000", + "7766.00000000", + "7964.87000000", + "46664.78532500", + 1558742399999, + "371381043.73160255", + 428676, + "25045.73342800", + "199347829.02587370", + "0" + ], + [ + 1558742400000, + "7964.52000000", + "8091.80000000", + "7908.34000000", + "8025.41000000", + "28414.32881700", + 1558828799999, + "227376280.58540762", + 264448, + "15037.16499600", + "120334124.30243574", + "0" + ], + [ + 1558828800000, + "8023.00000000", + "8740.00000000", + "7833.42000000", + "8614.43000000", + "49652.14456700", + 1558915199999, + "409616322.38847878", + 377306, + "26438.94680300", + "217911336.30408231", + "0" + ], + [ + 1558915200000, + "8612.54000000", + "8908.32000000", + "8589.00000000", + "8756.32000000", + "51886.76879300", + 1559001599999, + "452651204.93490235", + 478773, + "27722.36963700", + "241864670.65173968", + "0" + ], + [ + 1559001600000, + "8752.52000000", + "8798.49000000", + "8510.63000000", + "8715.64000000", + "31470.55153400", + 1559087999999, + "273791910.63147590", + 349123, + "16561.87681100", + "144108437.06115802", + "0" + ], + [ + 1559088000000, + "8716.87000000", + "8750.00000000", + "8406.60000000", + "8645.68000000", + "33880.86592200", + 1559174399999, + "292094591.01803866", + 352317, + "17575.58031700", + "151595491.23598413", + "0" + ], + [ + 1559174400000, + "8646.50000000", + "9074.26000000", + "8005.00000000", + "8269.54000000", + "70379.99852100", + 1559260799999, + "603312537.38084345", + 617341, + "34577.31059800", + "296613619.21904660", + "0" + ], + [ + 1559260800000, + "8267.10000000", + "8594.00000000", + "8108.50000000", + "8555.00000000", + "44727.49162000", + 1559347199999, + "373629673.91901440", + 416525, + "23391.68846000", + "195418655.05339947", + "0" + ], + [ + 1559347200000, + "8555.00000000", + "8626.00000000", + "8442.36000000", + "8544.07000000", + "31868.23415700", + 1559433599999, + "272098436.34069574", + 348375, + "16922.66242500", + "144486129.11826151", + "0" + ], + [ + 1559433600000, + "8545.10000000", + "8814.78000000", + "8524.00000000", + "8725.98000000", + "27835.13326500", + 1559519999999, + "241414596.71950513", + 299353, + "14585.88699900", + "126530020.38343657", + "0" + ], + [ + 1559520000000, + "8726.00000000", + "8800.95000000", + "8080.80000000", + "8115.82000000", + "45692.96510400", + 1559606399999, + "387155494.97304884", + 431252, + "22514.31685900", + "190882595.70344346", + "0" + ], + [ + 1559606400000, + "8115.66000000", + "8115.66000000", + "7481.02000000", + "7687.03000000", + "74143.94894100", + 1559692799999, + "582173398.32579679", + 645913, + "36776.59713100", + "288822568.04322012", + "0" + ], + [ + 1559692800000, + "7687.04000000", + "7896.70000000", + "7572.78000000", + "7776.50000000", + "48679.65645500", + 1559779199999, + "377635818.00440952", + 426120, + "26296.53395900", + "204082647.87673320", + "0" + ], + [ + 1559779200000, + "7778.08000000", + "7868.13000000", + "7444.58000000", + "7786.70000000", + "36624.11874700", + 1559865599999, + "282156410.54378911", + 371485, + "18877.98638300", + "145537581.79160799", + "0" + ], + [ + 1559865600000, + "7787.57000000", + "8100.00000000", + "7737.49000000", + "7980.53000000", + "33942.22565800", + 1559951999999, + "269125728.14164961", + 323096, + "17193.57559500", + "136343077.37705734", + "0" + ], + [ + 1559952000000, + "7978.94000000", + "8044.65000000", + "7751.00000000", + "7893.62000000", + "22657.32963400", + 1560038399999, + "179047320.02388046", + 250864, + "11795.09729400", + "93237148.47454820", + "0" + ], + [ + 1560038400000, + "7895.28000000", + "7935.00000000", + "7506.66000000", + "7628.13000000", + "31568.46515700", + 1560124799999, + "243970971.02443440", + 322175, + "16234.63127500", + "125591062.03917081", + "0" + ], + [ + 1560124800000, + "7627.57000000", + "8020.00000000", + "7511.00000000", + "7982.75000000", + "36756.07846800", + 1560211199999, + "287125339.97011443", + 387179, + "19890.86856100", + "155461282.83139249", + "0" + ], + [ + 1560211200000, + "7981.00000000", + "8010.00000000", + "7692.23000000", + "7884.90000000", + "30334.99942700", + 1560297599999, + "238031771.51747338", + 309059, + "15793.77245100", + "124001190.82079008", + "0" + ], + [ + 1560297600000, + "7884.90000000", + "8200.00000000", + "7788.99000000", + "8127.64000000", + "41597.08262200", + 1560383999999, + "333291726.64600021", + 361980, + "22826.90102600", + "182925127.46756544", + "0" + ], + [ + 1560384000000, + "8127.64000000", + "8309.82000000", + "8010.03000000", + "8218.54000000", + "30467.76434100", + 1560470399999, + "248418184.77204661", + 341246, + "16100.16134600", + "131293315.79862677", + "0" + ], + [ + 1560470400000, + "8216.44000000", + "8684.41000000", + "8144.32000000", + "8650.00000000", + "39835.24625500", + 1560556799999, + "333475488.55375949", + 410072, + "20970.62382700", + "175588531.48519169", + "0" + ], + [ + 1560556800000, + "8650.88000000", + "8864.99000000", + "8567.63000000", + "8808.70000000", + "31791.63603900", + 1560643199999, + "276420769.29338533", + 335840, + "16798.37929600", + "146051605.23593674", + "0" + ], + [ + 1560643200000, + "8810.77000000", + "9333.00000000", + "8760.00000000", + "8953.33000000", + "63289.25121900", + 1560729599999, + "574211342.97966031", + 552319, + "33804.18204600", + "306793742.10849278", + "0" + ], + [ + 1560729600000, + "8953.00000000", + "9444.00000000", + "8950.00000000", + "9313.96000000", + "47895.48537400", + 1560815999999, + "441567296.05926622", + 462160, + "24826.97685000", + "228962151.24115250", + "0" + ], + [ + 1560816000000, + "9312.13000000", + "9336.36000000", + "8950.00000000", + "9081.55000000", + "51554.56940100", + 1560902399999, + "470271954.29870564", + 449730, + "28057.04733500", + "255972426.13011804", + "0" + ], + [ + 1560902400000, + "9081.97000000", + "9304.00000000", + "8960.00000000", + "9255.49000000", + "32147.70649500", + 1560988799999, + "293748062.66684875", + 306202, + "17533.23301600", + "160303572.01579759", + "0" + ], + [ + 1560988800000, + "9253.76000000", + "9590.00000000", + "9175.20000000", + "9517.12000000", + "34556.05398200", + 1561075199999, + "323621848.19876171", + 350662, + "18032.19071400", + "168891671.53448428", + "0" + ], + [ + 1561075200000, + "9518.06000000", + "10174.99000000", + "9518.06000000", + "10159.86000000", + "50484.41589200", + 1561161599999, + "494783687.98535151", + 474344, + "28305.73274900", + "277616242.76671947", + "0" + ], + [ + 1561161600000, + "10159.86000000", + "11160.00000000", + "9921.72000000", + "10729.50000000", + "104169.44797600", + 1561247999999, + "1112069567.63811481", + 923334, + "55336.62358700", + "590676435.78882355", + "0" + ], + [ + 1561248000000, + "10729.00000000", + "11392.64000000", + "10555.18000000", + "10906.07000000", + "57445.32394500", + 1561334399999, + "625330374.74668832", + 557935, + "30129.80103300", + "327919162.55038311", + "0" + ], + [ + 1561334400000, + "10905.95000000", + "11143.63000000", + "10620.80000000", + "11056.59000000", + "43101.04528500", + 1561420799999, + "469746663.93811732", + 440335, + "22674.41385100", + "247193774.35494487", + "0" + ], + [ + 1561420800000, + "11056.59000000", + "11850.00000000", + "11026.00000000", + "11820.86000000", + "61276.68664800", + 1561507199999, + "697773986.26918588", + 597798, + "32838.33556600", + "373915513.28231270", + "0" + ], + [ + 1561507200000, + "11821.28000000", + "13970.00000000", + "11741.00000000", + "13093.80000000", + "155930.14738600", + 1561593599999, + "1996178374.59449220", + 1355074, + "76046.06420600", + "973444882.21756229", + "0" + ], + [ + 1561593600000, + "13098.38000000", + "13478.04000000", + "10525.10000000", + "11329.99000000", + "173894.82088900", + 1561679999999, + "2058443849.31399992", + 1357233, + "80442.11991600", + "951733425.60878133", + "0" + ], + [ + 1561680000000, + "11329.99000000", + "12480.00000000", + "10982.88000000", + "12400.63000000", + "95795.20396400", + 1561766399999, + "1129888341.32128373", + 883116, + "48847.10788300", + "576552254.91960096", + "0" + ], + [ + 1561766400000, + "12407.06000000", + "12441.54000000", + "11475.02000000", + "11903.13000000", + "69642.07415700", + 1561852799999, + "829011822.23653242", + 732073, + "36061.45936900", + "429403585.74678667", + "0" + ], + [ + 1561852800000, + "11903.13000000", + "12180.00000000", + "10766.03000000", + "10854.10000000", + "84512.53044300", + 1561939199999, + "971151050.90058159", + 711267, + "42697.44000000", + "492370966.31592094", + "0" + ], + [ + 1561939200000, + "10854.10000000", + "11282.28000000", + "10030.00000000", + "10624.93000000", + "90962.26827100", + 1562025599999, + "972343281.86035535", + 757458, + "44210.98836500", + "473020897.41183619", + "0" + ], + [ + 1562025600000, + "10624.90000000", + "10938.75000000", + "9727.00000000", + "10842.85000000", + "109561.03872800", + 1562111999999, + "1128353804.80079160", + 870148, + "54998.50360600", + "566863180.55092289", + "0" + ], + [ + 1562112000000, + "10844.98000000", + "11991.89000000", + "10841.04000000", + "11940.00000000", + "96815.90029000", + 1562198399999, + "1097804642.75777372", + 814754, + "49613.61674400", + "561585673.86519116", + "0" + ], + [ + 1562198400000, + "11940.00000000", + "12000.00000000", + "11055.00000000", + "11145.67000000", + "66512.22189200", + 1562284799999, + "775818897.38948483", + 643867, + "33626.85186200", + "392411806.43340068", + "0" + ], + [ + 1562284800000, + "11145.67000000", + "11406.83000000", + "10796.44000000", + "10970.73000000", + "63534.35058200", + 1562371199999, + "705853649.02648962", + 564857, + "32306.91425900", + "359142813.98810695", + "0" + ], + [ + 1562371200000, + "10982.41000000", + "11665.00000000", + "10964.51000000", + "11256.49000000", + "51469.49633100", + 1562457599999, + "585001376.15542908", + 470692, + "25601.98948200", + "291096287.94400300", + "0" + ], + [ + 1562457600000, + "11256.45000000", + "11538.00000000", + "11094.37000000", + "11406.24000000", + "38884.79559900", + 1562543999999, + "439439052.94554207", + 366769, + "22449.30112000", + "253820654.34123246", + "0" + ], + [ + 1562544000000, + "11410.00000000", + "12338.03000000", + "11220.00000000", + "12238.60000000", + "52182.36721500", + 1562630399999, + "618530684.43255227", + 507860, + "27740.09749000", + "328709707.94803343", + "0" + ], + [ + 1562630400000, + "12238.60000000", + "12794.73000000", + "12068.00000000", + "12543.41000000", + "78442.13034300", + 1562716799999, + "975986802.03003513", + 660273, + "40993.91197400", + "508388352.36049587", + "0" + ], + [ + 1562716800000, + "12548.51000000", + "13147.08000000", + "11569.00000000", + "12108.37000000", + "109246.04499700", + 1562803199999, + "1369749939.96750366", + 899391, + "46964.76090700", + "588798251.12483500", + "0" + ], + [ + 1562803200000, + "12108.11000000", + "12111.73000000", + "11000.00000000", + "11342.89000000", + "87506.46105800", + 1562889599999, + "1007356802.21825599", + 760057, + "43714.15617000", + "503407388.68365422", + "0" + ], + [ + 1562889600000, + "11342.88000000", + "11885.00000000", + "11073.00000000", + "11757.22000000", + "56321.85828100", + 1562975999999, + "649824820.76548135", + 537561, + "30291.11935600", + "349517968.90387331", + "0" + ], + [ + 1562976000000, + "11757.22000000", + "11799.98000000", + "10830.00000000", + "11355.76000000", + "54245.59454800", + 1563062399999, + "614050007.99194520", + 510305, + "26460.05823600", + "299649536.39435350", + "0" + ], + [ + 1563062400000, + "11355.78000000", + "11452.00000000", + "10103.00000000", + "10174.18000000", + "72517.57923600", + 1563148799999, + "777646151.60294671", + 649043, + "35853.69216000", + "384643236.23562616", + "0" + ], + [ + 1563148800000, + "10174.18000000", + "11100.00000000", + "9860.00000000", + "10838.72000000", + "81922.42633200", + 1563235199999, + "851028723.70318576", + 732206, + "41714.18965500", + "433767828.49457312", + "0" + ], + [ + 1563235200000, + "10833.78000000", + "11028.00000000", + "9350.01000000", + "9439.59000000", + "97219.44341300", + 1563321599999, + "982462166.69322945", + 796646, + "47295.94404800", + "478852520.00356246", + "0" + ], + [ + 1563321600000, + "9430.17000000", + "9957.00000000", + "9060.00000000", + "9667.92000000", + "84942.67271700", + 1563407999999, + "809555508.34767892", + 757742, + "43073.11514600", + "410754257.70738602", + "0" + ], + [ + 1563408000000, + "9668.86000000", + "10788.00000000", + "9252.00000000", + "10627.16000000", + "80283.31025200", + 1563494399999, + "807822745.18543276", + 734821, + "42103.34474500", + "423743857.79454611", + "0" + ], + [ + 1563494400000, + "10628.64000000", + "10769.71000000", + "10121.84000000", + "10504.29000000", + "56546.93213300", + 1563580799999, + "589931612.34198640", + 567735, + "29070.35747400", + "303508985.60686395", + "0" + ], + [ + 1563580800000, + "10505.78000000", + "11068.99000000", + "10350.00000000", + "10740.23000000", + "47331.89984800", + 1563667199999, + "505569016.35008299", + 461660, + "25003.62155000", + "267188169.93959161", + "0" + ], + [ + 1563667200000, + "10740.27000000", + "10817.90000000", + "10288.00000000", + "10589.45000000", + "38834.28793500", + 1563753599999, + "409661485.99856461", + 395452, + "20345.52738400", + "214610701.20268620", + "0" + ], + [ + 1563753600000, + "10590.15000000", + "10683.16000000", + "10100.00000000", + "10340.31000000", + "40467.95483900", + 1563839999999, + "421016379.36208768", + 389565, + "19335.41190000", + "201324461.22845032", + "0" + ], + [ + 1563840000000, + "10343.08000000", + "10343.97000000", + "9822.00000000", + "9864.91000000", + "47624.37071000", + 1563926399999, + "478441909.40505734", + 448147, + "24082.30912900", + "241965620.20266604", + "0" + ], + [ + 1563926400000, + "9864.78000000", + "9937.00000000", + "9525.00000000", + "9763.28000000", + "43475.38037700", + 1564012799999, + "422534162.14571223", + 424762, + "21963.77353700", + "213526693.38815349", + "0" + ], + [ + 1564012800000, + "9763.40000000", + "10175.00000000", + "9720.03000000", + "9879.87000000", + "37873.35472800", + 1564099199999, + "378938450.08176742", + 368176, + "19308.01142600", + "193241603.01232005", + "0" + ], + [ + 1564099200000, + "9882.15000000", + "9889.98000000", + "9637.00000000", + "9824.00000000", + "27167.46321700", + 1564185599999, + "265108103.13392133", + 299935, + "14006.62943400", + "136688126.95394775", + "0" + ], + [ + 1564185600000, + "9824.00000000", + "10188.66000000", + "9333.00000000", + "9476.52000000", + "43809.77830100", + 1564271999999, + "424932724.96873150", + 401418, + "21428.05231800", + "208090741.11042415", + "0" + ], + [ + 1564272000000, + "9478.92000000", + "9594.99000000", + "9165.00000000", + "9541.54000000", + "29401.02293700", + 1564358399999, + "278537286.13481345", + 271327, + "17116.43313200", + "162267204.15845968", + "0" + ], + [ + 1564358400000, + "9541.54000000", + "9729.00000000", + "9395.00000000", + "9507.64000000", + "29021.93741100", + 1564444799999, + "277497756.76841674", + 294468, + "16075.16697100", + "153791418.10329246", + "0" + ], + [ + 1564444800000, + "9509.07000000", + "9714.28000000", + "9402.00000000", + "9574.21000000", + "32536.36883400", + 1564531199999, + "310867928.28793913", + 283961, + "17211.00965300", + "164621319.04418956", + "0" + ], + [ + 1564531200000, + "9575.00000000", + "10109.80000000", + "9555.00000000", + "10080.53000000", + "39515.35456000", + 1564617599999, + "389690761.44466112", + 364212, + "21235.60960400", + "209506872.50921800", + "0" + ], + [ + 1564617600000, + "10080.53000000", + "10467.86000000", + "9863.46000000", + "10374.99000000", + "41727.63702800", + 1564703999999, + "422156523.66900791", + 378062, + "22244.91946700", + "225207082.39426738", + "0" + ], + [ + 1564704000000, + "10375.00000000", + "10670.00000000", + "10281.35000000", + "10523.75000000", + "42990.44422100", + 1564790399999, + "450323284.15075973", + 431322, + "22206.13509300", + "232638457.60696326", + "0" + ], + [ + 1564790400000, + "10523.75000000", + "10904.77000000", + "10497.93000000", + "10816.86000000", + "33802.31882400", + 1564876799999, + "363852799.87178007", + 348893, + "18132.52970700", + "195125820.47946514", + "0" + ], + [ + 1564876800000, + "10816.86000000", + "11040.00000000", + "10552.00000000", + "10929.23000000", + "39924.74514100", + 1564963199999, + "431793873.42329756", + 353721, + "22066.36825700", + "238959952.23516081", + "0" + ], + [ + 1564963200000, + "10929.99000000", + "11937.52000000", + "10927.80000000", + "11828.80000000", + "65153.67371300", + 1565049599999, + "757976547.21704611", + 622610, + "33530.07066000", + "389969213.39891764", + "0" + ], + [ + 1565049600000, + "11830.00000000", + "12330.70000000", + "11226.70000000", + "11481.69000000", + "76705.38987500", + 1565135999999, + "904119081.61571263", + 625827, + "37522.11697200", + "442937542.04071641", + "0" + ], + [ + 1565136000000, + "11481.69000000", + "12141.17000000", + "11382.84000000", + "11975.03000000", + "69173.39035300", + 1565222399999, + "814597979.05050404", + 592916, + "36357.22591800", + "428496665.57006503", + "0" + ], + [ + 1565222400000, + "11975.04000000", + "12060.00000000", + "11521.00000000", + "11999.77000000", + "51207.25717400", + 1565308799999, + "604389131.06283610", + 473584, + "27463.20076300", + "324785966.12659640", + "0" + ], + [ + 1565308800000, + "11994.17000000", + "12045.68000000", + "11700.00000000", + "11879.99000000", + "39427.15258800", + 1565395199999, + "467011047.94142844", + 410902, + "20074.42191100", + "238009297.57960402", + "0" + ], + [ + 1565395200000, + "11879.98000000", + "11985.00000000", + "11270.00000000", + "11309.31000000", + "42633.08704800", + 1565481599999, + "492217964.49055574", + 399237, + "17111.12507600", + "197997879.10911432", + "0" + ], + [ + 1565481600000, + "11309.24000000", + "11600.00000000", + "11112.11000000", + "11549.97000000", + "26772.90691000", + 1565567999999, + "304862403.35144906", + 306234, + "15007.43820000", + "171032610.99181714", + "0" + ], + [ + 1565568000000, + "11539.08000000", + "11577.89000000", + "11235.32000000", + "11396.08000000", + "17568.22707500", + 1565654399999, + "200325471.60414099", + 255966, + "9200.43087900", + "104948602.15277771", + "0" + ], + [ + 1565654400000, + "11398.35000000", + "11456.16000000", + "10788.45000000", + "10892.71000000", + "33234.72968000", + 1565740799999, + "368994475.54611235", + 337834, + "13483.55870000", + "149693332.12683108", + "0" + ], + [ + 1565740800000, + "10893.36000000", + "10897.48000000", + "9928.10000000", + "10050.37000000", + "54451.84749900", + 1565827199999, + "567724729.10590593", + 534507, + "26080.63138100", + "271971667.55098168", + "0" + ], + [ + 1565827200000, + "10055.16000000", + "10460.00000000", + "9911.00000000", + "10293.93000000", + "38174.45112000", + 1565913599999, + "387705855.08791121", + 373368, + "19588.08291800", + "199059445.60425642", + "0" + ], + [ + 1565913600000, + "10296.77000000", + "10536.03000000", + "9750.00000000", + "10331.54000000", + "51758.14291800", + 1565999999999, + "527258446.39777652", + 504740, + "25818.03153700", + "263301246.89849174", + "0" + ], + [ + 1566000000000, + "10331.15000000", + "10465.14000000", + "10000.00000000", + "10216.02000000", + "29000.58120100", + 1566086399999, + "297776329.03058246", + 332795, + "14672.94974000", + "150792759.34523310", + "0" + ], + [ + 1566086400000, + "10216.05000000", + "10500.00000000", + "10080.00000000", + "10306.78000000", + "24085.39517200", + 1566172799999, + "248508872.45998642", + 265705, + "12961.47855700", + "133774771.71696787", + "0" + ], + [ + 1566172800000, + "10306.17000000", + "10930.00000000", + "10258.60000000", + "10915.54000000", + "37243.31921700", + 1566259199999, + "396233441.02745958", + 337022, + "20591.43657200", + "219085855.34458049", + "0" + ], + [ + 1566259200000, + "10914.73000000", + "10949.96000000", + "10560.00000000", + "10760.51000000", + "32298.92167900", + 1566345599999, + "346664453.13672654", + 305065, + "16017.54472900", + "172082522.17892725", + "0" + ], + [ + 1566345600000, + "10760.51000000", + "10804.13000000", + "9858.00000000", + "10142.57000000", + "47355.71928200", + 1566431999999, + "482889274.51791698", + 458814, + "21565.83056100", + "219533134.86528105", + "0" + ], + [ + 1566432000000, + "10140.82000000", + "10242.00000000", + "9762.00000000", + "10099.88000000", + "34059.64273800", + 1566518399999, + "341371442.90683880", + 401148, + "17921.95430000", + "179746967.23521429", + "0" + ], + [ + 1566518400000, + "10099.90000000", + "10445.00000000", + "10019.79000000", + "10389.55000000", + "27550.33617300", + 1566604799999, + "282732431.75207238", + 326866, + "14798.81633800", + "151926638.08027624", + "0" + ], + [ + 1566604800000, + "10388.16000000", + "10419.42000000", + "9890.00000000", + "10134.35000000", + "27692.45684400", + 1566691199999, + "279962133.62570987", + 313227, + "13623.56484100", + "137726211.36364345", + "0" + ], + [ + 1566691200000, + "10134.61000000", + "10333.00000000", + "9906.97000000", + "10142.69000000", + "26271.65739800", + 1566777599999, + "265132761.31704284", + 289956, + "12885.71773500", + "130202473.09027293", + "0" + ], + [ + 1566777600000, + "10142.69000000", + "10604.00000000", + "10137.93000000", + "10372.25000000", + "41687.51159900", + 1566863999999, + "432249835.49069725", + 405316, + "22666.59545200", + "235202578.43601217", + "0" + ], + [ + 1566864000000, + "10373.60000000", + "10391.08000000", + "10051.08000000", + "10185.05000000", + "28402.77538300", + 1566950399999, + "289340681.07895178", + 292888, + "13852.44213800", + "141207845.02919283", + "0" + ], + [ + 1566950400000, + "10185.69000000", + "10299.00000000", + "9601.01000000", + "9721.00000000", + "42110.55537500", + 1567036799999, + "420034883.00315258", + 381293, + "19430.82257300", + "194055407.18003406", + "0" + ], + [ + 1567036800000, + "9721.00000000", + "9724.00000000", + "9320.00000000", + "9498.44000000", + "35532.69491000", + 1567123199999, + "337838761.55728653", + 343887, + "17536.26844800", + "166811264.08255094", + "0" + ], + [ + 1567123200000, + "9499.01000000", + "9696.00000000", + "9350.41000000", + "9584.54000000", + "26834.31810400", + 1567209599999, + "255854874.45077452", + 259270, + "14227.87285100", + "135696420.41983487", + "0" + ], + [ + 1567209600000, + "9582.76000000", + "9684.51000000", + "9420.75000000", + "9587.47000000", + "17130.29007400", + 1567295999999, + "164116756.46299691", + 199188, + "8558.14821400", + "82010834.33875087", + "0" + ], + [ + 1567296000000, + "9588.74000000", + "9830.00000000", + "9520.00000000", + "9724.98000000", + "19545.40484300", + 1567382399999, + "188513289.12235729", + 191324, + "11545.61059800", + "111464034.38112413", + "0" + ], + [ + 1567382400000, + "9723.59000000", + "10450.00000000", + "9712.50000000", + "10340.00000000", + "44740.24809300", + 1567468799999, + "448462178.63038095", + 354155, + "25140.29612500", + "251933840.30794755", + "0" + ], + [ + 1567468800000, + "10340.00000000", + "10773.00000000", + "10272.00000000", + "10615.28000000", + "47998.37678100", + 1567555199999, + "505617667.39926684", + 416076, + "24734.30326400", + "260488377.88812712", + "0" + ], + [ + 1567555200000, + "10611.85000000", + "10799.00000000", + "10369.89000000", + "10567.02000000", + "43943.88902600", + 1567641599999, + "463526509.32593700", + 383457, + "22244.06765600", + "234731325.60204142", + "0" + ], + [ + 1567641600000, + "10565.92000000", + "10900.00000000", + "10450.00000000", + "10564.49000000", + "33970.96063900", + 1567727999999, + "358861340.78979007", + 309846, + "16535.14780700", + "174901090.47337497", + "0" + ], + [ + 1567728000000, + "10563.13000000", + "10905.87000000", + "10150.00000000", + "10298.73000000", + "58799.64095900", + 1567814399999, + "623662984.38433060", + 455334, + "29952.94442700", + "318275724.07277407", + "0" + ], + [ + 1567814400000, + "10298.71000000", + "10558.00000000", + "10288.57000000", + "10455.88000000", + "27637.87739200", + 1567900799999, + "287851131.18025769", + 272011, + "14673.48921600", + "152825898.95080234", + "0" + ], + [ + 1567900800000, + "10455.90000000", + "10592.50000000", + "10208.00000000", + "10381.18000000", + "23984.67201800", + 1567987199999, + "249900964.37153130", + 237752, + "10588.59245800", + "110370036.72549054", + "0" + ], + [ + 1567987200000, + "10381.24000000", + "10480.00000000", + "10068.50000000", + "10303.12000000", + "39835.72760800", + 1568073599999, + "409724831.94712268", + 330459, + "18729.47268400", + "192814736.82347485", + "0" + ], + [ + 1568073600000, + "10302.58000000", + "10384.99000000", + "9953.00000000", + "10098.15000000", + "28915.41222500", + 1568159999999, + "294323839.50700761", + 286763, + "13432.25682200", + "136876441.42321573", + "0" + ], + [ + 1568160000000, + "10098.19000000", + "10293.00000000", + "9880.00000000", + "10158.33000000", + "31953.82456200", + 1568246399999, + "321637085.47650871", + 309120, + "16583.81309700", + "167086058.18780477", + "0" + ], + [ + 1568246400000, + "10158.75000000", + "10448.81000000", + "10040.00000000", + "10415.01000000", + "34511.16275500", + 1568332799999, + "353390090.96777732", + 317881, + "18550.85320200", + "190066356.88701728", + "0" + ], + [ + 1568332800000, + "10415.01000000", + "10439.00000000", + "10153.00000000", + "10342.06000000", + "30280.33977600", + 1568419199999, + "311632094.25618850", + 304947, + "16763.85466300", + "172561765.65306618", + "0" + ], + [ + 1568419200000, + "10344.13000000", + "10419.99000000", + "10222.33000000", + "10335.02000000", + "23621.53351900", + 1568505599999, + "244063007.09022474", + 253929, + "13495.98669100", + "139491411.26572924", + "0" + ], + [ + 1568505600000, + "10332.81000000", + "10360.00000000", + "10252.15000000", + "10302.01000000", + "18047.65401300", + 1568591999999, + "185853330.43704256", + 194733, + "8221.80305500", + "84690636.88555922", + "0" + ], + [ + 1568592000000, + "10303.34000000", + "10355.00000000", + "10078.00000000", + "10251.31000000", + "28971.40165700", + 1568678399999, + "296325130.17090132", + 274368, + "13385.30225300", + "137008707.88664533", + "0" + ], + [ + 1568678400000, + "10249.68000000", + "10275.00000000", + "10128.01000000", + "10187.82000000", + "22914.32456300", + 1568764799999, + "233944812.56050799", + 287483, + "11195.43067300", + "114314296.20572508", + "0" + ], + [ + 1568764800000, + "10187.48000000", + "10258.02000000", + "10100.00000000", + "10156.99000000", + "24250.24930300", + 1568851199999, + "247024351.59799171", + 299466, + "11753.10911100", + "119777298.85924058", + "0" + ], + [ + 1568851200000, + "10156.41000000", + "10325.00000000", + "9653.00000000", + "10244.29000000", + "44826.28257900", + 1568937599999, + "447676492.98402635", + 429727, + "22623.28776300", + "226404409.68236710", + "0" + ], + [ + 1568937600000, + "10243.70000000", + "10281.00000000", + "10061.39000000", + "10168.59000000", + "25088.49106900", + 1569023999999, + "255205290.21183727", + 267032, + "12054.38488800", + "122687240.60518866", + "0" + ], + [ + 1569024000000, + "10167.92000000", + "10176.70000000", + "9900.00000000", + "9986.39000000", + "20544.17519600", + 1569110399999, + "206034034.50803514", + 245439, + "9285.85147900", + "93152981.29234466", + "0" + ], + [ + 1569110400000, + "9985.15000000", + "10089.00000000", + "9853.97000000", + "10028.87000000", + "22049.27525600", + 1569196799999, + "220133631.61284170", + 253713, + "11200.61192100", + "111864717.13240463", + "0" + ], + [ + 1569196800000, + "10028.05000000", + "10049.99000000", + "9615.77000000", + "9702.25000000", + "31937.23235600", + 1569283199999, + "314390584.62646132", + 332817, + "14940.11249600", + "147108768.54457945", + "0" + ], + [ + 1569283200000, + "9702.20000000", + "9794.99000000", + "7800.00000000", + "8493.14000000", + "94007.34520300", + 1569369599999, + "838996309.16112820", + 748712, + "42986.25312700", + "383608082.56863165", + "0" + ], + [ + 1569369600000, + "8497.55000000", + "8730.00000000", + "8215.64000000", + "8430.05000000", + "60783.89225800", + 1569455999999, + "512437200.36110440", + 544806, + "30489.47199400", + "257118054.54903361", + "0" + ], + [ + 1569456000000, + "8430.05000000", + "8465.99000000", + "7750.00000000", + "8063.73000000", + "67930.85374900", + 1569542399999, + "552794530.86668199", + 522062, + "33363.51365000", + "271728779.69954551", + "0" + ], + [ + 1569542400000, + "8063.49000000", + "8265.00000000", + "7852.15000000", + "8177.91000000", + "43882.92462500", + 1569628799999, + "352800745.20792857", + 369518, + "23224.86113500", + "186790633.03646185", + "0" + ], + [ + 1569628800000, + "8177.47000000", + "8315.00000000", + "8001.09000000", + "8198.81000000", + "34473.60516500", + 1569715199999, + "280672404.68049548", + 319113, + "18215.03986300", + "148326185.32000544", + "0" + ], + [ + 1569715200000, + "8199.38000000", + "8229.13000000", + "7890.00000000", + "8043.82000000", + "31544.21138800", + 1569801599999, + "253660600.32529288", + 322501, + "15507.40078100", + "124764250.17575432", + "0" + ], + [ + 1569801600000, + "8043.04000000", + "8337.26000000", + "7710.00000000", + "8289.34000000", + "55865.48726000", + 1569887999999, + "449120676.84276034", + 455556, + "29052.01095100", + "233783108.23169308", + "0" + ], + [ + 1569888000000, + "8289.97000000", + "8500.00000000", + "8173.05000000", + "8292.44000000", + "43472.41809100", + 1569974399999, + "362980689.87999125", + 387653, + "22518.98439500", + "188065394.22718111", + "0" + ], + [ + 1569974400000, + "8292.67000000", + "8373.91000000", + "8151.22000000", + "8359.94000000", + "26243.38664400", + 1570060799999, + "216325351.85864461", + 261430, + "13652.36085000", + "112568257.13363141", + "0" + ], + [ + 1570060800000, + "8360.00000000", + "8393.00000000", + "8060.00000000", + "8223.96000000", + "30488.28405800", + 1570147199999, + "250291751.27141390", + 281307, + "15321.40753500", + "125826457.09252053", + "0" + ], + [ + 1570147200000, + "8224.43000000", + "8232.41000000", + "8005.00000000", + "8137.13000000", + "26476.33040400", + 1570233599999, + "215325611.68221507", + 259012, + "13236.81025500", + "107708233.74574784", + "0" + ], + [ + 1570233600000, + "8137.09000000", + "8183.41000000", + "8012.98000000", + "8126.19000000", + "21907.61556400", + 1570319999999, + "177252877.00296909", + 237769, + "10620.06982200", + "85943843.84390094", + "0" + ], + [ + 1570320000000, + "8127.55000000", + "8153.87000000", + "7785.00000000", + "7854.25000000", + "34676.10404900", + 1570406399999, + "275447898.03287501", + 325795, + "16437.31014100", + "130619830.63356862", + "0" + ], + [ + 1570406400000, + "7855.30000000", + "8299.92000000", + "7762.00000000", + "8190.09000000", + "52202.07229700", + 1570492799999, + "420921679.84426315", + 482605, + "28088.64970400", + "226592301.64382157", + "0" + ], + [ + 1570492800000, + "8190.82000000", + "8325.00000000", + "8088.75000000", + "8168.39000000", + "35452.65742300", + 1570579199999, + "290675248.14144530", + 395685, + "16893.73714000", + "138551354.17557934", + "0" + ], + [ + 1570579200000, + "8170.79000000", + "8670.00000000", + "8115.00000000", + "8560.74000000", + "55038.70437800", + 1570665599999, + "462845251.81361025", + 537805, + "29211.87169000", + "245678414.82929021", + "0" + ], + [ + 1570665600000, + "8562.15000000", + "8644.00000000", + "8414.52000000", + "8558.03000000", + "39137.94616700", + 1570751999999, + "333925412.30414180", + 406932, + "20587.71397100", + "175682847.81235146", + "0" + ], + [ + 1570752000000, + "8557.82000000", + "8779.51000000", + "8212.38000000", + "8258.50000000", + "50405.28441800", + 1570838399999, + "424413201.53293220", + 471818, + "24618.01713500", + "207347909.97597683", + "0" + ], + [ + 1570838400000, + "8257.95000000", + "8400.00000000", + "8250.00000000", + "8300.09000000", + "21339.33409800", + 1570924799999, + "177707852.59481888", + 280633, + "11644.42954400", + "96979920.39843419", + "0" + ], + [ + 1570924800000, + "8301.98000000", + "8451.37000000", + "8160.00000000", + "8275.01000000", + "27840.73995300", + 1571011199999, + "232149438.36395869", + 320051, + "14035.91465400", + "117101482.90464429", + "0" + ], + [ + 1571011200000, + "8275.24000000", + "8388.85000000", + "8203.00000000", + "8348.20000000", + "29810.66325300", + 1571097599999, + "247530733.18003484", + 345679, + "15273.00375500", + "126831374.41473168", + "0" + ], + [ + 1571097600000, + "8346.86000000", + "8403.00000000", + "8090.00000000", + "8159.29000000", + "32773.06247600", + 1571183999999, + "270727559.77701092", + 399447, + "16822.94001500", + "139031758.65565604", + "0" + ], + [ + 1571184000000, + "8159.30000000", + "8181.16000000", + "7917.00000000", + "7991.74000000", + "34733.59396600", + 1571270399999, + "279586845.53621386", + 421026, + "17198.82797600", + "138510455.77691367", + "0" + ], + [ + 1571270400000, + "7995.02000000", + "8124.92000000", + "7929.03000000", + "8070.58000000", + "29656.94915800", + 1571356799999, + "238343204.48251529", + 356490, + "15922.04605800", + "127960055.04589145", + "0" + ], + [ + 1571356800000, + "8070.71000000", + "8115.00000000", + "7816.01000000", + "7947.01000000", + "31353.18141600", + 1571443199999, + "248931322.10085052", + 399783, + "15692.63445000", + "124639536.56963075", + "0" + ], + [ + 1571443200000, + "7946.89000000", + "8098.10000000", + "7866.92000000", + "7948.01000000", + "26627.88938800", + 1571529599999, + "211909734.13572005", + 349746, + "13886.83824400", + "110541248.17503742", + "0" + ], + [ + 1571529600000, + "7949.87000000", + "8297.00000000", + "7870.00000000", + "8223.35000000", + "34286.45265400", + 1571615999999, + "275899861.65387123", + 396091, + "18042.42367700", + "145235373.21216156", + "0" + ], + [ + 1571616000000, + "8223.35000000", + "8333.00000000", + "8142.03000000", + "8197.27000000", + "30448.67953900", + 1571702399999, + "250117281.63661337", + 367169, + "16584.00038400", + "136247602.03863662", + "0" + ], + [ + 1571702400000, + "8197.28000000", + "8297.99000000", + "8000.00000000", + "8020.00000000", + "34651.82866300", + 1571788799999, + "283535483.41051363", + 384699, + "16767.03682400", + "137253195.95826291", + "0" + ], + [ + 1571788800000, + "8020.06000000", + "8047.59000000", + "7300.00000000", + "7466.62000000", + "63897.45709800", + 1571875199999, + "488220760.64641560", + 610241, + "28473.73030200", + "217502083.43670305", + "0" + ], + [ + 1571875200000, + "7468.47000000", + "7503.68000000", + "7337.99000000", + "7412.41000000", + "32714.38326500", + 1571961599999, + "243246414.94892389", + 403778, + "16705.37635500", + "124225722.47547963", + "0" + ], + [ + 1571961600000, + "7412.41000000", + "8799.00000000", + "7361.00000000", + "8655.02000000", + "90748.21817400", + 1572047999999, + "737329544.88351963", + 775418, + "49588.97661200", + "402740312.18785392", + "0" + ], + [ + 1572048000000, + "8655.88000000", + "10370.00000000", + "8470.38000000", + "9230.00000000", + "162588.58541300", + 1572134399999, + "1522244166.41084847", + 1185369, + "81590.33653100", + "764040095.62121791", + "0" + ], + [ + 1572134400000, + "9230.00000000", + "9794.98000000", + "9074.34000000", + "9529.93000000", + "93833.54160400", + 1572220799999, + "887438297.74626678", + 799978, + "47320.55467000", + "447629005.39656268", + "0" + ], + [ + 1572220800000, + "9528.23000000", + "9902.10000000", + "9160.00000000", + "9205.14000000", + "80174.21732300", + 1572307199999, + "759178942.94884192", + 681128, + "39754.68150100", + "376584590.21858095", + "0" + ], + [ + 1572307200000, + "9204.45000000", + "9550.00000000", + "9072.00000000", + "9407.62000000", + "64158.46244600", + 1572393599999, + "600611324.63569959", + 559589, + "32787.04917400", + "307062268.41991786", + "0" + ], + [ + 1572393600000, + "9407.62000000", + "9409.84000000", + "9001.01000000", + "9154.72000000", + "55241.78643400", + 1572479999999, + "506584830.03133233", + 524035, + "27416.56174800", + "251452283.20530460", + "0" + ], + [ + 1572480000000, + "9154.02000000", + "9405.00000000", + "8913.00000000", + "9140.85000000", + "54376.02490200", + 1572566399999, + "498152743.73480882", + 490183, + "27252.20353600", + "249802680.66380806", + "0" + ], + [ + 1572566400000, + "9140.86000000", + "9279.00000000", + "9030.00000000", + "9231.61000000", + "43594.81411500", + 1572652799999, + "398803069.00908462", + 478002, + "22843.60504200", + "209045155.88095699", + "0" + ], + [ + 1572652800000, + "9231.40000000", + "9373.74000000", + "9186.21000000", + "9289.52000000", + "28923.06082800", + 1572739199999, + "268119579.73009112", + 325421, + "15316.18786300", + "141991067.15333212", + "0" + ], + [ + 1572739200000, + "9289.85000000", + "9362.57000000", + "9066.14000000", + "9194.71000000", + "27894.37827900", + 1572825599999, + "256664259.66219141", + 326024, + "13611.80655800", + "125328511.00426772", + "0" + ], + [ + 1572825600000, + "9196.46000000", + "9513.68000000", + "9115.84000000", + "9393.35000000", + "45894.45627700", + 1572911999999, + "426792003.17490647", + 453749, + "24741.81592500", + "230142613.20752436", + "0" + ], + [ + 1572912000000, + "9392.40000000", + "9454.95000000", + "9175.76000000", + "9308.66000000", + "45935.87366500", + 1572998399999, + "428156963.07854693", + 492885, + "22809.23955800", + "212668961.37619617", + "0" + ], + [ + 1572998400000, + "9307.73000000", + "9440.91000000", + "9250.01000000", + "9339.05000000", + "37336.17037200", + 1573084799999, + "348607499.83121694", + 402997, + "18947.02412700", + "176929534.86037745", + "0" + ], + [ + 1573084800000, + "9339.16000000", + "9375.00000000", + "9101.00000000", + "9216.20000000", + "39117.47085300", + 1573171199999, + "361217475.05834649", + 401984, + "19603.52357200", + "181092296.04003776", + "0" + ], + [ + 1573171200000, + "9214.00000000", + "9261.00000000", + "8696.00000000", + "8773.73000000", + "62107.28924300", + 1573257599999, + "555589995.99358589", + 567331, + "30046.12929100", + "268900339.26312254", + "0" + ], + [ + 1573257600000, + "8773.74000000", + "8880.00000000", + "8724.88000000", + "8809.41000000", + "29469.48140500", + 1573343999999, + "259733491.82990895", + 326730, + "14990.42224600", + "132136096.26889738", + "0" + ], + [ + 1573344000000, + "8809.18000000", + "9147.19000000", + "8750.00000000", + "9039.47000000", + "34422.02979700", + 1573430399999, + "307316853.90375426", + 375946, + "17722.19709000", + "158219187.66195828", + "0" + ], + [ + 1573430400000, + "9040.16000000", + "9072.32000000", + "8618.68000000", + "8733.27000000", + "44888.05354500", + 1573516799999, + "394585996.32928712", + 415982, + "22111.94305700", + "194310323.85678739", + "0" + ], + [ + 1573516800000, + "8733.36000000", + "8888.00000000", + "8567.60000000", + "8821.94000000", + "40366.62947100", + 1573603199999, + "352675938.43059302", + 406765, + "20225.03456000", + "176773688.17197935", + "0" + ], + [ + 1573603200000, + "8821.91000000", + "8844.99000000", + "8702.00000000", + "8777.12000000", + "26810.11691800", + 1573689599999, + "235060554.12410157", + 281593, + "13524.99303500", + "118583622.59890504", + "0" + ], + [ + 1573689600000, + "8777.54000000", + "8800.00000000", + "8582.60000000", + "8646.68000000", + "33468.46896100", + 1573775999999, + "290104306.95303317", + 337019, + "16272.81678500", + "141092283.63703056", + "0" + ], + [ + 1573776000000, + "8646.38000000", + "8790.00000000", + "8400.00000000", + "8471.73000000", + "46087.41775100", + 1573862399999, + "394708981.31557231", + 423919, + "22568.29011700", + "193359510.76146770", + "0" + ], + [ + 1573862400000, + "8471.62000000", + "8543.00000000", + "8400.00000000", + "8491.02000000", + "20902.29975200", + 1573948799999, + "177222838.38564817", + 231473, + "10703.62978400", + "90759494.93371469", + "0" + ], + [ + 1573948800000, + "8490.74000000", + "8635.00000000", + "8350.68000000", + "8502.40000000", + "27009.03708200", + 1574035199999, + "229995700.81158423", + 259594, + "13607.51617900", + "115878483.61499645", + "0" + ], + [ + 1574035200000, + "8502.87000000", + "8503.52000000", + "8060.00000000", + "8187.17000000", + "43017.69094000", + 1574121599999, + "358706174.82521841", + 366263, + "20525.11692400", + "171255974.96099598", + "0" + ], + [ + 1574121600000, + "8186.50000000", + "8218.63000000", + "8003.00000000", + "8133.64000000", + "43556.06102500", + 1574207999999, + "353463792.04443395", + 357382, + "21816.72508400", + "177061624.17883486", + "0" + ], + [ + 1574208000000, + "8133.83000000", + "8264.29000000", + "8038.40000000", + "8098.01000000", + "32466.23098000", + 1574294399999, + "263387575.48592199", + 288843, + "16751.18645900", + "135913703.28376596", + "0" + ], + [ + 1574294400000, + "8098.56000000", + "8134.73000000", + "7500.00000000", + "7627.74000000", + "58418.78026100", + 1574380799999, + "455166676.27818021", + 430062, + "26902.36985100", + "209669250.00512216", + "0" + ], + [ + 1574380800000, + "7627.79000000", + "7750.00000000", + "6790.00000000", + "7268.23000000", + "126603.14025900", + 1574467199999, + "917881536.26208392", + 817604, + "60867.91218200", + "441369226.60627317", + "0" + ], + [ + 1574467200000, + "7268.23000000", + "7344.48000000", + "7080.01000000", + "7311.57000000", + "50449.89475500", + 1574553599999, + "364446217.37376043", + 414045, + "25882.63146600", + "187044325.06936933", + "0" + ], + [ + 1574553600000, + "7311.10000000", + "7330.39000000", + "6861.00000000", + "6903.28000000", + "67890.20648300", + 1574639999999, + "481922941.32697582", + 446014, + "33387.52869500", + "237048588.06349042", + "0" + ], + [ + 1574640000000, + "6900.23000000", + "7377.69000000", + "6515.00000000", + "7109.57000000", + "119645.73519700", + 1574726399999, + "831628458.30490691", + 679721, + "60533.39361300", + "421590444.06566384", + "0" + ], + [ + 1574726400000, + "7109.99000000", + "7340.00000000", + "7017.48000000", + "7156.14000000", + "65722.39769000", + 1574812799999, + "469602476.91268085", + 433933, + "33301.34994100", + "237985219.12113364", + "0" + ], + [ + 1574812800000, + "7154.75000000", + "7655.00000000", + "6840.00000000", + "7508.52000000", + "92452.87349000", + 1574899199999, + "671646609.16955084", + 582055, + "47058.02874400", + "342164140.18315736", + "0" + ], + [ + 1574899200000, + "7507.90000000", + "7643.00000000", + "7360.00000000", + "7419.49000000", + "56933.98110900", + 1574985599999, + "427572714.94560073", + 388953, + "28876.70895200", + "216954965.99168930", + "0" + ], + [ + 1574985600000, + "7418.52000000", + "7850.00000000", + "7362.30000000", + "7739.68000000", + "60745.30087300", + 1575071999999, + "463006956.68515143", + 412929, + "31576.88619000", + "240751084.86781706", + "0" + ], + [ + 1575072000000, + "7740.99000000", + "7810.00000000", + "7441.00000000", + "7541.89000000", + "46989.43361900", + 1575158399999, + "358749026.36075541", + 346506, + "23743.61033700", + "181318684.76790961", + "0" + ], + [ + 1575158400000, + "7540.63000000", + "7541.85000000", + "7210.00000000", + "7390.89000000", + "60769.34231300", + 1575244799999, + "446524917.20597040", + 420573, + "31120.00293200", + "228709227.47478201", + "0" + ], + [ + 1575244800000, + "7391.50000000", + "7420.56000000", + "7151.10000000", + "7294.28000000", + "46330.25604000", + 1575331199999, + "337889295.51018099", + 326881, + "24043.61639300", + "175417845.96777071", + "0" + ], + [ + 1575331200000, + "7294.42000000", + "7400.00000000", + "7241.35000000", + "7292.71000000", + "33149.47748700", + 1575417599999, + "242379261.10434754", + 265391, + "16639.29483700", + "121693871.29329204", + "0" + ], + [ + 1575417600000, + "7292.71000000", + "7750.00000000", + "7067.00000000", + "7194.32000000", + "83147.14914200", + 1575503999999, + "608623482.75992315", + 516158, + "41867.07805700", + "306621278.81212719", + "0" + ], + [ + 1575504000000, + "7194.59000000", + "7485.00000000", + "7150.00000000", + "7389.00000000", + "59306.67885500", + 1575590399999, + "434738864.78401241", + 430359, + "30794.87400900", + "225785929.45196422", + "0" + ], + [ + 1575590400000, + "7389.00000000", + "7590.03000000", + "7305.00000000", + "7527.47000000", + "48189.08794400", + 1575676799999, + "356905919.01555993", + 367854, + "25901.01433400", + "191894551.37719464", + "0" + ], + [ + 1575676800000, + "7527.80000000", + "7619.62000000", + "7470.16000000", + "7488.21000000", + "31498.68417300", + 1575763199999, + "237000924.85530462", + 263592, + "16179.18492200", + "121730405.77530764", + "0" + ], + [ + 1575763200000, + "7487.31000000", + "7564.00000000", + "7374.86000000", + "7510.11000000", + "29856.89763100", + 1575849599999, + "223314325.61846468", + 257514, + "15295.64625000", + "114410839.18893658", + "0" + ], + [ + 1575849600000, + "7510.11000000", + "7650.00000000", + "7273.00000000", + "7338.64000000", + "46621.88749300", + 1575935999999, + "347471155.48268330", + 359648, + "23733.12631700", + "176936408.77023645", + "0" + ], + [ + 1575936000000, + "7338.64000000", + "7407.60000000", + "7157.10000000", + "7224.13000000", + "49723.76214000", + 1576022399999, + "363127435.39551666", + 439637, + "24739.06415300", + "180700991.44760172", + "0" + ], + [ + 1576022400000, + "7224.15000000", + "7275.50000000", + "7125.66000000", + "7210.00000000", + "30093.09194400", + 1576108799999, + "217095653.86658926", + 268269, + "15475.53917200", + "111646214.45842433", + "0" + ], + [ + 1576108800000, + "7210.00000000", + "7295.00000000", + "7080.30000000", + "7198.08000000", + "42288.60093200", + 1576195199999, + "303657479.49269097", + 331414, + "20847.38402600", + "149736412.31992898", + "0" + ], + [ + 1576195200000, + "7197.76000000", + "7309.05000000", + "7190.76000000", + "7258.48000000", + "27609.87379500", + 1576281599999, + "199836160.23365225", + 252135, + "14299.03325600", + "103507284.73033177", + "0" + ], + [ + 1576281600000, + "7257.37000000", + "7271.77000000", + "7012.00000000", + "7064.05000000", + "29561.98596700", + 1576367999999, + "211004228.01585397", + 276819, + "14397.27374300", + "102799669.53690346", + "0" + ], + [ + 1576368000000, + "7064.14000000", + "7200.30000000", + "7008.35000000", + "7118.59000000", + "26395.77813700", + 1576454399999, + "187402764.56353110", + 262651, + "13778.88014600", + "97846824.91339022", + "0" + ], + [ + 1576454400000, + "7119.60000000", + "7150.00000000", + "6836.00000000", + "6891.72000000", + "43863.99305900", + 1576540799999, + "307508569.89251376", + 371202, + "21512.68837100", + "150883357.87501083", + "0" + ], + [ + 1576540800000, + "6891.44000000", + "6942.21000000", + "6560.00000000", + "6623.82000000", + "53865.06992900", + 1576627199999, + "364087469.82227792", + 454097, + "26510.45395100", + "179268531.68762408", + "0" + ], + [ + 1576627200000, + "6623.84000000", + "7440.00000000", + "6435.00000000", + "7277.83000000", + "95636.65125100", + 1576713599999, + "654057202.15882882", + 714073, + "49843.65081700", + "341707270.92404456", + "0" + ], + [ + 1576713600000, + "7277.83000000", + "7380.00000000", + "7038.31000000", + "7150.30000000", + "55509.04907500", + 1576799999999, + "397407677.05856507", + 439761, + "27456.52827200", + "196558003.60942764", + "0" + ], + [ + 1576800000000, + "7151.31000000", + "7220.00000000", + "7079.50000000", + "7187.83000000", + "32132.06920500", + 1576886399999, + "229842650.42149539", + 312766, + "16641.05268900", + "119044689.29161471", + "0" + ], + [ + 1576886400000, + "7188.01000000", + "7190.58000000", + "7105.00000000", + "7132.75000000", + "19467.17402800", + 1576972799999, + "139069157.08645769", + 212162, + "10119.76101200", + "72297064.99889134", + "0" + ], + [ + 1576972800000, + "7131.59000000", + "7518.54000000", + "7122.47000000", + "7501.44000000", + "39137.45515000", + 1577059199999, + "285577206.94063478", + 356612, + "20625.43673200", + "150554135.68143037", + "0" + ], + [ + 1577059200000, + "7500.71000000", + "7695.38000000", + "7265.84000000", + "7317.09000000", + "68051.99720300", + 1577145599999, + "510710431.76686034", + 530669, + "33444.24377200", + "251116788.72529315", + "0" + ], + [ + 1577145600000, + "7317.30000000", + "7436.68000000", + "7157.04000000", + "7255.77000000", + "43629.49418800", + 1577231999999, + "318428019.00090993", + 384678, + "21552.75120600", + "157326354.03834855", + "0" + ], + [ + 1577232000000, + "7255.77000000", + "7271.77000000", + "7128.86000000", + "7204.63000000", + "27492.04432300", + 1577318399999, + "198273303.10954585", + 289924, + "14433.03899100", + "104115922.41287489", + "0" + ], + [ + 1577318400000, + "7205.01000000", + "7435.00000000", + "7157.12000000", + "7202.00000000", + "36259.76107600", + 1577404799999, + "263289798.95618758", + 337695, + "18887.86566500", + "137178762.78933651", + "0" + ], + [ + 1577404800000, + "7202.00000000", + "7275.86000000", + "7076.42000000", + "7254.74000000", + "33642.70186100", + 1577491199999, + "242214722.72289035", + 297262, + "16882.39676800", + "121593559.33506629", + "0" + ], + [ + 1577491200000, + "7254.77000000", + "7365.01000000", + "7238.67000000", + "7316.14000000", + "26848.98219900", + 1577577599999, + "196322192.43800189", + 272607, + "13894.47624200", + "101598406.02770426", + "0" + ], + [ + 1577577600000, + "7315.36000000", + "7528.45000000", + "7288.00000000", + "7388.24000000", + "31387.10608500", + 1577663999999, + "231731575.82821695", + 283213, + "15999.77782800", + "118139507.92862746", + "0" + ], + [ + 1577664000000, + "7388.43000000", + "7408.24000000", + "7220.00000000", + "7246.00000000", + "29605.91178200", + 1577750399999, + "216508875.51767525", + 279033, + "13768.25666400", + "100676879.90295008", + "0" + ], + [ + 1577750400000, + "7246.00000000", + "7320.00000000", + "7145.01000000", + "7195.23000000", + "25954.45353300", + 1577836799999, + "187518399.34504001", + 251976, + "12595.93034700", + "91036201.13783441", + "0" + ] + ], + "queryString": "endTime=1577836799000\u0026interval=1d\u0026limit=1000\u0026startTime=1546300800000\u0026symbol=BTCUSDT", + "bodyParams": "", + "headers": {} } ] }, @@ -49760,57 +66095,25 @@ { "data": [ { - "symbol": "LTCBTC", - "orderId": 1, - "clientOrderId": "myOrder1", - "price": "0.1", - "origQty": "1.0", - "executedQty": "0.0", - "cummulativeQuoteQty": "0.0", - "status": "NEW", - "timeInForce": "GTC", - "type": "LIMIT", - "side": "BUY", - "stopPrice": "0.0", - "icebergQty": "0.0", - "time": 1499827319559, - "updateTime": 1499827319559, - "isWorking": true - } - ], - "queryString": "recvWindow=5000\u0026signature=0351f91c920dc08244977c888946962df9c39add182cfc400041a29dc41931ac\u0026timestamp=1560235137000", - "bodyParams": "", - "headers": { - "Key": [ - "" - ], - "X-Mbx-Apikey": [ - "" - ] - } - }, - { - "data": [ - { - "symbol": "LTCBTC", - "orderId": 1, "clientOrderId": "superDuperOpenOrder", - "price": "0.1", - "origQty": "1.0", - "executedQty": "0.0", "cummulativeQuoteQty": "0.0", + "executedQty": "0.0", + "icebergQty": "0.0", + "isWorking": true, + "orderId": 1, + "origQty": "1.0", + "price": "0.1", + "side": "BUY", "status": "NEW", + "stopPrice": "0.0", + "symbol": "LTCBTC", + "time": 1499827319559, "timeInForce": "GTC", "type": "LIMIT", - "side": "BUY", - "stopPrice": "0.0", - "icebergQty": "0.0", - "time": 1499827319559, - "updateTime": 1499827319559, - "isWorking": true + "updateTime": 1499827319559 } ], - "queryString": "recvWindow=5000\u0026signature=7ec10254280461f4ac9abaaad60afddf3f0ffeccf7aa5f8269174faea27751da\u0026symbol=LTCBTC\u0026timestamp=1560295910000", + "queryString": "recvWindow=5000\u0026signature=9045441a864bae591eea872d048a9a33c7b461e80f4b43758492cf082b12c21c\u0026symbol=LTCBTC\u0026timestamp=1588749275000", "bodyParams": "", "headers": { "X-Mbx-Apikey": [ @@ -49821,25 +66124,54 @@ { "data": [ { - "symbol": "BTCUDT", - "orderId": 1, "clientOrderId": "meowOrder", - "price": "0.1", - "origQty": "1.0", - "executedQty": "0.0", "cummulativeQuoteQty": "0.0", + "executedQty": "0.0", + "icebergQty": "0.0", + "isWorking": true, + "orderId": 1, + "origQty": "1.0", + "price": "0.1", + "side": "BUY", "status": "NEW", + "stopPrice": "0.0", + "symbol": "BTCUDT", + "time": 1499827319559, "timeInForce": "GTC", "type": "LIMIT", - "side": "BUY", - "stopPrice": "0.0", - "icebergQty": "0.0", - "time": 1499827319559, - "updateTime": 1499827319559, - "isWorking": true + "updateTime": 1499827319559 } ], - "queryString": "recvWindow=5000\u0026signature=d202904fe292b81d5fbb334ac7322bfbdb8472074c05f5a78b946232b197cd8a\u0026symbol=BTCUSDT\u0026timestamp=1560296250000", + "queryString": "recvWindow=5000\u0026signature=b93bae60f86eb753045b3d04e551f1d92c40e55c8db9dc0eb0aae7b9e552ace9\u0026symbol=BTCUSDT\u0026timestamp=1588749275000", + "bodyParams": "", + "headers": { + "X-Mbx-Apikey": [ + "" + ] + } + }, + { + "data": [ + { + "clientOrderId": "myOrder1", + "cummulativeQuoteQty": "0.0", + "executedQty": "0.0", + "icebergQty": "0.0", + "isWorking": true, + "orderId": 1, + "origQty": "1.0", + "price": "0.1", + "side": "BUY", + "status": "NEW", + "stopPrice": "0.0", + "symbol": "LTCBTC", + "time": 1499827319559, + "timeInForce": "GTC", + "type": "LIMIT", + "updateTime": 1499827319559 + } + ], + "queryString": "recvWindow=5000\u0026signature=5e67c8fb2596f25f74bca3043718faf3cc9794e45d9cebdd5eaee82f419b2318\u0026timestamp=1588749276000", "bodyParams": "", "headers": { "X-Mbx-Apikey": [ @@ -49909,24 +66241,24 @@ "GET": [ { "data": { - "symbol": "BTCUSDT", - "orderId": 1337, "clientOrderId": "eliteOrder", - "price": "0.1", - "origQty": "1.0", - "executedQty": "0.0", "cummulativeQuoteQty": "0.0", + "executedQty": "0.0", + "icebergQty": "0.0", + "isWorking": true, + "orderId": 1337, + "origQty": "1.0", + "price": "0.1", + "side": "BUY", "status": "NEW", + "stopPrice": "0.0", + "symbol": "BTCUSDT", + "time": 1499827319559, "timeInForce": "GTC", "type": "LIMIT", - "side": "BUY", - "stopPrice": "0.0", - "icebergQty": "0.0", - "time": 1499827319559, - "updateTime": 1499827319559, - "isWorking": true + "updateTime": 1499827319559 }, - "queryString": "orderId=1337\u0026recvWindow=5000\u0026signature=0dffb798f0ecba6292e5b5fc9e86027c4d85733c6ff6edd5dbb9be2f7e48f6a6\u0026symbol=BTCUSDT\u0026timestamp=1560296399000", + "queryString": "orderId=1337\u0026recvWindow=5000\u0026signature=5f2b2d28f643d70e21e391a3d454d55a95e06fdf437ed786470104711a129372\u0026symbol=BTCUSDT\u0026timestamp=1588749275000", "bodyParams": "", "headers": { "X-Mbx-Apikey": [ @@ -49977,34 +66309,6 @@ }, "/api/v3/ticker/24hr": { "GET": [ - { - "data": { - "askPrice": "6706.21000000", - "askQty": "0.19518800", - "bidPrice": "6705.88000000", - "bidQty": "0.18401100", - "closeTime": 1586991278494, - "count": 554428, - "firstId": 294247387, - "highPrice": "6933.00000000", - "lastId": 294801814, - "lastPrice": "6705.82000000", - "lastQty": "0.01000000", - "lowPrice": "6680.10000000", - "openPrice": "6872.64000000", - "openTime": 1586904878494, - "prevClosePrice": "6872.37000000", - "priceChange": "-166.82000000", - "priceChangePercent": "-2.427", - "quoteVolume": "392659910.62660750", - "symbol": "BTCUSDT", - "volume": "57857.49485700", - "weightedAvgPrice": "6786.67321489" - }, - "queryString": "symbol=BTCUSDT", - "bodyParams": "", - "headers": {} - }, { "data": [ { @@ -68089,6 +84393,34 @@ "queryString": "", "bodyParams": "", "headers": {} + }, + { + "data": { + "askPrice": "6706.21000000", + "askQty": "0.19518800", + "bidPrice": "6705.88000000", + "bidQty": "0.18401100", + "closeTime": 1586991278494, + "count": 554428, + "firstId": 294247387, + "highPrice": "6933.00000000", + "lastId": 294801814, + "lastPrice": "6705.82000000", + "lastQty": "0.01000000", + "lowPrice": "6680.10000000", + "openPrice": "6872.64000000", + "openTime": 1586904878494, + "prevClosePrice": "6872.37000000", + "priceChange": "-166.82000000", + "priceChangePercent": "-2.427", + "quoteVolume": "392659910.62660750", + "symbol": "BTCUSDT", + "volume": "57857.49485700", + "weightedAvgPrice": "6786.67321489" + }, + "queryString": "symbol=BTCUSDT", + "bodyParams": "", + "headers": {} } ] }, @@ -68300,16 +84632,13 @@ { "data": { "address": "1H5qe5xK5fCcEHGhww7jsoBMZRYSzVDz9V", - "success": true, "addressTag": "", - "asset": "BTC" + "asset": "BTC", + "success": true }, - "queryString": "asset=BTC\u0026recvWindow=5000\u0026signature=e94a8205dc67343a7bb482c4b4c65cb48abbca60b3009ee139e8c221f0271e6a\u0026status=true\u0026timestamp=1560233327000", + "queryString": "asset=BTC\u0026recvWindow=5000\u0026signature=3690734a6e2cd2ccd7fb692ec4e5fec67486b80d8a1a5e6159e53602295b1d60\u0026status=true\u0026timestamp=1588749172000", "bodyParams": "", "headers": { - "Key": [ - "" - ], "X-Mbx-Apikey": [ "" ] diff --git a/testdata/http_mock/bitstamp/bitstamp.json b/testdata/http_mock/bitstamp/bitstamp.json index ad366125..6f162e34 100644 --- a/testdata/http_mock/bitstamp/bitstamp.json +++ b/testdata/http_mock/bitstamp/bitstamp.json @@ -186,6 +186,16138 @@ } ] }, + "/api/v2/ohlc/btcusd/": { + "GET": [ + { + "data": { + "data": { + "ohlc": [ + { + "close": "7170.66", + "high": "7170.66", + "low": "7164.21", + "open": "7164.21", + "timestamp": "1577836200", + "volume": "0.08549090" + }, + { + "close": "7176.25", + "high": "7180.18", + "low": "7170.20", + "open": "7170.20", + "timestamp": "1577836260", + "volume": "1.19011113" + }, + { + "close": "7177.80", + "high": "7177.80", + "low": "7171.69", + "open": "7176.25", + "timestamp": "1577836320", + "volume": "0.15259559" + }, + { + "close": "7174.07", + "high": "7180.86", + "low": "7174.07", + "open": "7180.86", + "timestamp": "1577836380", + "volume": "2.17324716" + }, + { + "close": "7175.20", + "high": "7175.20", + "low": "7172.47", + "open": "7172.47", + "timestamp": "1577836440", + "volume": "0.03599842" + }, + { + "close": "7176.68", + "high": "7176.68", + "low": "7175.69", + "open": "7175.69", + "timestamp": "1577836500", + "volume": "0.01687725" + }, + { + "close": "7170.20", + "high": "7182.49", + "low": "7170.20", + "open": "7182.49", + "timestamp": "1577836560", + "volume": "6.24889160" + }, + { + "close": "7166.89", + "high": "7170.80", + "low": "7161.65", + "open": "7164.22", + "timestamp": "1577836620", + "volume": "3.95944050" + }, + { + "close": "7167.30", + "high": "7167.30", + "low": "7161.99", + "open": "7166.89", + "timestamp": "1577836680", + "volume": "0.56886771" + }, + { + "close": "7168.36", + "high": "7171.22", + "low": "7167.30", + "open": "7167.30", + "timestamp": "1577836740", + "volume": "0.19144775" + } + ], + "pair": "BTC/USD" + } + }, + "queryString": "end=1577836799\u0026limit=10\u0026start=1546300800\u0026step=60", + "bodyParams": "", + "headers": { + "Referer": [ + "https://www.bitstamp.net/api/v2/ohlc/btcusd?end=1577836799\u0026limit=10\u0026start=1546300800\u0026step=60" + ] + } + }, + { + "data": { + "data": { + "ohlc": [ + { + "close": "7222.32", + "high": "7222.32", + "low": "7222.32", + "open": "7222.32", + "timestamp": "1577776800", + "volume": "0.00762049" + }, + { + "close": "7221.50", + "high": "7221.50", + "low": "7221.50", + "open": "7221.50", + "timestamp": "1577776860", + "volume": "0.49979616" + }, + { + "close": "7215.39", + "high": "7218.24", + "low": "7215.39", + "open": "7218.24", + "timestamp": "1577776920", + "volume": "0.05353944" + }, + { + "close": "7219.09", + "high": "7219.09", + "low": "7215.86", + "open": "7216.95", + "timestamp": "1577776980", + "volume": "0.03791211" + }, + { + "close": "7219.79", + "high": "7222.32", + "low": "7219.09", + "open": "7219.09", + "timestamp": "1577777040", + "volume": "0.56048765" + }, + { + "close": "7219.56", + "high": "7219.79", + "low": "7219.56", + "open": "7219.56", + "timestamp": "1577777100", + "volume": "1.28609046" + }, + { + "close": "7216.84", + "high": "7216.84", + "low": "7216.84", + "open": "7216.84", + "timestamp": "1577777160", + "volume": "0.39438635" + }, + { + "close": "7221.83", + "high": "7221.83", + "low": "7216.84", + "open": "7221.83", + "timestamp": "1577777220", + "volume": "0.73344864" + }, + { + "close": "7221.28", + "high": "7221.28", + "low": "7217.00", + "open": "7217.00", + "timestamp": "1577777280", + "volume": "1.62708640" + }, + { + "close": "7222.33", + "high": "7222.33", + "low": "7218.79", + "open": "7221.83", + "timestamp": "1577777340", + "volume": "1.11897764" + }, + { + "close": "7218.12", + "high": "7224.39", + "low": "7218.11", + "open": "7222.32", + "timestamp": "1577777400", + "volume": "0.99703684" + }, + { + "close": "7219.27", + "high": "7226.22", + "low": "7219.27", + "open": "7226.22", + "timestamp": "1577777460", + "volume": "0.05739316" + }, + { + "close": "7230.13", + "high": "7230.13", + "low": "7225.16", + "open": "7225.16", + "timestamp": "1577777520", + "volume": "2.50711341" + }, + { + "close": "7230.44", + "high": "7230.44", + "low": "7230.44", + "open": "7230.44", + "timestamp": "1577777580", + "volume": "1.42498600" + }, + { + "close": "7230.63", + "high": "7230.63", + "low": "7229.75", + "open": "7229.75", + "timestamp": "1577777640", + "volume": "0.80394947" + }, + { + "close": "7230.63", + "high": "7230.63", + "low": "7230.63", + "open": "7230.63", + "timestamp": "1577777700", + "volume": "0.70000000" + }, + { + "close": "7223.00", + "high": "7230.79", + "low": "7223.00", + "open": "7230.79", + "timestamp": "1577777760", + "volume": "0.72000000" + }, + { + "close": "7225.34", + "high": "7225.34", + "low": "7223.00", + "open": "7223.00", + "timestamp": "1577777820", + "volume": "0.93053370" + }, + { + "close": "7225.34", + "high": "7225.34", + "low": "7225.34", + "open": "7225.34", + "timestamp": "1577777880", + "volume": "0.03924521" + }, + { + "close": "7225.34", + "high": "7225.34", + "low": "7223.00", + "open": "7223.00", + "timestamp": "1577777940", + "volume": "0.04694555" + }, + { + "close": "7223.00", + "high": "7230.57", + "low": "7223.00", + "open": "7225.34", + "timestamp": "1577778000", + "volume": "11.45803539" + }, + { + "close": "7225.82", + "high": "7225.82", + "low": "7222.56", + "open": "7222.56", + "timestamp": "1577778060", + "volume": "0.22756638" + }, + { + "close": "7220.71", + "high": "7225.34", + "low": "7220.71", + "open": "7225.34", + "timestamp": "1577778120", + "volume": "0.32799631" + }, + { + "close": "7225.34", + "high": "7225.34", + "low": "7225.34", + "open": "7225.34", + "timestamp": "1577778180", + "volume": "0.03046296" + }, + { + "close": "7225.34", + "high": "7225.34", + "low": "7225.34", + "open": "7225.34", + "timestamp": "1577778240", + "volume": "0.09558548" + }, + { + "close": "7219.80", + "high": "7219.80", + "low": "7219.80", + "open": "7219.80", + "timestamp": "1577778300", + "volume": "0.00000000" + }, + { + "close": "7219.80", + "high": "7225.34", + "low": "7219.80", + "open": "7225.34", + "timestamp": "1577778360", + "volume": "0.51056852" + }, + { + "close": "7225.34", + "high": "7230.57", + "low": "7225.34", + "open": "7225.34", + "timestamp": "1577778420", + "volume": "1.08256985" + }, + { + "close": "7226.02", + "high": "7226.02", + "low": "7219.80", + "open": "7219.80", + "timestamp": "1577778480", + "volume": "0.79286393" + }, + { + "close": "7230.18", + "high": "7230.53", + "low": "7226.73", + "open": "7226.73", + "timestamp": "1577778540", + "volume": "0.92905426" + }, + { + "close": "7234.80", + "high": "7234.87", + "low": "7233.86", + "open": "7233.86", + "timestamp": "1577778600", + "volume": "1.20456425" + }, + { + "close": "7225.80", + "high": "7231.01", + "low": "7225.80", + "open": "7231.00", + "timestamp": "1577778660", + "volume": "2.85568135" + }, + { + "close": "7224.70", + "high": "7231.01", + "low": "7224.70", + "open": "7231.01", + "timestamp": "1577778720", + "volume": "0.17954806" + }, + { + "close": "7229.84", + "high": "7229.84", + "low": "7229.84", + "open": "7229.84", + "timestamp": "1577778780", + "volume": "0.05331319" + }, + { + "close": "7225.97", + "high": "7235.25", + "low": "7225.97", + "open": "7229.84", + "timestamp": "1577778840", + "volume": "2.75793692" + }, + { + "close": "7228.11", + "high": "7233.74", + "low": "7225.74", + "open": "7230.30", + "timestamp": "1577778900", + "volume": "0.74081166" + }, + { + "close": "7229.84", + "high": "7229.84", + "low": "7229.84", + "open": "7229.84", + "timestamp": "1577778960", + "volume": "0.13004009" + }, + { + "close": "7236.56", + "high": "7236.56", + "low": "7229.84", + "open": "7229.84", + "timestamp": "1577779020", + "volume": "1.03421174" + }, + { + "close": "7237.19", + "high": "7237.19", + "low": "7231.23", + "open": "7231.23", + "timestamp": "1577779080", + "volume": "0.08246805" + }, + { + "close": "7231.85", + "high": "7237.19", + "low": "7231.85", + "open": "7231.85", + "timestamp": "1577779140", + "volume": "0.03733034" + }, + { + "close": "7228.11", + "high": "7234.30", + "low": "7228.11", + "open": "7231.40", + "timestamp": "1577779200", + "volume": "4.42333464" + }, + { + "close": "7226.41", + "high": "7234.30", + "low": "7226.41", + "open": "7234.30", + "timestamp": "1577779260", + "volume": "0.37543244" + }, + { + "close": "7233.81", + "high": "7234.30", + "low": "7227.78", + "open": "7234.30", + "timestamp": "1577779320", + "volume": "0.53343349" + }, + { + "close": "7233.81", + "high": "7233.81", + "low": "7227.78", + "open": "7233.81", + "timestamp": "1577779380", + "volume": "0.95967725" + }, + { + "close": "7233.55", + "high": "7233.55", + "low": "7228.44", + "open": "7233.55", + "timestamp": "1577779440", + "volume": "0.71341436" + }, + { + "close": "7228.24", + "high": "7233.55", + "low": "7228.24", + "open": "7228.24", + "timestamp": "1577779500", + "volume": "0.19525069" + }, + { + "close": "7226.60", + "high": "7226.60", + "low": "7226.60", + "open": "7226.60", + "timestamp": "1577779560", + "volume": "0.00000000" + }, + { + "close": "7226.60", + "high": "7233.55", + "low": "7226.60", + "open": "7233.55", + "timestamp": "1577779620", + "volume": "0.12909289" + }, + { + "close": "7232.55", + "high": "7233.55", + "low": "7226.60", + "open": "7226.60", + "timestamp": "1577779680", + "volume": "0.95917213" + }, + { + "close": "7227.91", + "high": "7232.55", + "low": "7227.61", + "open": "7227.61", + "timestamp": "1577779740", + "volume": "0.20574009" + }, + { + "close": "7228.06", + "high": "7232.55", + "low": "7228.06", + "open": "7232.55", + "timestamp": "1577779800", + "volume": "0.08292705" + }, + { + "close": "7225.87", + "high": "7227.61", + "low": "7225.87", + "open": "7227.61", + "timestamp": "1577779860", + "volume": "0.04577153" + }, + { + "close": "7222.37", + "high": "7227.00", + "low": "7222.37", + "open": "7227.00", + "timestamp": "1577779920", + "volume": "1.43160643" + }, + { + "close": "7221.54", + "high": "7224.55", + "low": "7221.54", + "open": "7221.54", + "timestamp": "1577779980", + "volume": "1.01758670" + }, + { + "close": "7216.88", + "high": "7224.29", + "low": "7216.60", + "open": "7221.54", + "timestamp": "1577780040", + "volume": "4.81303116" + }, + { + "close": "7221.06", + "high": "7223.95", + "low": "7216.88", + "open": "7216.88", + "timestamp": "1577780100", + "volume": "0.19314260" + }, + { + "close": "7216.91", + "high": "7216.91", + "low": "7216.91", + "open": "7216.91", + "timestamp": "1577780160", + "volume": "0.00699402" + }, + { + "close": "7215.34", + "high": "7220.55", + "low": "7215.34", + "open": "7220.55", + "timestamp": "1577780220", + "volume": "1.85513039" + }, + { + "close": "7218.43", + "high": "7218.43", + "low": "7214.36", + "open": "7214.58", + "timestamp": "1577780280", + "volume": "1.27856055" + }, + { + "close": "7214.24", + "high": "7218.43", + "low": "7214.24", + "open": "7214.37", + "timestamp": "1577780340", + "volume": "0.02989242" + }, + { + "close": "7212.42", + "high": "7218.41", + "low": "7212.18", + "open": "7218.41", + "timestamp": "1577780400", + "volume": "1.83262564" + }, + { + "close": "7213.26", + "high": "7218.41", + "low": "7213.26", + "open": "7218.41", + "timestamp": "1577780460", + "volume": "0.15733612" + }, + { + "close": "7213.90", + "high": "7218.41", + "low": "7213.25", + "open": "7217.54", + "timestamp": "1577780520", + "volume": "0.49399701" + }, + { + "close": "7213.90", + "high": "7218.08", + "low": "7211.41", + "open": "7211.41", + "timestamp": "1577780580", + "volume": "3.44654392" + }, + { + "close": "7216.78", + "high": "7217.54", + "low": "7213.90", + "open": "7213.90", + "timestamp": "1577780640", + "volume": "0.30707032" + }, + { + "close": "7205.16", + "high": "7216.01", + "low": "7205.16", + "open": "7216.01", + "timestamp": "1577780700", + "volume": "0.92927797" + }, + { + "close": "7211.98", + "high": "7211.98", + "low": "7204.72", + "open": "7206.99", + "timestamp": "1577780760", + "volume": "6.79265877" + }, + { + "close": "7210.13", + "high": "7214.47", + "low": "7207.32", + "open": "7207.32", + "timestamp": "1577780820", + "volume": "2.64134466" + }, + { + "close": "7217.99", + "high": "7217.99", + "low": "7209.96", + "open": "7214.32", + "timestamp": "1577780880", + "volume": "3.50572596" + }, + { + "close": "7210.99", + "high": "7217.99", + "low": "7210.99", + "open": "7217.99", + "timestamp": "1577780940", + "volume": "1.11726271" + }, + { + "close": "7212.97", + "high": "7212.97", + "low": "7208.83", + "open": "7212.97", + "timestamp": "1577781000", + "volume": "0.02615663" + }, + { + "close": "7207.32", + "high": "7212.97", + "low": "7207.32", + "open": "7212.97", + "timestamp": "1577781060", + "volume": "0.93564105" + }, + { + "close": "7210.93", + "high": "7215.48", + "low": "7209.23", + "open": "7211.82", + "timestamp": "1577781120", + "volume": "2.30235152" + }, + { + "close": "7216.77", + "high": "7217.38", + "low": "7212.26", + "open": "7216.91", + "timestamp": "1577781180", + "volume": "2.95274935" + }, + { + "close": "7216.03", + "high": "7219.75", + "low": "7211.91", + "open": "7216.77", + "timestamp": "1577781240", + "volume": "1.16743889" + }, + { + "close": "7216.03", + "high": "7216.03", + "low": "7213.04", + "open": "7213.04", + "timestamp": "1577781300", + "volume": "1.50405505" + }, + { + "close": "7216.01", + "high": "7216.03", + "low": "7211.82", + "open": "7211.82", + "timestamp": "1577781360", + "volume": "0.09265544" + }, + { + "close": "7210.43", + "high": "7216.01", + "low": "7210.43", + "open": "7216.01", + "timestamp": "1577781420", + "volume": "1.00380845" + }, + { + "close": "7210.63", + "high": "7215.94", + "low": "7210.43", + "open": "7210.43", + "timestamp": "1577781480", + "volume": "2.19226687" + }, + { + "close": "7215.99", + "high": "7219.98", + "low": "7215.99", + "open": "7219.98", + "timestamp": "1577781540", + "volume": "1.08620963" + }, + { + "close": "7216.00", + "high": "7218.26", + "low": "7215.99", + "open": "7215.99", + "timestamp": "1577781600", + "volume": "0.20533221" + }, + { + "close": "7215.00", + "high": "7218.26", + "low": "7215.00", + "open": "7218.26", + "timestamp": "1577781660", + "volume": "1.30581831" + }, + { + "close": "7217.19", + "high": "7217.19", + "low": "7214.59", + "open": "7217.19", + "timestamp": "1577781720", + "volume": "1.52500037" + }, + { + "close": "7215.00", + "high": "7217.19", + "low": "7215.00", + "open": "7215.00", + "timestamp": "1577781780", + "volume": "0.83647245" + }, + { + "close": "7215.00", + "high": "7217.19", + "low": "7215.00", + "open": "7217.19", + "timestamp": "1577781840", + "volume": "0.02166535" + }, + { + "close": "7215.68", + "high": "7215.68", + "low": "7210.00", + "open": "7215.00", + "timestamp": "1577781900", + "volume": "0.17182015" + }, + { + "close": "7215.68", + "high": "7215.68", + "low": "7210.00", + "open": "7215.68", + "timestamp": "1577781960", + "volume": "0.14900192" + }, + { + "close": "7215.68", + "high": "7215.68", + "low": "7209.97", + "open": "7215.68", + "timestamp": "1577782020", + "volume": "0.24363502" + }, + { + "close": "7215.68", + "high": "7215.68", + "low": "7209.97", + "open": "7215.68", + "timestamp": "1577782080", + "volume": "0.79464026" + }, + { + "close": "7215.68", + "high": "7215.68", + "low": "7210.00", + "open": "7210.00", + "timestamp": "1577782140", + "volume": "0.16804669" + }, + { + "close": "7215.68", + "high": "7215.68", + "low": "7210.07", + "open": "7210.07", + "timestamp": "1577782200", + "volume": "0.57449522" + }, + { + "close": "7210.01", + "high": "7215.68", + "low": "7210.01", + "open": "7215.68", + "timestamp": "1577782260", + "volume": "0.45309172" + }, + { + "close": "7215.71", + "high": "7215.71", + "low": "7210.01", + "open": "7215.68", + "timestamp": "1577782320", + "volume": "0.37106201" + }, + { + "close": "7207.32", + "high": "7214.98", + "low": "7207.32", + "open": "7214.98", + "timestamp": "1577782380", + "volume": "5.28871521" + }, + { + "close": "7209.56", + "high": "7209.56", + "low": "7208.00", + "open": "7208.00", + "timestamp": "1577782440", + "volume": "0.27440853" + }, + { + "close": "7212.17", + "high": "7212.44", + "low": "7207.00", + "open": "7209.56", + "timestamp": "1577782500", + "volume": "0.57907860" + }, + { + "close": "7212.44", + "high": "7212.44", + "low": "7207.31", + "open": "7207.35", + "timestamp": "1577782560", + "volume": "0.13882375" + }, + { + "close": "7207.09", + "high": "7212.44", + "low": "7207.09", + "open": "7212.44", + "timestamp": "1577782620", + "volume": "0.09980354" + }, + { + "close": "7210.00", + "high": "7212.54", + "low": "7207.01", + "open": "7212.35", + "timestamp": "1577782680", + "volume": "6.35496313" + }, + { + "close": "7211.65", + "high": "7211.65", + "low": "7210.00", + "open": "7210.00", + "timestamp": "1577782740", + "volume": "0.63171875" + }, + { + "close": "7207.00", + "high": "7210.00", + "low": "7207.00", + "open": "7210.00", + "timestamp": "1577782800", + "volume": "0.36537079" + }, + { + "close": "7209.97", + "high": "7209.97", + "low": "7204.26", + "open": "7207.00", + "timestamp": "1577782860", + "volume": "0.10803300" + }, + { + "close": "7205.00", + "high": "7209.91", + "low": "7205.00", + "open": "7205.00", + "timestamp": "1577782920", + "volume": "0.15961751" + }, + { + "close": "7200.70", + "high": "7209.08", + "low": "7199.20", + "open": "7209.08", + "timestamp": "1577782980", + "volume": "1.69656083" + }, + { + "close": "7199.01", + "high": "7204.63", + "low": "7196.70", + "open": "7200.70", + "timestamp": "1577783040", + "volume": "11.52183621" + }, + { + "close": "7194.01", + "high": "7200.33", + "low": "7194.00", + "open": "7197.00", + "timestamp": "1577783100", + "volume": "0.36289805" + }, + { + "close": "7203.77", + "high": "7203.77", + "low": "7198.49", + "open": "7199.96", + "timestamp": "1577783160", + "volume": "2.81358812" + }, + { + "close": "7214.35", + "high": "7214.35", + "low": "7203.77", + "open": "7203.77", + "timestamp": "1577783220", + "volume": "10.56503726" + }, + { + "close": "7209.68", + "high": "7212.16", + "low": "7207.77", + "open": "7209.99", + "timestamp": "1577783280", + "volume": "2.33288419" + }, + { + "close": "7212.73", + "high": "7212.73", + "low": "7212.73", + "open": "7212.73", + "timestamp": "1577783340", + "volume": "0.07271918" + }, + { + "close": "7214.99", + "high": "7215.00", + "low": "7212.73", + "open": "7212.73", + "timestamp": "1577783400", + "volume": "3.83753888" + }, + { + "close": "7211.81", + "high": "7214.99", + "low": "7211.81", + "open": "7214.99", + "timestamp": "1577783460", + "volume": "0.01417179" + }, + { + "close": "7211.64", + "high": "7211.64", + "low": "7211.64", + "open": "7211.64", + "timestamp": "1577783520", + "volume": "0.00000000" + }, + { + "close": "7211.64", + "high": "7214.99", + "low": "7211.63", + "open": "7214.99", + "timestamp": "1577783580", + "volume": "0.77357525" + }, + { + "close": "7214.67", + "high": "7214.99", + "low": "7211.64", + "open": "7211.64", + "timestamp": "1577783640", + "volume": "0.06347405" + }, + { + "close": "7214.99", + "high": "7214.99", + "low": "7209.68", + "open": "7209.68", + "timestamp": "1577783700", + "volume": "2.34265370" + }, + { + "close": "7214.97", + "high": "7214.99", + "low": "7211.48", + "open": "7211.91", + "timestamp": "1577783760", + "volume": "0.73640889" + }, + { + "close": "7220.16", + "high": "7220.16", + "low": "7213.53", + "open": "7214.97", + "timestamp": "1577783820", + "volume": "7.59203438" + }, + { + "close": "7218.88", + "high": "7218.88", + "low": "7213.00", + "open": "7214.98", + "timestamp": "1577783880", + "volume": "0.03892223" + }, + { + "close": "7212.73", + "high": "7218.84", + "low": "7212.73", + "open": "7218.84", + "timestamp": "1577783940", + "volume": "0.07464400" + }, + { + "close": "7212.73", + "high": "7218.84", + "low": "7212.73", + "open": "7212.73", + "timestamp": "1577784000", + "volume": "0.18107795" + }, + { + "close": "7218.11", + "high": "7218.11", + "low": "7213.97", + "open": "7213.97", + "timestamp": "1577784060", + "volume": "0.01794303" + }, + { + "close": "7217.46", + "high": "7217.46", + "low": "7211.74", + "open": "7212.88", + "timestamp": "1577784120", + "volume": "0.04979610" + }, + { + "close": "7211.36", + "high": "7216.29", + "low": "7211.35", + "open": "7216.29", + "timestamp": "1577784180", + "volume": "0.15844743" + }, + { + "close": "7211.36", + "high": "7215.76", + "low": "7211.36", + "open": "7215.76", + "timestamp": "1577784240", + "volume": "0.04696186" + }, + { + "close": "7209.70", + "high": "7211.36", + "low": "7209.70", + "open": "7211.36", + "timestamp": "1577784300", + "volume": "0.67094550" + }, + { + "close": "7205.00", + "high": "7209.70", + "low": "7204.12", + "open": "7209.70", + "timestamp": "1577784360", + "volume": "5.85081752" + }, + { + "close": "7209.64", + "high": "7209.64", + "low": "7205.67", + "open": "7205.67", + "timestamp": "1577784420", + "volume": "0.38519914" + }, + { + "close": "7216.78", + "high": "7216.78", + "low": "7209.64", + "open": "7209.64", + "timestamp": "1577784480", + "volume": "4.37452981" + }, + { + "close": "7211.03", + "high": "7211.03", + "low": "7211.03", + "open": "7211.03", + "timestamp": "1577784540", + "volume": "0.00822355" + }, + { + "close": "7205.73", + "high": "7210.24", + "low": "7205.73", + "open": "7210.24", + "timestamp": "1577784600", + "volume": "1.52007426" + }, + { + "close": "7208.22", + "high": "7210.17", + "low": "7208.22", + "open": "7210.17", + "timestamp": "1577784660", + "volume": "2.05869020" + }, + { + "close": "7207.85", + "high": "7214.48", + "low": "7207.85", + "open": "7208.22", + "timestamp": "1577784720", + "volume": "0.99740613" + }, + { + "close": "7205.73", + "high": "7213.25", + "low": "7205.73", + "open": "7213.25", + "timestamp": "1577784780", + "volume": "0.03727951" + }, + { + "close": "7205.80", + "high": "7205.80", + "low": "7205.80", + "open": "7205.80", + "timestamp": "1577784840", + "volume": "0.03000000" + }, + { + "close": "7210.97", + "high": "7210.97", + "low": "7205.73", + "open": "7205.80", + "timestamp": "1577784900", + "volume": "0.33571543" + }, + { + "close": "7207.48", + "high": "7210.97", + "low": "7207.48", + "open": "7207.48", + "timestamp": "1577784960", + "volume": "0.20151140" + }, + { + "close": "7206.83", + "high": "7210.97", + "low": "7205.73", + "open": "7210.97", + "timestamp": "1577785020", + "volume": "0.88052569" + }, + { + "close": "7210.97", + "high": "7210.97", + "low": "7205.83", + "open": "7210.97", + "timestamp": "1577785080", + "volume": "0.09277743" + }, + { + "close": "7204.21", + "high": "7210.97", + "low": "7204.21", + "open": "7210.97", + "timestamp": "1577785140", + "volume": "0.49260539" + }, + { + "close": "7204.23", + "high": "7210.60", + "low": "7204.21", + "open": "7210.60", + "timestamp": "1577785200", + "volume": "0.09169183" + }, + { + "close": "7206.04", + "high": "7210.60", + "low": "7200.00", + "open": "7210.60", + "timestamp": "1577785260", + "volume": "0.13470684" + }, + { + "close": "7206.04", + "high": "7206.04", + "low": "7200.00", + "open": "7200.00", + "timestamp": "1577785320", + "volume": "2.12476054" + }, + { + "close": "7209.40", + "high": "7209.40", + "low": "7206.04", + "open": "7206.04", + "timestamp": "1577785380", + "volume": "2.13592081" + }, + { + "close": "7210.13", + "high": "7210.13", + "low": "7203.69", + "open": "7203.69", + "timestamp": "1577785440", + "volume": "0.02179440" + }, + { + "close": "7210.13", + "high": "7210.13", + "low": "7204.55", + "open": "7210.13", + "timestamp": "1577785500", + "volume": "0.74995779" + }, + { + "close": "7209.44", + "high": "7209.44", + "low": "7202.70", + "open": "7202.70", + "timestamp": "1577785560", + "volume": "0.27172461" + }, + { + "close": "7205.70", + "high": "7212.03", + "low": "7205.70", + "open": "7209.44", + "timestamp": "1577785620", + "volume": "2.03613641" + }, + { + "close": "7204.08", + "high": "7209.54", + "low": "7204.08", + "open": "7204.18", + "timestamp": "1577785680", + "volume": "0.41756089" + }, + { + "close": "7204.12", + "high": "7209.54", + "low": "7204.08", + "open": "7204.08", + "timestamp": "1577785740", + "volume": "3.30219247" + }, + { + "close": "7197.08", + "high": "7204.50", + "low": "7195.77", + "open": "7201.00", + "timestamp": "1577785800", + "volume": "4.95077548" + }, + { + "close": "7203.08", + "high": "7207.97", + "low": "7198.55", + "open": "7198.55", + "timestamp": "1577785860", + "volume": "2.77990132" + }, + { + "close": "7207.97", + "high": "7207.97", + "low": "7207.97", + "open": "7207.97", + "timestamp": "1577785920", + "volume": "1.04217693" + }, + { + "close": "7199.14", + "high": "7205.65", + "low": "7199.14", + "open": "7202.97", + "timestamp": "1577785980", + "volume": "0.36043767" + }, + { + "close": "7204.78", + "high": "7204.78", + "low": "7198.26", + "open": "7200.24", + "timestamp": "1577786040", + "volume": "0.64331876" + }, + { + "close": "7204.78", + "high": "7204.78", + "low": "7204.78", + "open": "7204.78", + "timestamp": "1577786100", + "volume": "0.04869025" + }, + { + "close": "7204.56", + "high": "7204.78", + "low": "7199.37", + "open": "7204.78", + "timestamp": "1577786160", + "volume": "0.08451809" + }, + { + "close": "7204.56", + "high": "7204.56", + "low": "7200.08", + "open": "7200.08", + "timestamp": "1577786220", + "volume": "0.15109361" + }, + { + "close": "7204.56", + "high": "7204.56", + "low": "7198.91", + "open": "7204.56", + "timestamp": "1577786280", + "volume": "1.86216336" + }, + { + "close": "7202.96", + "high": "7210.67", + "low": "7202.14", + "open": "7202.14", + "timestamp": "1577786340", + "volume": "0.04307994" + }, + { + "close": "7204.46", + "high": "7205.02", + "low": "7197.59", + "open": "7205.02", + "timestamp": "1577786400", + "volume": "11.06047549" + }, + { + "close": "7203.61", + "high": "7204.45", + "low": "7199.31", + "open": "7199.31", + "timestamp": "1577786460", + "volume": "4.35427775" + }, + { + "close": "7202.12", + "high": "7202.12", + "low": "7197.74", + "open": "7199.72", + "timestamp": "1577786520", + "volume": "0.06006487" + }, + { + "close": "7202.12", + "high": "7202.12", + "low": "7198.07", + "open": "7198.07", + "timestamp": "1577786580", + "volume": "0.20387964" + }, + { + "close": "7198.07", + "high": "7202.12", + "low": "7198.07", + "open": "7202.12", + "timestamp": "1577786640", + "volume": "1.49251471" + }, + { + "close": "7196.00", + "high": "7201.05", + "low": "7196.00", + "open": "7198.07", + "timestamp": "1577786700", + "volume": "0.08800655" + }, + { + "close": "7190.14", + "high": "7196.44", + "low": "7189.92", + "open": "7196.00", + "timestamp": "1577786760", + "volume": "19.68534662" + }, + { + "close": "7195.97", + "high": "7199.19", + "low": "7191.11", + "open": "7193.75", + "timestamp": "1577786820", + "volume": "12.22701442" + }, + { + "close": "7197.57", + "high": "7197.57", + "low": "7188.04", + "open": "7193.79", + "timestamp": "1577786880", + "volume": "14.11611812" + }, + { + "close": "7193.46", + "high": "7193.72", + "low": "7193.46", + "open": "7193.72", + "timestamp": "1577786940", + "volume": "0.12264073" + }, + { + "close": "7198.96", + "high": "7198.96", + "low": "7193.00", + "open": "7198.96", + "timestamp": "1577787000", + "volume": "0.43513810" + }, + { + "close": "7193.00", + "high": "7193.00", + "low": "7193.00", + "open": "7193.00", + "timestamp": "1577787060", + "volume": "0.00688024" + }, + { + "close": "7197.68", + "high": "7197.68", + "low": "7193.00", + "open": "7197.68", + "timestamp": "1577787120", + "volume": "0.13725667" + }, + { + "close": "7197.68", + "high": "7197.68", + "low": "7197.68", + "open": "7197.68", + "timestamp": "1577787180", + "volume": "0.09861910" + }, + { + "close": "7200.00", + "high": "7202.23", + "low": "7195.09", + "open": "7197.68", + "timestamp": "1577787240", + "volume": "4.94255594" + }, + { + "close": "7203.60", + "high": "7203.60", + "low": "7199.51", + "open": "7202.23", + "timestamp": "1577787300", + "volume": "3.87568260" + }, + { + "close": "7202.85", + "high": "7208.18", + "low": "7201.52", + "open": "7208.18", + "timestamp": "1577787360", + "volume": "1.43722204" + }, + { + "close": "7209.12", + "high": "7209.12", + "low": "7203.62", + "open": "7208.18", + "timestamp": "1577787420", + "volume": "1.09454266" + }, + { + "close": "7209.12", + "high": "7209.12", + "low": "7204.15", + "open": "7209.12", + "timestamp": "1577787480", + "volume": "1.85399807" + }, + { + "close": "7210.41", + "high": "7213.62", + "low": "7204.29", + "open": "7207.68", + "timestamp": "1577787540", + "volume": "2.04928247" + }, + { + "close": "7206.70", + "high": "7210.41", + "low": "7203.61", + "open": "7204.47", + "timestamp": "1577787600", + "volume": "2.11728827" + }, + { + "close": "7214.19", + "high": "7214.19", + "low": "7208.09", + "open": "7208.09", + "timestamp": "1577787660", + "volume": "3.23877613" + }, + { + "close": "7221.72", + "high": "7222.56", + "low": "7214.19", + "open": "7214.19", + "timestamp": "1577787720", + "volume": "10.97203832" + }, + { + "close": "7219.70", + "high": "7224.48", + "low": "7214.64", + "open": "7220.37", + "timestamp": "1577787780", + "volume": "5.50551268" + }, + { + "close": "7222.84", + "high": "7222.84", + "low": "7220.25", + "open": "7220.25", + "timestamp": "1577787840", + "volume": "5.73518660" + }, + { + "close": "7220.82", + "high": "7224.48", + "low": "7220.82", + "open": "7224.40", + "timestamp": "1577787900", + "volume": "0.10387759" + }, + { + "close": "7222.66", + "high": "7222.66", + "low": "7217.29", + "open": "7219.27", + "timestamp": "1577787960", + "volume": "0.06604650" + }, + { + "close": "7223.19", + "high": "7223.19", + "low": "7218.87", + "open": "7218.87", + "timestamp": "1577788020", + "volume": "0.03594699" + }, + { + "close": "7215.97", + "high": "7217.95", + "low": "7213.99", + "open": "7217.95", + "timestamp": "1577788080", + "volume": "0.13683785" + }, + { + "close": "7215.04", + "high": "7219.19", + "low": "7215.04", + "open": "7215.97", + "timestamp": "1577788140", + "volume": "2.04464623" + }, + { + "close": "7229.86", + "high": "7229.86", + "low": "7217.29", + "open": "7219.19", + "timestamp": "1577788200", + "volume": "5.10980998" + }, + { + "close": "7233.00", + "high": "7233.00", + "low": "7222.38", + "open": "7227.18", + "timestamp": "1577788260", + "volume": "14.37010576" + }, + { + "close": "7231.42", + "high": "7233.37", + "low": "7227.79", + "open": "7233.00", + "timestamp": "1577788320", + "volume": "2.52643678" + }, + { + "close": "7223.99", + "high": "7229.70", + "low": "7223.99", + "open": "7229.70", + "timestamp": "1577788380", + "volume": "1.29269662" + }, + { + "close": "7226.31", + "high": "7228.64", + "low": "7223.99", + "open": "7223.99", + "timestamp": "1577788440", + "volume": "6.17464191" + }, + { + "close": "7224.01", + "high": "7229.00", + "low": "7222.49", + "open": "7222.49", + "timestamp": "1577788500", + "volume": "2.81118951" + }, + { + "close": "7223.89", + "high": "7228.38", + "low": "7222.60", + "open": "7222.60", + "timestamp": "1577788560", + "volume": "1.54610592" + }, + { + "close": "7221.00", + "high": "7221.00", + "low": "7221.00", + "open": "7221.00", + "timestamp": "1577788620", + "volume": "0.00000000" + }, + { + "close": "7221.00", + "high": "7225.87", + "low": "7219.68", + "open": "7223.00", + "timestamp": "1577788680", + "volume": "2.60385338" + }, + { + "close": "7221.01", + "high": "7224.67", + "low": "7221.00", + "open": "7221.00", + "timestamp": "1577788740", + "volume": "1.83451266" + }, + { + "close": "7224.67", + "high": "7224.67", + "low": "7221.01", + "open": "7221.01", + "timestamp": "1577788800", + "volume": "0.20722963" + }, + { + "close": "7221.12", + "high": "7226.80", + "low": "7221.12", + "open": "7226.80", + "timestamp": "1577788860", + "volume": "2.18033622" + }, + { + "close": "7226.40", + "high": "7226.40", + "low": "7221.00", + "open": "7221.00", + "timestamp": "1577788920", + "volume": "3.23629052" + }, + { + "close": "7222.22", + "high": "7226.91", + "low": "7222.22", + "open": "7222.22", + "timestamp": "1577788980", + "volume": "0.44426355" + }, + { + "close": "7212.99", + "high": "7226.89", + "low": "7212.99", + "open": "7222.22", + "timestamp": "1577789040", + "volume": "0.59659472" + }, + { + "close": "7217.45", + "high": "7217.45", + "low": "7217.45", + "open": "7217.45", + "timestamp": "1577789100", + "volume": "0.00381249" + }, + { + "close": "7210.50", + "high": "7220.18", + "low": "7210.50", + "open": "7217.45", + "timestamp": "1577789160", + "volume": "0.20041563" + }, + { + "close": "7209.77", + "high": "7214.55", + "low": "7208.83", + "open": "7210.50", + "timestamp": "1577789220", + "volume": "2.03104077" + }, + { + "close": "7213.31", + "high": "7218.97", + "low": "7212.66", + "open": "7215.15", + "timestamp": "1577789280", + "volume": "2.48517461" + }, + { + "close": "7215.31", + "high": "7218.97", + "low": "7215.31", + "open": "7218.97", + "timestamp": "1577789340", + "volume": "0.55789702" + }, + { + "close": "7215.00", + "high": "7220.03", + "low": "7213.42", + "open": "7214.76", + "timestamp": "1577789400", + "volume": "2.57759036" + }, + { + "close": "7220.03", + "high": "7220.03", + "low": "7215.76", + "open": "7215.76", + "timestamp": "1577789460", + "volume": "0.46084863" + }, + { + "close": "7213.46", + "high": "7220.03", + "low": "7213.46", + "open": "7220.00", + "timestamp": "1577789520", + "volume": "3.32148647" + }, + { + "close": "7218.61", + "high": "7218.61", + "low": "7213.47", + "open": "7213.82", + "timestamp": "1577789580", + "volume": "0.14852976" + }, + { + "close": "7218.61", + "high": "7218.61", + "low": "7213.69", + "open": "7213.69", + "timestamp": "1577789640", + "volume": "0.05559791" + }, + { + "close": "7218.61", + "high": "7218.61", + "low": "7213.69", + "open": "7213.69", + "timestamp": "1577789700", + "volume": "0.06350203" + }, + { + "close": "7218.61", + "high": "7218.61", + "low": "7215.44", + "open": "7218.61", + "timestamp": "1577789760", + "volume": "0.31814281" + }, + { + "close": "7214.80", + "high": "7218.61", + "low": "7214.32", + "open": "7214.32", + "timestamp": "1577789820", + "volume": "1.59622467" + }, + { + "close": "7214.80", + "high": "7218.61", + "low": "7214.80", + "open": "7214.80", + "timestamp": "1577789880", + "volume": "0.04620011" + }, + { + "close": "7224.27", + "high": "7224.27", + "low": "7214.80", + "open": "7214.80", + "timestamp": "1577789940", + "volume": "0.98945949" + }, + { + "close": "7228.46", + "high": "7229.08", + "low": "7224.20", + "open": "7224.27", + "timestamp": "1577790000", + "volume": "4.80064828" + }, + { + "close": "7228.90", + "high": "7228.90", + "low": "7228.90", + "open": "7228.90", + "timestamp": "1577790060", + "volume": "0.05018515" + }, + { + "close": "7227.55", + "high": "7227.55", + "low": "7227.55", + "open": "7227.55", + "timestamp": "1577790120", + "volume": "0.56179221" + }, + { + "close": "7223.03", + "high": "7223.03", + "low": "7223.03", + "open": "7223.03", + "timestamp": "1577790180", + "volume": "0.00695908" + }, + { + "close": "7229.14", + "high": "7229.14", + "low": "7229.14", + "open": "7229.14", + "timestamp": "1577790240", + "volume": "0.02547207" + }, + { + "close": "7232.09", + "high": "7232.09", + "low": "7224.91", + "open": "7224.91", + "timestamp": "1577790300", + "volume": "2.17770482" + }, + { + "close": "7231.84", + "high": "7231.84", + "low": "7225.25", + "open": "7230.04", + "timestamp": "1577790360", + "volume": "1.13885509" + }, + { + "close": "7222.98", + "high": "7222.98", + "low": "7222.98", + "open": "7222.98", + "timestamp": "1577790420", + "volume": "0.00818263" + }, + { + "close": "7223.00", + "high": "7228.36", + "low": "7223.00", + "open": "7223.66", + "timestamp": "1577790480", + "volume": "0.03107403" + }, + { + "close": "7216.78", + "high": "7224.84", + "low": "7216.78", + "open": "7223.00", + "timestamp": "1577790540", + "volume": "1.01899948" + }, + { + "close": "7220.39", + "high": "7220.39", + "low": "7220.39", + "open": "7220.39", + "timestamp": "1577790600", + "volume": "0.00000000" + }, + { + "close": "7220.39", + "high": "7220.39", + "low": "7213.48", + "open": "7213.48", + "timestamp": "1577790660", + "volume": "2.05894649" + }, + { + "close": "7217.09", + "high": "7224.43", + "low": "7217.09", + "open": "7218.90", + "timestamp": "1577790720", + "volume": "0.04754193" + }, + { + "close": "7214.31", + "high": "7221.13", + "low": "7214.31", + "open": "7221.13", + "timestamp": "1577790780", + "volume": "2.14894684" + }, + { + "close": "7215.71", + "high": "7215.71", + "low": "7215.71", + "open": "7215.71", + "timestamp": "1577790840", + "volume": "0.00834331" + }, + { + "close": "7215.72", + "high": "7219.25", + "low": "7215.72", + "open": "7219.25", + "timestamp": "1577790900", + "volume": "0.01591636" + }, + { + "close": "7217.96", + "high": "7223.13", + "low": "7215.72", + "open": "7215.72", + "timestamp": "1577790960", + "volume": "2.35981412" + }, + { + "close": "7223.13", + "high": "7223.13", + "low": "7223.13", + "open": "7223.13", + "timestamp": "1577791020", + "volume": "0.78848592" + }, + { + "close": "7223.13", + "high": "7223.13", + "low": "7219.16", + "open": "7223.13", + "timestamp": "1577791080", + "volume": "0.29792611" + }, + { + "close": "7218.49", + "high": "7223.13", + "low": "7218.27", + "open": "7223.13", + "timestamp": "1577791140", + "volume": "1.03362018" + }, + { + "close": "7224.89", + "high": "7224.89", + "low": "7223.13", + "open": "7223.13", + "timestamp": "1577791200", + "volume": "0.14000000" + }, + { + "close": "7224.89", + "high": "7224.89", + "low": "7220.83", + "open": "7224.89", + "timestamp": "1577791260", + "volume": "2.91983844" + }, + { + "close": "7227.71", + "high": "7227.71", + "low": "7224.89", + "open": "7224.89", + "timestamp": "1577791320", + "volume": "0.62673957" + }, + { + "close": "7224.43", + "high": "7227.71", + "low": "7224.43", + "open": "7227.71", + "timestamp": "1577791380", + "volume": "0.68519287" + }, + { + "close": "7219.80", + "high": "7224.42", + "low": "7219.70", + "open": "7219.70", + "timestamp": "1577791440", + "volume": "1.04915965" + }, + { + "close": "7224.42", + "high": "7224.42", + "low": "7224.42", + "open": "7224.42", + "timestamp": "1577791500", + "volume": "0.94644281" + }, + { + "close": "7214.70", + "high": "7219.75", + "low": "7213.69", + "open": "7213.79", + "timestamp": "1577791560", + "volume": "2.83059626" + }, + { + "close": "7215.47", + "high": "7219.53", + "low": "7214.70", + "open": "7214.70", + "timestamp": "1577791620", + "volume": "3.57553838" + }, + { + "close": "7219.42", + "high": "7219.42", + "low": "7213.23", + "open": "7215.12", + "timestamp": "1577791680", + "volume": "0.05639822" + }, + { + "close": "7222.41", + "high": "7222.41", + "low": "7215.47", + "open": "7219.42", + "timestamp": "1577791740", + "volume": "2.62502640" + }, + { + "close": "7222.39", + "high": "7222.41", + "low": "7219.42", + "open": "7219.42", + "timestamp": "1577791800", + "volume": "1.52213673" + }, + { + "close": "7225.11", + "high": "7225.11", + "low": "7221.05", + "open": "7222.39", + "timestamp": "1577791860", + "volume": "1.51312494" + }, + { + "close": "7223.05", + "high": "7225.51", + "low": "7221.00", + "open": "7225.11", + "timestamp": "1577791920", + "volume": "3.59164956" + }, + { + "close": "7221.72", + "high": "7221.72", + "low": "7217.55", + "open": "7221.00", + "timestamp": "1577791980", + "volume": "0.13991140" + }, + { + "close": "7218.24", + "high": "7221.72", + "low": "7218.24", + "open": "7221.72", + "timestamp": "1577792040", + "volume": "0.12634457" + }, + { + "close": "7220.27", + "high": "7221.72", + "low": "7220.27", + "open": "7221.72", + "timestamp": "1577792100", + "volume": "0.38095454" + }, + { + "close": "7218.95", + "high": "7220.27", + "low": "7218.92", + "open": "7218.95", + "timestamp": "1577792160", + "volume": "1.38993325" + }, + { + "close": "7216.13", + "high": "7220.27", + "low": "7214.99", + "open": "7220.27", + "timestamp": "1577792220", + "volume": "0.03061001" + }, + { + "close": "7222.91", + "high": "7222.91", + "low": "7216.10", + "open": "7216.10", + "timestamp": "1577792280", + "volume": "2.01157079" + }, + { + "close": "7222.91", + "high": "7222.91", + "low": "7222.91", + "open": "7222.91", + "timestamp": "1577792340", + "volume": "0.22692130" + }, + { + "close": "7228.09", + "high": "7228.12", + "low": "7220.34", + "open": "7222.91", + "timestamp": "1577792400", + "volume": "2.03608133" + }, + { + "close": "7231.85", + "high": "7231.85", + "low": "7225.28", + "open": "7225.28", + "timestamp": "1577792460", + "volume": "8.38081564" + }, + { + "close": "7227.40", + "high": "7231.85", + "low": "7221.26", + "open": "7231.85", + "timestamp": "1577792520", + "volume": "1.61838519" + }, + { + "close": "7225.71", + "high": "7227.40", + "low": "7222.16", + "open": "7227.40", + "timestamp": "1577792580", + "volume": "2.72905471" + }, + { + "close": "7229.36", + "high": "7229.36", + "low": "7224.09", + "open": "7225.71", + "timestamp": "1577792640", + "volume": "0.31833891" + }, + { + "close": "7225.22", + "high": "7229.36", + "low": "7225.22", + "open": "7229.36", + "timestamp": "1577792700", + "volume": "2.16299127" + }, + { + "close": "7225.39", + "high": "7225.39", + "low": "7225.22", + "open": "7225.22", + "timestamp": "1577792760", + "volume": "0.02238992" + }, + { + "close": "7222.76", + "high": "7228.44", + "low": "7222.76", + "open": "7225.39", + "timestamp": "1577792820", + "volume": "0.60019162" + }, + { + "close": "7222.33", + "high": "7222.33", + "low": "7222.33", + "open": "7222.33", + "timestamp": "1577792880", + "volume": "0.02943718" + }, + { + "close": "7222.33", + "high": "7222.33", + "low": "7222.11", + "open": "7222.33", + "timestamp": "1577792940", + "volume": "0.16243764" + }, + { + "close": "7226.24", + "high": "7226.24", + "low": "7226.24", + "open": "7226.24", + "timestamp": "1577793000", + "volume": "0.03142928" + }, + { + "close": "7222.11", + "high": "7222.33", + "low": "7222.11", + "open": "7222.33", + "timestamp": "1577793060", + "volume": "0.65205137" + }, + { + "close": "7221.81", + "high": "7221.81", + "low": "7221.81", + "open": "7221.81", + "timestamp": "1577793120", + "volume": "2.03770609" + }, + { + "close": "7224.57", + "high": "7224.57", + "low": "7218.91", + "open": "7218.91", + "timestamp": "1577793180", + "volume": "0.47185196" + }, + { + "close": "7218.29", + "high": "7221.32", + "low": "7217.61", + "open": "7219.59", + "timestamp": "1577793240", + "volume": "0.06930442" + }, + { + "close": "7221.32", + "high": "7221.32", + "low": "7218.29", + "open": "7218.29", + "timestamp": "1577793300", + "volume": "0.06255105" + }, + { + "close": "7221.32", + "high": "7221.32", + "low": "7218.29", + "open": "7218.29", + "timestamp": "1577793360", + "volume": "0.07539351" + }, + { + "close": "7224.14", + "high": "7224.14", + "low": "7217.63", + "open": "7218.29", + "timestamp": "1577793420", + "volume": "2.14084611" + }, + { + "close": "7219.20", + "high": "7224.14", + "low": "7219.20", + "open": "7224.14", + "timestamp": "1577793480", + "volume": "0.04819326" + }, + { + "close": "7222.62", + "high": "7222.62", + "low": "7217.21", + "open": "7219.20", + "timestamp": "1577793540", + "volume": "0.09344439" + }, + { + "close": "7217.21", + "high": "7217.21", + "low": "7217.21", + "open": "7217.21", + "timestamp": "1577793600", + "volume": "0.08722671" + }, + { + "close": "7217.44", + "high": "7222.62", + "low": "7217.44", + "open": "7217.44", + "timestamp": "1577793660", + "volume": "1.73291032" + }, + { + "close": "7217.21", + "high": "7222.60", + "low": "7217.21", + "open": "7217.44", + "timestamp": "1577793720", + "volume": "0.28060240" + }, + { + "close": "7213.27", + "high": "7213.27", + "low": "7211.60", + "open": "7211.60", + "timestamp": "1577793780", + "volume": "0.77319467" + }, + { + "close": "7207.80", + "high": "7213.27", + "low": "7204.48", + "open": "7213.27", + "timestamp": "1577793840", + "volume": "5.35399818" + }, + { + "close": "7208.42", + "high": "7211.03", + "low": "7204.48", + "open": "7204.48", + "timestamp": "1577793900", + "volume": "4.58222494" + }, + { + "close": "7209.81", + "high": "7211.45", + "low": "7203.64", + "open": "7206.95", + "timestamp": "1577793960", + "volume": "0.49847255" + }, + { + "close": "7209.81", + "high": "7209.81", + "low": "7209.81", + "open": "7209.81", + "timestamp": "1577794020", + "volume": "1.93444627" + }, + { + "close": "7208.45", + "high": "7208.45", + "low": "7208.45", + "open": "7208.45", + "timestamp": "1577794080", + "volume": "0.00725449" + }, + { + "close": "7205.56", + "high": "7205.56", + "low": "7200.10", + "open": "7204.00", + "timestamp": "1577794140", + "volume": "4.70505385" + }, + { + "close": "7204.62", + "high": "7210.74", + "low": "7204.62", + "open": "7205.56", + "timestamp": "1577794200", + "volume": "2.90191821" + }, + { + "close": "7210.57", + "high": "7210.57", + "low": "7204.62", + "open": "7204.62", + "timestamp": "1577794260", + "volume": "0.01355700" + }, + { + "close": "7203.64", + "high": "7203.64", + "low": "7203.64", + "open": "7203.64", + "timestamp": "1577794320", + "volume": "0.79532211" + }, + { + "close": "7202.39", + "high": "7205.89", + "low": "7200.86", + "open": "7200.86", + "timestamp": "1577794380", + "volume": "0.07068766" + }, + { + "close": "7205.89", + "high": "7205.89", + "low": "7204.85", + "open": "7205.89", + "timestamp": "1577794440", + "volume": "2.05296674" + }, + { + "close": "7209.05", + "high": "7209.80", + "low": "7208.00", + "open": "7209.80", + "timestamp": "1577794500", + "volume": "2.19030177" + }, + { + "close": "7206.79", + "high": "7206.79", + "low": "7206.79", + "open": "7206.79", + "timestamp": "1577794560", + "volume": "0.00826686" + }, + { + "close": "7206.79", + "high": "7206.79", + "low": "7202.35", + "open": "7202.35", + "timestamp": "1577794620", + "volume": "0.95846573" + }, + { + "close": "7205.36", + "high": "7206.79", + "low": "7203.99", + "open": "7203.99", + "timestamp": "1577794680", + "volume": "1.21792143" + }, + { + "close": "7205.36", + "high": "7210.61", + "low": "7205.36", + "open": "7205.36", + "timestamp": "1577794740", + "volume": "0.04138486" + }, + { + "close": "7210.61", + "high": "7210.61", + "low": "7208.11", + "open": "7210.61", + "timestamp": "1577794800", + "volume": "0.97225513" + }, + { + "close": "7214.60", + "high": "7214.60", + "low": "7208.11", + "open": "7208.11", + "timestamp": "1577794860", + "volume": "1.81096602" + }, + { + "close": "7210.79", + "high": "7216.16", + "low": "7210.52", + "open": "7214.60", + "timestamp": "1577794920", + "volume": "1.83254429" + }, + { + "close": "7214.26", + "high": "7214.26", + "low": "7208.00", + "open": "7210.52", + "timestamp": "1577794980", + "volume": "2.67686308" + }, + { + "close": "7218.54", + "high": "7218.54", + "low": "7214.26", + "open": "7214.26", + "timestamp": "1577795040", + "volume": "1.95767151" + }, + { + "close": "7218.54", + "high": "7218.54", + "low": "7214.24", + "open": "7218.54", + "timestamp": "1577795100", + "volume": "2.21216837" + }, + { + "close": "7214.34", + "high": "7218.75", + "low": "7214.34", + "open": "7218.75", + "timestamp": "1577795160", + "volume": "0.72608131" + }, + { + "close": "7217.20", + "high": "7218.75", + "low": "7212.40", + "open": "7218.75", + "timestamp": "1577795220", + "volume": "0.57060033" + }, + { + "close": "7212.40", + "high": "7212.40", + "low": "7212.40", + "open": "7212.40", + "timestamp": "1577795280", + "volume": "0.00867964" + }, + { + "close": "7210.76", + "high": "7217.16", + "low": "7210.76", + "open": "7212.64", + "timestamp": "1577795340", + "volume": "0.11850097" + }, + { + "close": "7212.73", + "high": "7212.73", + "low": "7209.59", + "open": "7209.59", + "timestamp": "1577795400", + "volume": "0.01738689" + }, + { + "close": "7210.64", + "high": "7212.73", + "low": "7210.64", + "open": "7212.73", + "timestamp": "1577795460", + "volume": "0.02402118" + }, + { + "close": "7212.74", + "high": "7212.74", + "low": "7211.34", + "open": "7211.34", + "timestamp": "1577795520", + "volume": "0.44028241" + }, + { + "close": "7221.65", + "high": "7221.77", + "low": "7214.54", + "open": "7214.54", + "timestamp": "1577795580", + "volume": "2.85371731" + }, + { + "close": "7221.77", + "high": "7221.77", + "low": "7218.00", + "open": "7220.17", + "timestamp": "1577795640", + "volume": "1.42564109" + }, + { + "close": "7221.77", + "high": "7221.77", + "low": "7219.26", + "open": "7219.26", + "timestamp": "1577795700", + "volume": "0.73589988" + }, + { + "close": "7216.37", + "high": "7220.10", + "low": "7216.37", + "open": "7220.10", + "timestamp": "1577795760", + "volume": "2.99997111" + }, + { + "close": "7219.11", + "high": "7219.11", + "low": "7216.37", + "open": "7216.37", + "timestamp": "1577795820", + "volume": "1.98159899" + }, + { + "close": "7219.11", + "high": "7219.11", + "low": "7219.11", + "open": "7219.11", + "timestamp": "1577795880", + "volume": "0.34532349" + }, + { + "close": "7215.00", + "high": "7219.99", + "low": "7215.00", + "open": "7219.11", + "timestamp": "1577795940", + "volume": "0.89617019" + }, + { + "close": "7215.50", + "high": "7218.82", + "low": "7215.50", + "open": "7215.50", + "timestamp": "1577796000", + "volume": "1.42064140" + }, + { + "close": "7217.38", + "high": "7218.81", + "low": "7215.26", + "open": "7217.38", + "timestamp": "1577796060", + "volume": "2.31799005" + }, + { + "close": "7221.51", + "high": "7221.51", + "low": "7217.38", + "open": "7217.38", + "timestamp": "1577796120", + "volume": "4.23653080" + }, + { + "close": "7224.14", + "high": "7224.14", + "low": "7224.14", + "open": "7224.14", + "timestamp": "1577796180", + "volume": "1.83222936" + }, + { + "close": "7224.14", + "high": "7224.14", + "low": "7224.14", + "open": "7224.14", + "timestamp": "1577796240", + "volume": "0.18253231" + }, + { + "close": "7222.77", + "high": "7226.66", + "low": "7222.77", + "open": "7226.66", + "timestamp": "1577796300", + "volume": "1.94571413" + }, + { + "close": "7225.31", + "high": "7225.31", + "low": "7223.00", + "open": "7223.00", + "timestamp": "1577796360", + "volume": "1.02358499" + }, + { + "close": "7227.85", + "high": "7229.52", + "low": "7223.00", + "open": "7225.31", + "timestamp": "1577796420", + "volume": "0.96317292" + }, + { + "close": "7226.30", + "high": "7226.30", + "low": "7223.00", + "open": "7225.42", + "timestamp": "1577796480", + "volume": "0.97791943" + }, + { + "close": "7223.00", + "high": "7223.00", + "low": "7223.00", + "open": "7223.00", + "timestamp": "1577796540", + "volume": "0.00000000" + }, + { + "close": "7223.00", + "high": "7223.00", + "low": "7223.00", + "open": "7223.00", + "timestamp": "1577796600", + "volume": "0.02394911" + }, + { + "close": "7226.30", + "high": "7226.30", + "low": "7226.30", + "open": "7226.30", + "timestamp": "1577796660", + "volume": "0.56341500" + }, + { + "close": "7223.00", + "high": "7226.30", + "low": "7223.00", + "open": "7226.30", + "timestamp": "1577796720", + "volume": "0.31796294" + }, + { + "close": "7218.84", + "high": "7223.46", + "low": "7218.84", + "open": "7219.75", + "timestamp": "1577796780", + "volume": "0.98405457" + }, + { + "close": "7223.46", + "high": "7223.46", + "low": "7219.06", + "open": "7223.46", + "timestamp": "1577796840", + "volume": "0.19162264" + }, + { + "close": "7218.84", + "high": "7219.06", + "low": "7218.84", + "open": "7219.06", + "timestamp": "1577796900", + "volume": "0.91669052" + }, + { + "close": "7220.41", + "high": "7220.41", + "low": "7220.41", + "open": "7220.41", + "timestamp": "1577796960", + "volume": "2.13817646" + }, + { + "close": "7224.92", + "high": "7226.28", + "low": "7220.41", + "open": "7220.41", + "timestamp": "1577797020", + "volume": "2.81796228" + }, + { + "close": "7224.92", + "high": "7224.92", + "low": "7221.92", + "open": "7224.92", + "timestamp": "1577797080", + "volume": "2.01425201" + }, + { + "close": "7231.04", + "high": "7231.04", + "low": "7226.29", + "open": "7229.01", + "timestamp": "1577797140", + "volume": "3.12686474" + }, + { + "close": "7231.76", + "high": "7231.76", + "low": "7226.29", + "open": "7226.29", + "timestamp": "1577797200", + "volume": "1.46335476" + }, + { + "close": "7222.51", + "high": "7228.08", + "low": "7222.47", + "open": "7227.88", + "timestamp": "1577797260", + "volume": "1.83527543" + }, + { + "close": "7227.79", + "high": "7227.79", + "low": "7224.27", + "open": "7224.27", + "timestamp": "1577797320", + "volume": "0.88678940" + }, + { + "close": "7227.79", + "high": "7227.79", + "low": "7227.79", + "open": "7227.79", + "timestamp": "1577797380", + "volume": "1.27442526" + }, + { + "close": "7232.36", + "high": "7234.55", + "low": "7229.15", + "open": "7231.85", + "timestamp": "1577797440", + "volume": "3.65998169" + }, + { + "close": "7237.10", + "high": "7237.10", + "low": "7229.32", + "open": "7232.36", + "timestamp": "1577797500", + "volume": "3.01366863" + }, + { + "close": "7233.00", + "high": "7237.74", + "low": "7230.01", + "open": "7230.50", + "timestamp": "1577797560", + "volume": "5.74667896" + }, + { + "close": "7233.00", + "high": "7236.62", + "low": "7233.00", + "open": "7236.62", + "timestamp": "1577797620", + "volume": "0.45073637" + }, + { + "close": "7234.33", + "high": "7234.33", + "low": "7234.33", + "open": "7234.33", + "timestamp": "1577797680", + "volume": "0.10762700" + }, + { + "close": "7227.79", + "high": "7234.33", + "low": "7227.79", + "open": "7227.79", + "timestamp": "1577797740", + "volume": "0.07215904" + }, + { + "close": "7232.14", + "high": "7232.14", + "low": "7227.79", + "open": "7232.14", + "timestamp": "1577797800", + "volume": "0.43902698" + }, + { + "close": "7226.22", + "high": "7232.14", + "low": "7226.22", + "open": "7232.14", + "timestamp": "1577797860", + "volume": "0.90026085" + }, + { + "close": "7222.79", + "high": "7227.68", + "low": "7222.79", + "open": "7227.68", + "timestamp": "1577797920", + "volume": "0.11798250" + }, + { + "close": "7227.68", + "high": "7227.68", + "low": "7227.68", + "open": "7227.68", + "timestamp": "1577797980", + "volume": "0.00475907" + }, + { + "close": "7220.79", + "high": "7225.53", + "low": "7220.79", + "open": "7222.79", + "timestamp": "1577798040", + "volume": "0.79065276" + }, + { + "close": "7224.43", + "high": "7224.43", + "low": "7220.79", + "open": "7220.79", + "timestamp": "1577798100", + "volume": "0.23670689" + }, + { + "close": "7221.45", + "high": "7221.45", + "low": "7220.79", + "open": "7220.79", + "timestamp": "1577798160", + "volume": "0.02857585" + }, + { + "close": "7224.42", + "high": "7224.43", + "low": "7220.79", + "open": "7224.43", + "timestamp": "1577798220", + "volume": "4.02075997" + }, + { + "close": "7224.42", + "high": "7224.42", + "low": "7220.79", + "open": "7220.79", + "timestamp": "1577798280", + "volume": "1.77219761" + }, + { + "close": "7223.63", + "high": "7224.42", + "low": "7220.79", + "open": "7224.42", + "timestamp": "1577798340", + "volume": "0.37415759" + }, + { + "close": "7223.63", + "high": "7223.63", + "low": "7220.79", + "open": "7223.63", + "timestamp": "1577798400", + "volume": "0.27193044" + }, + { + "close": "7220.62", + "high": "7220.79", + "low": "7217.79", + "open": "7220.79", + "timestamp": "1577798460", + "volume": "2.06421515" + }, + { + "close": "7217.80", + "high": "7220.62", + "low": "7217.80", + "open": "7220.62", + "timestamp": "1577798520", + "volume": "1.17645332" + }, + { + "close": "7220.62", + "high": "7220.62", + "low": "7217.80", + "open": "7217.80", + "timestamp": "1577798580", + "volume": "0.72204024" + }, + { + "close": "7220.62", + "high": "7223.62", + "low": "7218.46", + "open": "7220.62", + "timestamp": "1577798640", + "volume": "4.23825016" + }, + { + "close": "7219.70", + "high": "7223.62", + "low": "7219.70", + "open": "7220.62", + "timestamp": "1577798700", + "volume": "0.04469398" + }, + { + "close": "7223.35", + "high": "7223.35", + "low": "7218.47", + "open": "7218.47", + "timestamp": "1577798760", + "volume": "0.31950779" + }, + { + "close": "7220.00", + "high": "7223.35", + "low": "7220.00", + "open": "7223.35", + "timestamp": "1577798820", + "volume": "0.02844144" + }, + { + "close": "7221.00", + "high": "7221.00", + "low": "7221.00", + "open": "7221.00", + "timestamp": "1577798880", + "volume": "0.01396108" + }, + { + "close": "7227.86", + "high": "7227.86", + "low": "7223.35", + "open": "7223.35", + "timestamp": "1577798940", + "volume": "0.68349533" + }, + { + "close": "7223.16", + "high": "7228.33", + "low": "7223.16", + "open": "7228.33", + "timestamp": "1577799000", + "volume": "0.21523537" + }, + { + "close": "7226.99", + "high": "7228.33", + "low": "7221.01", + "open": "7223.16", + "timestamp": "1577799060", + "volume": "1.06806456" + }, + { + "close": "7222.40", + "high": "7226.99", + "low": "7222.40", + "open": "7226.99", + "timestamp": "1577799120", + "volume": "0.14438781" + }, + { + "close": "7222.53", + "high": "7222.53", + "low": "7222.53", + "open": "7222.53", + "timestamp": "1577799180", + "volume": "0.00871257" + }, + { + "close": "7223.10", + "high": "7226.99", + "low": "7223.10", + "open": "7224.29", + "timestamp": "1577799240", + "volume": "0.14567591" + }, + { + "close": "7226.99", + "high": "7226.99", + "low": "7223.30", + "open": "7226.98", + "timestamp": "1577799300", + "volume": "0.50728264" + }, + { + "close": "7222.97", + "high": "7222.97", + "low": "7222.97", + "open": "7222.97", + "timestamp": "1577799360", + "volume": "0.01739421" + }, + { + "close": "7226.68", + "high": "7226.68", + "low": "7221.01", + "open": "7226.68", + "timestamp": "1577799420", + "volume": "0.16753659" + }, + { + "close": "7226.98", + "high": "7226.98", + "low": "7226.68", + "open": "7226.68", + "timestamp": "1577799480", + "volume": "1.95914040" + }, + { + "close": "7226.56", + "high": "7226.56", + "low": "7221.02", + "open": "7221.83", + "timestamp": "1577799540", + "volume": "0.06248285" + }, + { + "close": "7226.60", + "high": "7226.60", + "low": "7226.56", + "open": "7226.56", + "timestamp": "1577799600", + "volume": "0.31603530" + }, + { + "close": "7226.59", + "high": "7226.59", + "low": "7221.25", + "open": "7221.62", + "timestamp": "1577799660", + "volume": "0.45342840" + }, + { + "close": "7221.02", + "high": "7226.59", + "low": "7221.02", + "open": "7226.59", + "timestamp": "1577799720", + "volume": "2.15694277" + }, + { + "close": "7221.43", + "high": "7226.58", + "low": "7221.01", + "open": "7221.87", + "timestamp": "1577799780", + "volume": "0.33529082" + }, + { + "close": "7226.58", + "high": "7226.58", + "low": "7226.58", + "open": "7226.58", + "timestamp": "1577799840", + "volume": "2.02168389" + }, + { + "close": "7226.58", + "high": "7226.58", + "low": "7222.61", + "open": "7226.58", + "timestamp": "1577799900", + "volume": "0.14142874" + }, + { + "close": "7227.70", + "high": "7227.70", + "low": "7223.77", + "open": "7223.77", + "timestamp": "1577799960", + "volume": "0.55805987" + }, + { + "close": "7223.38", + "high": "7223.91", + "low": "7222.88", + "open": "7223.91", + "timestamp": "1577800020", + "volume": "0.03678706" + }, + { + "close": "7227.70", + "high": "7227.70", + "low": "7222.78", + "open": "7222.78", + "timestamp": "1577800080", + "volume": "0.09586686" + }, + { + "close": "7222.78", + "high": "7227.70", + "low": "7222.78", + "open": "7227.70", + "timestamp": "1577800140", + "volume": "0.06189135" + }, + { + "close": "7227.70", + "high": "7227.70", + "low": "7227.70", + "open": "7227.70", + "timestamp": "1577800200", + "volume": "0.13487586" + }, + { + "close": "7222.88", + "high": "7227.70", + "low": "7222.88", + "open": "7222.88", + "timestamp": "1577800260", + "volume": "0.12992131" + }, + { + "close": "7222.88", + "high": "7222.88", + "low": "7222.88", + "open": "7222.88", + "timestamp": "1577800320", + "volume": "0.00741317" + }, + { + "close": "7227.70", + "high": "7227.70", + "low": "7221.68", + "open": "7227.70", + "timestamp": "1577800380", + "volume": "0.46840054" + }, + { + "close": "7227.37", + "high": "7227.37", + "low": "7221.68", + "open": "7221.68", + "timestamp": "1577800440", + "volume": "0.23008649" + }, + { + "close": "7222.01", + "high": "7227.70", + "low": "7221.69", + "open": "7227.37", + "timestamp": "1577800500", + "volume": "1.58398857" + }, + { + "close": "7221.01", + "high": "7221.79", + "low": "7221.01", + "open": "7221.79", + "timestamp": "1577800560", + "volume": "0.33440000" + }, + { + "close": "7221.11", + "high": "7221.11", + "low": "7221.01", + "open": "7221.01", + "timestamp": "1577800620", + "volume": "0.11088249" + }, + { + "close": "7220.00", + "high": "7224.71", + "low": "7220.00", + "open": "7224.71", + "timestamp": "1577800680", + "volume": "0.07207310" + }, + { + "close": "7220.00", + "high": "7224.71", + "low": "7220.00", + "open": "7224.71", + "timestamp": "1577800740", + "volume": "0.04806532" + }, + { + "close": "7216.15", + "high": "7223.40", + "low": "7216.15", + "open": "7223.40", + "timestamp": "1577800800", + "volume": "4.98594565" + }, + { + "close": "7215.00", + "high": "7215.00", + "low": "7215.00", + "open": "7215.00", + "timestamp": "1577800860", + "volume": "0.54959879" + }, + { + "close": "7218.04", + "high": "7218.04", + "low": "7215.00", + "open": "7218.04", + "timestamp": "1577800920", + "volume": "1.00114651" + }, + { + "close": "7215.78", + "high": "7216.75", + "low": "7215.78", + "open": "7215.78", + "timestamp": "1577800980", + "volume": "0.04058284" + }, + { + "close": "7219.98", + "high": "7219.98", + "low": "7219.98", + "open": "7219.98", + "timestamp": "1577801040", + "volume": "0.32045141" + }, + { + "close": "7215.00", + "high": "7219.55", + "low": "7215.00", + "open": "7219.55", + "timestamp": "1577801100", + "volume": "0.04758483" + }, + { + "close": "7215.00", + "high": "7218.87", + "low": "7215.00", + "open": "7218.87", + "timestamp": "1577801160", + "volume": "0.30148042" + }, + { + "close": "7212.73", + "high": "7218.86", + "low": "7212.73", + "open": "7218.86", + "timestamp": "1577801220", + "volume": "11.35532861" + }, + { + "close": "7218.45", + "high": "7218.45", + "low": "7212.28", + "open": "7212.28", + "timestamp": "1577801280", + "volume": "5.63384721" + }, + { + "close": "7211.09", + "high": "7215.00", + "low": "7211.09", + "open": "7215.00", + "timestamp": "1577801340", + "volume": "0.12451508" + }, + { + "close": "7211.26", + "high": "7211.26", + "low": "7211.26", + "open": "7211.26", + "timestamp": "1577801400", + "volume": "0.04975653" + }, + { + "close": "7211.27", + "high": "7214.99", + "low": "7211.26", + "open": "7211.26", + "timestamp": "1577801460", + "volume": "0.71662138" + }, + { + "close": "7209.10", + "high": "7214.99", + "low": "7209.10", + "open": "7214.99", + "timestamp": "1577801520", + "volume": "0.15166477" + }, + { + "close": "7208.51", + "high": "7214.98", + "low": "7208.51", + "open": "7210.49", + "timestamp": "1577801580", + "volume": "0.04647428" + }, + { + "close": "7214.98", + "high": "7214.98", + "low": "7209.41", + "open": "7209.50", + "timestamp": "1577801640", + "volume": "4.06637039" + }, + { + "close": "7210.27", + "high": "7214.98", + "low": "7210.27", + "open": "7214.98", + "timestamp": "1577801700", + "volume": "0.03709218" + }, + { + "close": "7218.86", + "high": "7218.86", + "low": "7210.27", + "open": "7210.27", + "timestamp": "1577801760", + "volume": "1.03843640" + }, + { + "close": "7218.86", + "high": "7218.86", + "low": "7214.62", + "open": "7218.86", + "timestamp": "1577801820", + "volume": "2.93936201" + }, + { + "close": "7218.86", + "high": "7218.86", + "low": "7214.62", + "open": "7218.86", + "timestamp": "1577801880", + "volume": "0.11634904" + }, + { + "close": "7222.22", + "high": "7222.22", + "low": "7215.42", + "open": "7215.42", + "timestamp": "1577801940", + "volume": "2.14365862" + }, + { + "close": "7225.20", + "high": "7226.94", + "low": "7222.22", + "open": "7222.22", + "timestamp": "1577802000", + "volume": "2.85147992" + }, + { + "close": "7226.04", + "high": "7226.04", + "low": "7220.23", + "open": "7225.20", + "timestamp": "1577802060", + "volume": "0.20446648" + }, + { + "close": "7226.04", + "high": "7226.04", + "low": "7220.78", + "open": "7220.78", + "timestamp": "1577802120", + "volume": "1.39976456" + }, + { + "close": "7225.10", + "high": "7226.04", + "low": "7225.10", + "open": "7226.04", + "timestamp": "1577802180", + "volume": "0.69961644" + }, + { + "close": "7226.04", + "high": "7226.04", + "low": "7226.00", + "open": "7226.04", + "timestamp": "1577802240", + "volume": "2.23138371" + }, + { + "close": "7228.75", + "high": "7228.75", + "low": "7225.10", + "open": "7225.10", + "timestamp": "1577802300", + "volume": "0.14444754" + }, + { + "close": "7227.70", + "high": "7228.75", + "low": "7225.10", + "open": "7225.10", + "timestamp": "1577802360", + "volume": "0.05852184" + }, + { + "close": "7225.05", + "high": "7227.70", + "low": "7225.00", + "open": "7225.00", + "timestamp": "1577802420", + "volume": "0.02811066" + }, + { + "close": "7230.43", + "high": "7230.43", + "low": "7225.00", + "open": "7226.35", + "timestamp": "1577802480", + "volume": "0.79340646" + }, + { + "close": "7230.08", + "high": "7230.43", + "low": "7225.00", + "open": "7225.00", + "timestamp": "1577802540", + "volume": "0.43112129" + }, + { + "close": "7234.80", + "high": "7234.80", + "low": "7225.72", + "open": "7225.72", + "timestamp": "1577802600", + "volume": "2.97127475" + }, + { + "close": "7234.00", + "high": "7237.26", + "low": "7229.61", + "open": "7234.81", + "timestamp": "1577802660", + "volume": "9.65708660" + }, + { + "close": "7236.55", + "high": "7236.55", + "low": "7236.55", + "open": "7236.55", + "timestamp": "1577802720", + "volume": "0.00950514" + }, + { + "close": "7236.55", + "high": "7237.26", + "low": "7234.00", + "open": "7236.55", + "timestamp": "1577802780", + "volume": "0.26221229" + }, + { + "close": "7243.00", + "high": "7243.00", + "low": "7236.55", + "open": "7236.55", + "timestamp": "1577802840", + "volume": "2.19334567" + }, + { + "close": "7252.65", + "high": "7253.26", + "low": "7238.56", + "open": "7243.00", + "timestamp": "1577802900", + "volume": "26.33311364" + }, + { + "close": "7247.17", + "high": "7250.45", + "low": "7242.70", + "open": "7250.45", + "timestamp": "1577802960", + "volume": "0.88655881" + }, + { + "close": "7255.45", + "high": "7258.39", + "low": "7248.51", + "open": "7249.43", + "timestamp": "1577803020", + "volume": "7.66075192" + }, + { + "close": "7250.80", + "high": "7258.47", + "low": "7249.14", + "open": "7255.48", + "timestamp": "1577803080", + "volume": "2.26614460" + }, + { + "close": "7255.53", + "high": "7256.24", + "low": "7250.59", + "open": "7250.80", + "timestamp": "1577803140", + "volume": "1.10454338" + }, + { + "close": "7254.24", + "high": "7254.24", + "low": "7246.71", + "open": "7246.72", + "timestamp": "1577803200", + "volume": "4.05878517" + }, + { + "close": "7255.00", + "high": "7255.60", + "low": "7249.26", + "open": "7255.60", + "timestamp": "1577803260", + "volume": "4.54735015" + }, + { + "close": "7274.33", + "high": "7278.01", + "low": "7258.47", + "open": "7258.47", + "timestamp": "1577803320", + "volume": "37.12064297" + }, + { + "close": "7273.69", + "high": "7273.69", + "low": "7268.11", + "open": "7272.84", + "timestamp": "1577803380", + "volume": "1.80840486" + }, + { + "close": "7270.01", + "high": "7280.00", + "low": "7268.05", + "open": "7277.51", + "timestamp": "1577803440", + "volume": "2.53626024" + }, + { + "close": "7288.88", + "high": "7288.88", + "low": "7266.26", + "open": "7266.98", + "timestamp": "1577803500", + "volume": "19.41571020" + }, + { + "close": "7289.72", + "high": "7292.00", + "low": "7281.25", + "open": "7287.87", + "timestamp": "1577803560", + "volume": "3.92626089" + }, + { + "close": "7296.00", + "high": "7302.35", + "low": "7289.19", + "open": "7289.19", + "timestamp": "1577803620", + "volume": "12.17005248" + }, + { + "close": "7292.20", + "high": "7299.01", + "low": "7284.07", + "open": "7297.07", + "timestamp": "1577803680", + "volume": "6.97094716" + }, + { + "close": "7294.38", + "high": "7298.44", + "low": "7290.66", + "open": "7292.20", + "timestamp": "1577803740", + "volume": "1.33580434" + }, + { + "close": "7276.16", + "high": "7291.38", + "low": "7276.16", + "open": "7291.38", + "timestamp": "1577803800", + "volume": "1.80259316" + }, + { + "close": "7262.91", + "high": "7270.91", + "low": "7262.91", + "open": "7267.21", + "timestamp": "1577803860", + "volume": "1.86856271" + }, + { + "close": "7271.46", + "high": "7276.66", + "low": "7266.52", + "open": "7266.79", + "timestamp": "1577803920", + "volume": "6.45491325" + }, + { + "close": "7268.62", + "high": "7275.33", + "low": "7264.94", + "open": "7271.46", + "timestamp": "1577803980", + "volume": "1.77321077" + }, + { + "close": "7269.10", + "high": "7271.33", + "low": "7266.00", + "open": "7271.33", + "timestamp": "1577804040", + "volume": "0.15104500" + }, + { + "close": "7255.10", + "high": "7269.69", + "low": "7255.10", + "open": "7269.10", + "timestamp": "1577804100", + "volume": "1.63561753" + }, + { + "close": "7246.55", + "high": "7256.36", + "low": "7237.90", + "open": "7254.73", + "timestamp": "1577804160", + "volume": "4.83907286" + }, + { + "close": "7241.26", + "high": "7247.95", + "low": "7238.06", + "open": "7243.31", + "timestamp": "1577804220", + "volume": "2.06996494" + }, + { + "close": "7227.58", + "high": "7241.26", + "low": "7220.00", + "open": "7241.26", + "timestamp": "1577804280", + "volume": "5.66166661" + }, + { + "close": "7215.38", + "high": "7223.71", + "low": "7207.51", + "open": "7222.15", + "timestamp": "1577804340", + "volume": "16.19921863" + }, + { + "close": "7197.68", + "high": "7215.93", + "low": "7197.68", + "open": "7215.93", + "timestamp": "1577804400", + "volume": "11.61551906" + }, + { + "close": "7180.38", + "high": "7204.83", + "low": "7165.00", + "open": "7197.39", + "timestamp": "1577804460", + "volume": "53.76854024" + }, + { + "close": "7201.64", + "high": "7201.64", + "low": "7172.08", + "open": "7179.83", + "timestamp": "1577804520", + "volume": "11.07143088" + }, + { + "close": "7205.41", + "high": "7238.12", + "low": "7205.41", + "open": "7209.43", + "timestamp": "1577804580", + "volume": "44.59889607" + }, + { + "close": "7195.72", + "high": "7213.97", + "low": "7189.54", + "open": "7208.91", + "timestamp": "1577804640", + "volume": "8.30676936" + }, + { + "close": "7200.92", + "high": "7200.92", + "low": "7180.57", + "open": "7192.62", + "timestamp": "1577804700", + "volume": "7.61605842" + }, + { + "close": "7191.82", + "high": "7198.34", + "low": "7184.72", + "open": "7198.34", + "timestamp": "1577804760", + "volume": "11.41647570" + }, + { + "close": "7200.18", + "high": "7200.81", + "low": "7181.77", + "open": "7192.80", + "timestamp": "1577804820", + "volume": "1.87018392" + }, + { + "close": "7197.66", + "high": "7203.09", + "low": "7191.39", + "open": "7197.90", + "timestamp": "1577804880", + "volume": "2.05839166" + }, + { + "close": "7200.50", + "high": "7205.73", + "low": "7196.24", + "open": "7202.03", + "timestamp": "1577804940", + "volume": "3.33209819" + }, + { + "close": "7189.69", + "high": "7200.50", + "low": "7186.08", + "open": "7200.50", + "timestamp": "1577805000", + "volume": "14.09591435" + }, + { + "close": "7183.64", + "high": "7195.69", + "low": "7183.64", + "open": "7191.31", + "timestamp": "1577805060", + "volume": "2.96989484" + }, + { + "close": "7191.94", + "high": "7193.48", + "low": "7184.67", + "open": "7185.95", + "timestamp": "1577805120", + "volume": "0.81516639" + }, + { + "close": "7192.81", + "high": "7198.61", + "low": "7186.98", + "open": "7197.99", + "timestamp": "1577805180", + "volume": "2.06700888" + }, + { + "close": "7192.20", + "high": "7192.81", + "low": "7181.89", + "open": "7192.81", + "timestamp": "1577805240", + "volume": "1.26847093" + }, + { + "close": "7186.64", + "high": "7199.13", + "low": "7185.86", + "open": "7194.17", + "timestamp": "1577805300", + "volume": "6.61419658" + }, + { + "close": "7183.13", + "high": "7186.63", + "low": "7175.60", + "open": "7186.63", + "timestamp": "1577805360", + "volume": "9.10044593" + }, + { + "close": "7188.49", + "high": "7192.33", + "low": "7174.88", + "open": "7174.88", + "timestamp": "1577805420", + "volume": "3.58863957" + }, + { + "close": "7178.00", + "high": "7189.12", + "low": "7176.41", + "open": "7189.12", + "timestamp": "1577805480", + "volume": "6.03810721" + }, + { + "close": "7175.24", + "high": "7187.35", + "low": "7175.24", + "open": "7182.11", + "timestamp": "1577805540", + "volume": "2.91770539" + }, + { + "close": "7177.94", + "high": "7180.87", + "low": "7169.83", + "open": "7180.87", + "timestamp": "1577805600", + "volume": "8.08383517" + }, + { + "close": "7188.32", + "high": "7188.32", + "low": "7174.71", + "open": "7174.71", + "timestamp": "1577805660", + "volume": "0.82937342" + }, + { + "close": "7190.35", + "high": "7197.27", + "low": "7187.26", + "open": "7187.26", + "timestamp": "1577805720", + "volume": "0.90276724" + }, + { + "close": "7194.32", + "high": "7197.27", + "low": "7188.90", + "open": "7197.18", + "timestamp": "1577805780", + "volume": "1.38118813" + }, + { + "close": "7190.06", + "high": "7194.32", + "low": "7186.66", + "open": "7194.32", + "timestamp": "1577805840", + "volume": "2.90071856" + }, + { + "close": "7189.66", + "high": "7192.83", + "low": "7180.55", + "open": "7192.83", + "timestamp": "1577805900", + "volume": "10.06994216" + }, + { + "close": "7189.53", + "high": "7193.28", + "low": "7187.86", + "open": "7187.86", + "timestamp": "1577805960", + "volume": "1.75158126" + }, + { + "close": "7188.83", + "high": "7194.88", + "low": "7188.83", + "open": "7194.88", + "timestamp": "1577806020", + "volume": "0.54922905" + }, + { + "close": "7192.00", + "high": "7196.37", + "low": "7191.17", + "open": "7196.37", + "timestamp": "1577806080", + "volume": "0.17266366" + }, + { + "close": "7192.55", + "high": "7192.55", + "low": "7185.70", + "open": "7190.40", + "timestamp": "1577806140", + "volume": "0.63464860" + }, + { + "close": "7186.92", + "high": "7191.51", + "low": "7186.92", + "open": "7191.51", + "timestamp": "1577806200", + "volume": "0.71789926" + }, + { + "close": "7197.93", + "high": "7197.93", + "low": "7189.11", + "open": "7189.11", + "timestamp": "1577806260", + "volume": "2.81195369" + }, + { + "close": "7198.09", + "high": "7198.09", + "low": "7192.73", + "open": "7197.92", + "timestamp": "1577806320", + "volume": "1.67616643" + }, + { + "close": "7203.01", + "high": "7203.01", + "low": "7195.88", + "open": "7198.09", + "timestamp": "1577806380", + "volume": "6.62770461" + }, + { + "close": "7196.33", + "high": "7202.59", + "low": "7196.33", + "open": "7202.59", + "timestamp": "1577806440", + "volume": "1.42264552" + }, + { + "close": "7192.73", + "high": "7200.68", + "low": "7192.73", + "open": "7200.68", + "timestamp": "1577806500", + "volume": "7.58594287" + }, + { + "close": "7183.45", + "high": "7192.38", + "low": "7183.45", + "open": "7192.38", + "timestamp": "1577806560", + "volume": "3.60559737" + }, + { + "close": "7184.64", + "high": "7186.03", + "low": "7180.60", + "open": "7186.03", + "timestamp": "1577806620", + "volume": "3.63622229" + }, + { + "close": "7184.08", + "high": "7184.08", + "low": "7181.01", + "open": "7184.08", + "timestamp": "1577806680", + "volume": "0.26354347" + }, + { + "close": "7190.21", + "high": "7190.21", + "low": "7183.55", + "open": "7186.80", + "timestamp": "1577806740", + "volume": "0.94499246" + }, + { + "close": "7190.31", + "high": "7191.95", + "low": "7184.08", + "open": "7189.84", + "timestamp": "1577806800", + "volume": "0.58230964" + }, + { + "close": "7179.36", + "high": "7188.98", + "low": "7178.86", + "open": "7187.56", + "timestamp": "1577806860", + "volume": "8.72499759" + }, + { + "close": "7179.18", + "high": "7187.61", + "low": "7179.18", + "open": "7180.71", + "timestamp": "1577806920", + "volume": "7.68251780" + }, + { + "close": "7179.48", + "high": "7185.01", + "low": "7178.95", + "open": "7178.95", + "timestamp": "1577806980", + "volume": "34.15020432" + }, + { + "close": "7184.59", + "high": "7186.38", + "low": "7178.47", + "open": "7178.47", + "timestamp": "1577807040", + "volume": "29.83799369" + }, + { + "close": "7186.98", + "high": "7186.98", + "low": "7179.50", + "open": "7179.50", + "timestamp": "1577807100", + "volume": "0.11231890" + }, + { + "close": "7184.91", + "high": "7185.32", + "low": "7177.10", + "open": "7177.16", + "timestamp": "1577807160", + "volume": "0.72031583" + }, + { + "close": "7171.71", + "high": "7179.05", + "low": "7171.71", + "open": "7176.63", + "timestamp": "1577807220", + "volume": "6.27241282" + }, + { + "close": "7176.10", + "high": "7179.02", + "low": "7169.86", + "open": "7179.02", + "timestamp": "1577807280", + "volume": "2.14578290" + }, + { + "close": "7175.61", + "high": "7175.61", + "low": "7164.00", + "open": "7169.86", + "timestamp": "1577807340", + "volume": "32.08389386" + }, + { + "close": "7179.95", + "high": "7179.95", + "low": "7175.61", + "open": "7175.61", + "timestamp": "1577807400", + "volume": "0.68779634" + }, + { + "close": "7169.13", + "high": "7179.64", + "low": "7169.13", + "open": "7179.00", + "timestamp": "1577807460", + "volume": "4.43401132" + }, + { + "close": "7170.00", + "high": "7173.02", + "low": "7165.80", + "open": "7168.79", + "timestamp": "1577807520", + "volume": "5.94922052" + }, + { + "close": "7171.57", + "high": "7176.70", + "low": "7169.99", + "open": "7170.00", + "timestamp": "1577807580", + "volume": "13.04238612" + }, + { + "close": "7167.96", + "high": "7174.90", + "low": "7167.96", + "open": "7171.57", + "timestamp": "1577807640", + "volume": "1.79456751" + }, + { + "close": "7171.07", + "high": "7171.52", + "low": "7164.50", + "open": "7171.52", + "timestamp": "1577807700", + "volume": "0.34474751" + }, + { + "close": "7169.75", + "high": "7173.66", + "low": "7167.32", + "open": "7173.12", + "timestamp": "1577807760", + "volume": "16.96926361" + }, + { + "close": "7175.29", + "high": "7175.42", + "low": "7170.08", + "open": "7174.90", + "timestamp": "1577807820", + "volume": "0.96588361" + }, + { + "close": "7173.91", + "high": "7174.52", + "low": "7167.32", + "open": "7170.08", + "timestamp": "1577807880", + "volume": "4.36218410" + }, + { + "close": "7169.80", + "high": "7173.80", + "low": "7169.80", + "open": "7172.52", + "timestamp": "1577807940", + "volume": "0.13550711" + }, + { + "close": "7170.83", + "high": "7170.83", + "low": "7161.10", + "open": "7169.80", + "timestamp": "1577808000", + "volume": "24.07223671" + }, + { + "close": "7192.07", + "high": "7192.07", + "low": "7179.91", + "open": "7179.91", + "timestamp": "1577808060", + "volume": "3.67510092" + }, + { + "close": "7194.01", + "high": "7195.70", + "low": "7190.23", + "open": "7190.23", + "timestamp": "1577808120", + "volume": "5.87990919" + }, + { + "close": "7196.17", + "high": "7196.17", + "low": "7185.32", + "open": "7193.04", + "timestamp": "1577808180", + "volume": "0.28690688" + }, + { + "close": "7193.34", + "high": "7194.67", + "low": "7188.66", + "open": "7188.66", + "timestamp": "1577808240", + "volume": "0.07992502" + }, + { + "close": "7193.53", + "high": "7193.53", + "low": "7188.49", + "open": "7188.49", + "timestamp": "1577808300", + "volume": "0.72295110" + }, + { + "close": "7189.19", + "high": "7198.54", + "low": "7188.66", + "open": "7198.54", + "timestamp": "1577808360", + "volume": "0.11374751" + }, + { + "close": "7192.75", + "high": "7192.75", + "low": "7192.75", + "open": "7192.75", + "timestamp": "1577808420", + "volume": "0.13258900" + }, + { + "close": "7190.06", + "high": "7192.55", + "low": "7182.56", + "open": "7187.23", + "timestamp": "1577808480", + "volume": "0.78430043" + }, + { + "close": "7192.61", + "high": "7192.61", + "low": "7186.28", + "open": "7191.43", + "timestamp": "1577808540", + "volume": "0.83729096" + }, + { + "close": "7182.38", + "high": "7195.04", + "low": "7178.43", + "open": "7195.04", + "timestamp": "1577808600", + "volume": "12.82186943" + }, + { + "close": "7186.07", + "high": "7186.07", + "low": "7180.52", + "open": "7182.24", + "timestamp": "1577808660", + "volume": "0.67519296" + }, + { + "close": "7182.04", + "high": "7187.97", + "low": "7177.58", + "open": "7181.10", + "timestamp": "1577808720", + "volume": "3.27706546" + }, + { + "close": "7184.07", + "high": "7188.19", + "low": "7183.14", + "open": "7187.92", + "timestamp": "1577808780", + "volume": "2.40147553" + }, + { + "close": "7182.74", + "high": "7182.74", + "low": "7177.47", + "open": "7177.47", + "timestamp": "1577808840", + "volume": "0.57237255" + }, + { + "close": "7180.28", + "high": "7184.63", + "low": "7176.00", + "open": "7176.00", + "timestamp": "1577808900", + "volume": "1.42772978" + }, + { + "close": "7170.00", + "high": "7185.73", + "low": "7170.00", + "open": "7182.64", + "timestamp": "1577808960", + "volume": "150.22298854" + }, + { + "close": "7178.19", + "high": "7182.40", + "low": "7177.03", + "open": "7178.67", + "timestamp": "1577809020", + "volume": "0.81292577" + }, + { + "close": "7172.23", + "high": "7178.19", + "low": "7172.23", + "open": "7175.10", + "timestamp": "1577809080", + "volume": "2.86221144" + }, + { + "close": "7191.64", + "high": "7198.56", + "low": "7177.52", + "open": "7177.52", + "timestamp": "1577809140", + "volume": "16.24185556" + }, + { + "close": "7189.80", + "high": "7195.25", + "low": "7189.71", + "open": "7193.27", + "timestamp": "1577809200", + "volume": "3.02208483" + }, + { + "close": "7192.70", + "high": "7197.40", + "low": "7189.63", + "open": "7189.63", + "timestamp": "1577809260", + "volume": "3.07205491" + }, + { + "close": "7183.62", + "high": "7194.12", + "low": "7183.62", + "open": "7191.96", + "timestamp": "1577809320", + "volume": "2.78957102" + }, + { + "close": "7194.16", + "high": "7194.16", + "low": "7193.85", + "open": "7193.85", + "timestamp": "1577809380", + "volume": "0.02128674" + }, + { + "close": "7189.82", + "high": "7189.82", + "low": "7189.71", + "open": "7189.71", + "timestamp": "1577809440", + "volume": "0.02377345" + }, + { + "close": "7188.35", + "high": "7193.54", + "low": "7187.35", + "open": "7187.35", + "timestamp": "1577809500", + "volume": "0.04224769" + }, + { + "close": "7191.14", + "high": "7191.14", + "low": "7191.14", + "open": "7191.14", + "timestamp": "1577809560", + "volume": "0.00721357" + }, + { + "close": "7186.08", + "high": "7191.14", + "low": "7186.08", + "open": "7191.14", + "timestamp": "1577809620", + "volume": "2.00068064" + }, + { + "close": "7186.76", + "high": "7192.46", + "low": "7186.76", + "open": "7192.46", + "timestamp": "1577809680", + "volume": "0.06975144" + }, + { + "close": "7197.40", + "high": "7197.40", + "low": "7189.66", + "open": "7191.01", + "timestamp": "1577809740", + "volume": "0.56906075" + }, + { + "close": "7195.05", + "high": "7195.05", + "low": "7189.38", + "open": "7189.38", + "timestamp": "1577809800", + "volume": "0.23120318" + }, + { + "close": "7193.17", + "high": "7193.17", + "low": "7193.07", + "open": "7193.07", + "timestamp": "1577809860", + "volume": "0.01607984" + }, + { + "close": "7190.00", + "high": "7198.42", + "low": "7188.31", + "open": "7195.01", + "timestamp": "1577809920", + "volume": "5.56094365" + }, + { + "close": "7194.54", + "high": "7194.54", + "low": "7194.54", + "open": "7194.54", + "timestamp": "1577809980", + "volume": "0.01172648" + }, + { + "close": "7190.27", + "high": "7198.52", + "low": "7190.27", + "open": "7193.37", + "timestamp": "1577810040", + "volume": "2.34892577" + }, + { + "close": "7199.83", + "high": "7199.83", + "low": "7191.63", + "open": "7195.99", + "timestamp": "1577810100", + "volume": "0.51295299" + }, + { + "close": "7190.00", + "high": "7197.58", + "low": "7190.00", + "open": "7190.25", + "timestamp": "1577810160", + "volume": "10.06213496" + }, + { + "close": "7197.43", + "high": "7197.43", + "low": "7185.00", + "open": "7185.00", + "timestamp": "1577810220", + "volume": "0.08863268" + }, + { + "close": "7190.01", + "high": "7197.80", + "low": "7190.01", + "open": "7195.84", + "timestamp": "1577810280", + "volume": "0.10836085" + }, + { + "close": "7190.00", + "high": "7195.50", + "low": "7190.00", + "open": "7191.00", + "timestamp": "1577810340", + "volume": "6.02045599" + }, + { + "close": "7191.78", + "high": "7196.28", + "low": "7185.46", + "open": "7187.04", + "timestamp": "1577810400", + "volume": "4.69314446" + }, + { + "close": "7192.08", + "high": "7192.08", + "low": "7186.98", + "open": "7187.26", + "timestamp": "1577810460", + "volume": "0.17219079" + }, + { + "close": "7189.95", + "high": "7189.95", + "low": "7189.95", + "open": "7189.95", + "timestamp": "1577810520", + "volume": "0.00000000" + }, + { + "close": "7189.95", + "high": "7189.95", + "low": "7189.17", + "open": "7189.17", + "timestamp": "1577810580", + "volume": "0.01740519" + }, + { + "close": "7193.83", + "high": "7193.83", + "low": "7192.82", + "open": "7192.82", + "timestamp": "1577810640", + "volume": "0.09998089" + }, + { + "close": "7186.02", + "high": "7191.17", + "low": "7185.00", + "open": "7191.17", + "timestamp": "1577810700", + "volume": "0.11379758" + }, + { + "close": "7194.09", + "high": "7194.09", + "low": "7186.02", + "open": "7186.02", + "timestamp": "1577810760", + "volume": "0.38985740" + }, + { + "close": "7188.20", + "high": "7188.20", + "low": "7188.20", + "open": "7188.20", + "timestamp": "1577810820", + "volume": "0.00780440" + }, + { + "close": "7190.00", + "high": "7194.73", + "low": "7189.36", + "open": "7189.36", + "timestamp": "1577810880", + "volume": "18.94853448" + }, + { + "close": "7195.00", + "high": "7195.00", + "low": "7190.46", + "open": "7190.46", + "timestamp": "1577810940", + "volume": "0.04096888" + }, + { + "close": "7188.13", + "high": "7191.78", + "low": "7186.00", + "open": "7191.74", + "timestamp": "1577811000", + "volume": "0.10850437" + }, + { + "close": "7188.57", + "high": "7192.35", + "low": "7186.92", + "open": "7186.92", + "timestamp": "1577811060", + "volume": "0.04176640" + }, + { + "close": "7189.52", + "high": "7192.35", + "low": "7189.52", + "open": "7192.00", + "timestamp": "1577811120", + "volume": "0.28055134" + }, + { + "close": "7190.11", + "high": "7195.00", + "low": "7190.10", + "open": "7190.10", + "timestamp": "1577811180", + "volume": "0.53725192" + }, + { + "close": "7191.00", + "high": "7194.91", + "low": "7190.10", + "open": "7190.10", + "timestamp": "1577811240", + "volume": "2.54997691" + }, + { + "close": "7196.43", + "high": "7196.49", + "low": "7191.00", + "open": "7191.00", + "timestamp": "1577811300", + "volume": "1.96002793" + }, + { + "close": "7192.57", + "high": "7196.43", + "low": "7188.48", + "open": "7191.47", + "timestamp": "1577811360", + "volume": "2.40691532" + }, + { + "close": "7188.36", + "high": "7192.56", + "low": "7188.36", + "open": "7189.85", + "timestamp": "1577811420", + "volume": "1.05440449" + }, + { + "close": "7192.55", + "high": "7192.55", + "low": "7186.00", + "open": "7188.36", + "timestamp": "1577811480", + "volume": "0.92274623" + }, + { + "close": "7190.72", + "high": "7192.55", + "low": "7187.18", + "open": "7192.55", + "timestamp": "1577811540", + "volume": "0.21752344" + }, + { + "close": "7185.05", + "high": "7190.72", + "low": "7185.05", + "open": "7190.72", + "timestamp": "1577811600", + "volume": "9.81157480" + }, + { + "close": "7181.00", + "high": "7186.74", + "low": "7181.00", + "open": "7183.17", + "timestamp": "1577811660", + "volume": "0.17681757" + }, + { + "close": "7181.00", + "high": "7185.00", + "low": "7181.00", + "open": "7181.00", + "timestamp": "1577811720", + "volume": "0.44834376" + }, + { + "close": "7184.75", + "high": "7185.00", + "low": "7184.75", + "open": "7185.00", + "timestamp": "1577811780", + "volume": "0.08030776" + }, + { + "close": "7184.60", + "high": "7184.60", + "low": "7181.00", + "open": "7181.00", + "timestamp": "1577811840", + "volume": "0.04963928" + }, + { + "close": "7181.00", + "high": "7181.00", + "low": "7181.00", + "open": "7181.00", + "timestamp": "1577811900", + "volume": "0.00000000" + }, + { + "close": "7181.00", + "high": "7181.92", + "low": "7181.00", + "open": "7181.00", + "timestamp": "1577811960", + "volume": "0.08053734" + }, + { + "close": "7182.89", + "high": "7182.89", + "low": "7181.00", + "open": "7181.00", + "timestamp": "1577812020", + "volume": "0.07541546" + }, + { + "close": "7184.77", + "high": "7186.73", + "low": "7181.10", + "open": "7186.73", + "timestamp": "1577812080", + "volume": "0.04935683" + }, + { + "close": "7187.75", + "high": "7187.75", + "low": "7181.10", + "open": "7184.77", + "timestamp": "1577812140", + "volume": "0.06665821" + }, + { + "close": "7182.62", + "high": "7187.96", + "low": "7181.86", + "open": "7187.96", + "timestamp": "1577812200", + "volume": "0.98994134" + }, + { + "close": "7187.07", + "high": "7188.11", + "low": "7181.01", + "open": "7188.11", + "timestamp": "1577812260", + "volume": "0.37337591" + }, + { + "close": "7184.02", + "high": "7187.98", + "low": "7184.02", + "open": "7187.07", + "timestamp": "1577812320", + "volume": "0.03130590" + }, + { + "close": "7186.88", + "high": "7189.54", + "low": "7184.12", + "open": "7184.12", + "timestamp": "1577812380", + "volume": "0.25535196" + }, + { + "close": "7186.87", + "high": "7186.87", + "low": "7181.91", + "open": "7181.91", + "timestamp": "1577812440", + "volume": "0.61828083" + }, + { + "close": "7181.69", + "high": "7185.87", + "low": "7181.00", + "open": "7185.87", + "timestamp": "1577812500", + "volume": "9.23250444" + }, + { + "close": "7176.76", + "high": "7184.63", + "low": "7176.17", + "open": "7176.17", + "timestamp": "1577812560", + "volume": "0.47765590" + }, + { + "close": "7179.69", + "high": "7183.07", + "low": "7176.93", + "open": "7176.93", + "timestamp": "1577812620", + "volume": "0.07910671" + }, + { + "close": "7184.57", + "high": "7185.09", + "low": "7178.93", + "open": "7185.09", + "timestamp": "1577812680", + "volume": "0.05937026" + }, + { + "close": "7180.11", + "high": "7186.87", + "low": "7179.37", + "open": "7179.37", + "timestamp": "1577812740", + "volume": "0.78139222" + }, + { + "close": "7183.66", + "high": "7185.58", + "low": "7180.50", + "open": "7180.50", + "timestamp": "1577812800", + "volume": "0.18658219" + }, + { + "close": "7181.00", + "high": "7187.60", + "low": "7181.00", + "open": "7187.60", + "timestamp": "1577812860", + "volume": "0.09746942" + }, + { + "close": "7181.00", + "high": "7184.75", + "low": "7181.00", + "open": "7181.00", + "timestamp": "1577812920", + "volume": "0.20474971" + }, + { + "close": "7179.15", + "high": "7185.55", + "low": "7179.15", + "open": "7185.55", + "timestamp": "1577812980", + "volume": "0.90063228" + }, + { + "close": "7176.27", + "high": "7183.75", + "low": "7176.27", + "open": "7183.75", + "timestamp": "1577813040", + "volume": "1.78823966" + }, + { + "close": "7177.02", + "high": "7182.16", + "low": "7175.26", + "open": "7182.16", + "timestamp": "1577813100", + "volume": "0.37676930" + }, + { + "close": "7179.03", + "high": "7179.03", + "low": "7175.00", + "open": "7177.01", + "timestamp": "1577813160", + "volume": "0.06497446" + }, + { + "close": "7175.00", + "high": "7175.00", + "low": "7175.00", + "open": "7175.00", + "timestamp": "1577813220", + "volume": "0.01398194" + }, + { + "close": "7175.91", + "high": "7175.91", + "low": "7175.91", + "open": "7175.91", + "timestamp": "1577813280", + "volume": "0.00742016" + }, + { + "close": "7175.10", + "high": "7176.33", + "low": "7175.10", + "open": "7176.33", + "timestamp": "1577813340", + "volume": "0.03766496" + }, + { + "close": "7176.18", + "high": "7181.03", + "low": "7176.18", + "open": "7181.03", + "timestamp": "1577813400", + "volume": "0.11489009" + }, + { + "close": "7175.10", + "high": "7180.48", + "low": "7175.10", + "open": "7176.28", + "timestamp": "1577813460", + "volume": "0.12150463" + }, + { + "close": "7175.06", + "high": "7180.48", + "low": "7174.23", + "open": "7180.48", + "timestamp": "1577813520", + "volume": "14.69971668" + }, + { + "close": "7169.53", + "high": "7178.31", + "low": "7169.53", + "open": "7174.09", + "timestamp": "1577813580", + "volume": "2.51998415" + }, + { + "close": "7169.01", + "high": "7169.01", + "low": "7165.00", + "open": "7167.08", + "timestamp": "1577813640", + "volume": "0.91297520" + }, + { + "close": "7172.50", + "high": "7172.50", + "low": "7165.96", + "open": "7169.09", + "timestamp": "1577813700", + "volume": "0.12640487" + }, + { + "close": "7162.65", + "high": "7166.40", + "low": "7162.65", + "open": "7165.22", + "timestamp": "1577813760", + "volume": "4.10833731" + }, + { + "close": "7163.02", + "high": "7168.52", + "low": "7160.00", + "open": "7168.52", + "timestamp": "1577813820", + "volume": "6.40801407" + }, + { + "close": "7157.82", + "high": "7167.75", + "low": "7157.82", + "open": "7161.33", + "timestamp": "1577813880", + "volume": "14.88488408" + }, + { + "close": "7153.08", + "high": "7159.97", + "low": "7136.21", + "open": "7158.68", + "timestamp": "1577813940", + "volume": "58.86074113" + }, + { + "close": "7152.86", + "high": "7156.73", + "low": "7146.78", + "open": "7156.73", + "timestamp": "1577814000", + "volume": "7.75114918" + }, + { + "close": "7148.61", + "high": "7157.00", + "low": "7146.19", + "open": "7153.89", + "timestamp": "1577814060", + "volume": "8.88083534" + }, + { + "close": "7150.61", + "high": "7151.26", + "low": "7146.19", + "open": "7150.40", + "timestamp": "1577814120", + "volume": "11.20998051" + }, + { + "close": "7149.00", + "high": "7149.00", + "low": "7146.19", + "open": "7146.19", + "timestamp": "1577814180", + "volume": "0.07958084" + }, + { + "close": "7145.10", + "high": "7151.02", + "low": "7145.10", + "open": "7146.19", + "timestamp": "1577814240", + "volume": "0.13076651" + }, + { + "close": "7145.00", + "high": "7150.07", + "low": "7145.00", + "open": "7148.60", + "timestamp": "1577814300", + "volume": "0.52456625" + }, + { + "close": "7138.27", + "high": "7144.12", + "low": "7138.14", + "open": "7141.98", + "timestamp": "1577814360", + "volume": "0.09131845" + }, + { + "close": "7144.12", + "high": "7144.12", + "low": "7131.97", + "open": "7138.56", + "timestamp": "1577814420", + "volume": "3.24971902" + }, + { + "close": "7123.58", + "high": "7141.00", + "low": "7122.28", + "open": "7137.88", + "timestamp": "1577814480", + "volume": "34.61825659" + }, + { + "close": "7135.93", + "high": "7135.93", + "low": "7127.17", + "open": "7127.17", + "timestamp": "1577814540", + "volume": "0.69580639" + }, + { + "close": "7127.02", + "high": "7136.53", + "low": "7120.00", + "open": "7135.51", + "timestamp": "1577814600", + "volume": "10.54730082" + }, + { + "close": "7132.17", + "high": "7132.17", + "low": "7124.36", + "open": "7124.36", + "timestamp": "1577814660", + "volume": "1.64986578" + }, + { + "close": "7140.78", + "high": "7141.35", + "low": "7133.23", + "open": "7133.23", + "timestamp": "1577814720", + "volume": "4.78139758" + }, + { + "close": "7133.20", + "high": "7137.12", + "low": "7133.20", + "open": "7137.12", + "timestamp": "1577814780", + "volume": "0.04455161" + }, + { + "close": "7142.56", + "high": "7144.39", + "low": "7135.00", + "open": "7135.00", + "timestamp": "1577814840", + "volume": "10.20093852" + }, + { + "close": "7137.19", + "high": "7139.79", + "low": "7134.88", + "open": "7138.15", + "timestamp": "1577814900", + "volume": "0.50646588" + }, + { + "close": "7137.00", + "high": "7140.70", + "low": "7137.00", + "open": "7139.79", + "timestamp": "1577814960", + "volume": "0.46775187" + }, + { + "close": "7139.68", + "high": "7141.23", + "low": "7134.83", + "open": "7136.09", + "timestamp": "1577815020", + "volume": "2.56399394" + }, + { + "close": "7136.61", + "high": "7143.62", + "low": "7136.61", + "open": "7143.47", + "timestamp": "1577815080", + "volume": "0.16626515" + }, + { + "close": "7137.13", + "high": "7138.32", + "low": "7137.13", + "open": "7137.80", + "timestamp": "1577815140", + "volume": "0.22302626" + }, + { + "close": "7129.31", + "high": "7130.67", + "low": "7129.31", + "open": "7130.67", + "timestamp": "1577815200", + "volume": "0.03669860" + }, + { + "close": "7121.49", + "high": "7126.57", + "low": "7119.29", + "open": "7126.57", + "timestamp": "1577815260", + "volume": "7.28463444" + }, + { + "close": "7124.60", + "high": "7124.60", + "low": "7116.09", + "open": "7116.09", + "timestamp": "1577815320", + "volume": "0.22824522" + }, + { + "close": "7121.29", + "high": "7124.60", + "low": "7115.24", + "open": "7124.60", + "timestamp": "1577815380", + "volume": "2.51015861" + }, + { + "close": "7119.22", + "high": "7122.66", + "low": "7119.22", + "open": "7122.66", + "timestamp": "1577815440", + "volume": "0.05185929" + }, + { + "close": "7125.00", + "high": "7125.00", + "low": "7117.00", + "open": "7117.00", + "timestamp": "1577815500", + "volume": "0.16178125" + }, + { + "close": "7120.24", + "high": "7120.24", + "low": "7113.75", + "open": "7117.00", + "timestamp": "1577815560", + "volume": "4.51635105" + }, + { + "close": "7125.00", + "high": "7125.00", + "low": "7112.55", + "open": "7112.55", + "timestamp": "1577815620", + "volume": "2.81622331" + }, + { + "close": "7121.04", + "high": "7125.00", + "low": "7118.80", + "open": "7122.87", + "timestamp": "1577815680", + "volume": "4.05549108" + }, + { + "close": "7122.15", + "high": "7124.43", + "low": "7113.76", + "open": "7120.49", + "timestamp": "1577815740", + "volume": "1.03585737" + }, + { + "close": "7123.41", + "high": "7123.41", + "low": "7118.87", + "open": "7120.95", + "timestamp": "1577815800", + "volume": "1.46555400" + }, + { + "close": "7128.87", + "high": "7128.87", + "low": "7123.70", + "open": "7123.70", + "timestamp": "1577815860", + "volume": "0.68676657" + }, + { + "close": "7119.53", + "high": "7124.74", + "low": "7119.50", + "open": "7123.76", + "timestamp": "1577815920", + "volume": "2.13963930" + }, + { + "close": "7124.35", + "high": "7124.35", + "low": "7119.86", + "open": "7119.86", + "timestamp": "1577815980", + "volume": "0.13670951" + }, + { + "close": "7125.14", + "high": "7128.00", + "low": "7125.00", + "open": "7125.00", + "timestamp": "1577816040", + "volume": "0.20683017" + }, + { + "close": "7125.10", + "high": "7128.00", + "low": "7124.43", + "open": "7128.00", + "timestamp": "1577816100", + "volume": "0.67575464" + }, + { + "close": "7119.77", + "high": "7125.10", + "low": "7112.55", + "open": "7125.10", + "timestamp": "1577816160", + "volume": "3.05616498" + }, + { + "close": "7118.02", + "high": "7119.61", + "low": "7118.02", + "open": "7119.61", + "timestamp": "1577816220", + "volume": "0.05068328" + }, + { + "close": "7120.84", + "high": "7121.73", + "low": "7116.91", + "open": "7116.91", + "timestamp": "1577816280", + "volume": "2.34633872" + }, + { + "close": "7119.59", + "high": "7127.21", + "low": "7119.59", + "open": "7121.94", + "timestamp": "1577816340", + "volume": "0.22065415" + }, + { + "close": "7123.11", + "high": "7123.57", + "low": "7118.82", + "open": "7123.57", + "timestamp": "1577816400", + "volume": "0.07500939" + }, + { + "close": "7128.00", + "high": "7128.00", + "low": "7123.16", + "open": "7123.16", + "timestamp": "1577816460", + "volume": "0.27542375" + }, + { + "close": "7121.03", + "high": "7128.00", + "low": "7121.03", + "open": "7128.00", + "timestamp": "1577816520", + "volume": "1.37685552" + }, + { + "close": "7119.75", + "high": "7126.43", + "low": "7119.70", + "open": "7126.43", + "timestamp": "1577816580", + "volume": "1.08717059" + }, + { + "close": "7120.98", + "high": "7122.30", + "low": "7120.98", + "open": "7122.30", + "timestamp": "1577816640", + "volume": "0.24253304" + }, + { + "close": "7125.33", + "high": "7126.71", + "low": "7120.98", + "open": "7120.98", + "timestamp": "1577816700", + "volume": "0.60605389" + }, + { + "close": "7126.80", + "high": "7128.00", + "low": "7126.71", + "open": "7126.71", + "timestamp": "1577816760", + "volume": "0.67377593" + }, + { + "close": "7126.52", + "high": "7126.61", + "low": "7126.52", + "open": "7126.61", + "timestamp": "1577816820", + "volume": "0.01428143" + }, + { + "close": "7131.95", + "high": "7131.95", + "low": "7126.54", + "open": "7126.54", + "timestamp": "1577816880", + "volume": "0.04248539" + }, + { + "close": "7138.24", + "high": "7140.00", + "low": "7131.61", + "open": "7131.61", + "timestamp": "1577816940", + "volume": "0.45228239" + }, + { + "close": "7131.52", + "high": "7137.12", + "low": "7129.99", + "open": "7131.95", + "timestamp": "1577817000", + "volume": "0.57841436" + }, + { + "close": "7133.69", + "high": "7133.70", + "low": "7129.00", + "open": "7130.00", + "timestamp": "1577817060", + "volume": "0.07187070" + }, + { + "close": "7134.20", + "high": "7134.20", + "low": "7127.76", + "open": "7127.76", + "timestamp": "1577817120", + "volume": "0.03759911" + }, + { + "close": "7136.48", + "high": "7136.48", + "low": "7126.62", + "open": "7126.62", + "timestamp": "1577817180", + "volume": "0.51597471" + }, + { + "close": "7139.30", + "high": "7139.30", + "low": "7130.57", + "open": "7130.57", + "timestamp": "1577817240", + "volume": "0.09092956" + }, + { + "close": "7139.46", + "high": "7139.46", + "low": "7139.46", + "open": "7139.46", + "timestamp": "1577817300", + "volume": "0.00439443" + }, + { + "close": "7138.41", + "high": "7140.00", + "low": "7135.88", + "open": "7135.88", + "timestamp": "1577817360", + "volume": "7.25521242" + }, + { + "close": "7139.50", + "high": "7140.00", + "low": "7133.66", + "open": "7140.00", + "timestamp": "1577817420", + "volume": "2.25822737" + }, + { + "close": "7137.41", + "high": "7137.41", + "low": "7130.61", + "open": "7131.77", + "timestamp": "1577817480", + "volume": "3.04852787" + }, + { + "close": "7139.74", + "high": "7139.74", + "low": "7132.84", + "open": "7132.84", + "timestamp": "1577817540", + "volume": "0.20889463" + }, + { + "close": "7133.41", + "high": "7142.22", + "low": "7133.41", + "open": "7139.74", + "timestamp": "1577817600", + "volume": "1.28238887" + }, + { + "close": "7142.95", + "high": "7142.95", + "low": "7135.33", + "open": "7142.16", + "timestamp": "1577817660", + "volume": "1.16383107" + }, + { + "close": "7145.00", + "high": "7146.13", + "low": "7142.95", + "open": "7142.95", + "timestamp": "1577817720", + "volume": "1.44843038" + }, + { + "close": "7148.00", + "high": "7148.00", + "low": "7140.00", + "open": "7140.00", + "timestamp": "1577817780", + "volume": "0.19095408" + }, + { + "close": "7141.40", + "high": "7141.95", + "low": "7141.40", + "open": "7141.95", + "timestamp": "1577817840", + "volume": "0.30000000" + }, + { + "close": "7142.64", + "high": "7148.00", + "low": "7142.64", + "open": "7146.64", + "timestamp": "1577817900", + "volume": "0.43602897" + }, + { + "close": "7147.99", + "high": "7147.99", + "low": "7142.64", + "open": "7142.64", + "timestamp": "1577817960", + "volume": "17.03839497" + }, + { + "close": "7142.61", + "high": "7142.61", + "low": "7142.61", + "open": "7142.61", + "timestamp": "1577818020", + "volume": "0.02872755" + }, + { + "close": "7142.37", + "high": "7147.99", + "low": "7142.37", + "open": "7147.99", + "timestamp": "1577818080", + "volume": "5.02244185" + }, + { + "close": "7142.76", + "high": "7148.82", + "low": "7142.46", + "open": "7148.00", + "timestamp": "1577818140", + "volume": "0.80558111" + }, + { + "close": "7144.20", + "high": "7144.20", + "low": "7139.99", + "open": "7142.38", + "timestamp": "1577818200", + "volume": "1.24917308" + }, + { + "close": "7135.00", + "high": "7135.10", + "low": "7135.00", + "open": "7135.00", + "timestamp": "1577818260", + "volume": "1.08441711" + }, + { + "close": "7137.12", + "high": "7139.49", + "low": "7134.00", + "open": "7139.49", + "timestamp": "1577818320", + "volume": "2.34339083" + }, + { + "close": "7138.16", + "high": "7141.54", + "low": "7134.00", + "open": "7140.39", + "timestamp": "1577818380", + "volume": "0.29033833" + }, + { + "close": "7133.66", + "high": "7134.00", + "low": "7133.66", + "open": "7134.00", + "timestamp": "1577818440", + "volume": "0.51612851" + }, + { + "close": "7135.63", + "high": "7139.00", + "low": "7132.68", + "open": "7134.17", + "timestamp": "1577818500", + "volume": "2.93880413" + }, + { + "close": "7140.29", + "high": "7140.29", + "low": "7139.00", + "open": "7139.00", + "timestamp": "1577818560", + "volume": "0.69057713" + }, + { + "close": "7134.56", + "high": "7134.56", + "low": "7134.56", + "open": "7134.56", + "timestamp": "1577818620", + "volume": "0.09419960" + }, + { + "close": "7142.99", + "high": "7142.99", + "low": "7139.00", + "open": "7139.00", + "timestamp": "1577818680", + "volume": "0.85408630" + }, + { + "close": "7139.78", + "high": "7142.99", + "low": "7139.78", + "open": "7142.99", + "timestamp": "1577818740", + "volume": "0.02863728" + }, + { + "close": "7144.14", + "high": "7145.05", + "low": "7141.55", + "open": "7145.05", + "timestamp": "1577818800", + "volume": "0.28092501" + }, + { + "close": "7133.56", + "high": "7136.40", + "low": "7133.56", + "open": "7136.40", + "timestamp": "1577818860", + "volume": "0.03751497" + }, + { + "close": "7137.15", + "high": "7140.68", + "low": "7131.01", + "open": "7131.01", + "timestamp": "1577818920", + "volume": "0.45580197" + }, + { + "close": "7130.40", + "high": "7132.06", + "low": "7130.40", + "open": "7132.06", + "timestamp": "1577818980", + "volume": "0.06549800" + }, + { + "close": "7130.81", + "high": "7130.81", + "low": "7130.81", + "open": "7130.81", + "timestamp": "1577819040", + "volume": "0.00000000" + }, + { + "close": "7130.81", + "high": "7135.26", + "low": "7129.55", + "open": "7135.26", + "timestamp": "1577819100", + "volume": "0.04492101" + }, + { + "close": "7130.17", + "high": "7130.17", + "low": "7130.17", + "open": "7130.17", + "timestamp": "1577819160", + "volume": "0.46155987" + }, + { + "close": "7130.29", + "high": "7136.20", + "low": "7130.27", + "open": "7131.00", + "timestamp": "1577819220", + "volume": "0.63111046" + }, + { + "close": "7131.73", + "high": "7135.40", + "low": "7130.12", + "open": "7130.17", + "timestamp": "1577819280", + "volume": "0.33329133" + }, + { + "close": "7134.24", + "high": "7136.20", + "low": "7132.88", + "open": "7136.20", + "timestamp": "1577819340", + "volume": "0.82591577" + }, + { + "close": "7137.50", + "high": "7137.50", + "low": "7132.06", + "open": "7132.44", + "timestamp": "1577819400", + "volume": "1.19732295" + }, + { + "close": "7130.47", + "high": "7135.32", + "low": "7130.47", + "open": "7131.39", + "timestamp": "1577819460", + "volume": "0.06022951" + }, + { + "close": "7136.47", + "high": "7136.47", + "low": "7131.70", + "open": "7131.70", + "timestamp": "1577819520", + "volume": "0.02726879" + }, + { + "close": "7130.30", + "high": "7136.19", + "low": "7130.30", + "open": "7136.19", + "timestamp": "1577819580", + "volume": "0.08338725" + }, + { + "close": "7130.30", + "high": "7130.40", + "low": "7130.30", + "open": "7130.40", + "timestamp": "1577819640", + "volume": "0.01539920" + }, + { + "close": "7145.37", + "high": "7145.37", + "low": "7132.50", + "open": "7136.47", + "timestamp": "1577819700", + "volume": "4.17594985" + }, + { + "close": "7147.16", + "high": "7148.35", + "low": "7141.05", + "open": "7141.05", + "timestamp": "1577819760", + "volume": "1.46331523" + }, + { + "close": "7142.19", + "high": "7143.00", + "low": "7142.19", + "open": "7143.00", + "timestamp": "1577819820", + "volume": "0.01725549" + }, + { + "close": "7142.19", + "high": "7142.19", + "low": "7142.19", + "open": "7142.19", + "timestamp": "1577819880", + "volume": "0.00839321" + }, + { + "close": "7146.01", + "high": "7149.00", + "low": "7146.01", + "open": "7149.00", + "timestamp": "1577819940", + "volume": "0.41722045" + }, + { + "close": "7146.11", + "high": "7146.11", + "low": "7146.11", + "open": "7146.11", + "timestamp": "1577820000", + "volume": "0.00858083" + }, + { + "close": "7144.60", + "high": "7148.98", + "low": "7144.18", + "open": "7148.98", + "timestamp": "1577820060", + "volume": "0.03408282" + }, + { + "close": "7144.70", + "high": "7152.15", + "low": "7144.70", + "open": "7151.31", + "timestamp": "1577820120", + "volume": "1.36090834" + }, + { + "close": "7151.23", + "high": "7151.23", + "low": "7144.71", + "open": "7149.94", + "timestamp": "1577820180", + "volume": "0.31073220" + }, + { + "close": "7146.04", + "high": "7153.50", + "low": "7146.04", + "open": "7147.15", + "timestamp": "1577820240", + "volume": "1.01199409" + }, + { + "close": "7148.49", + "high": "7153.50", + "low": "7148.49", + "open": "7153.50", + "timestamp": "1577820300", + "volume": "0.11131584" + }, + { + "close": "7151.52", + "high": "7151.52", + "low": "7149.34", + "open": "7149.34", + "timestamp": "1577820360", + "volume": "0.08473676" + }, + { + "close": "7153.49", + "high": "7153.50", + "low": "7148.16", + "open": "7153.50", + "timestamp": "1577820420", + "volume": "0.24881058" + }, + { + "close": "7154.99", + "high": "7154.99", + "low": "7148.45", + "open": "7153.49", + "timestamp": "1577820480", + "volume": "3.25775757" + }, + { + "close": "7149.11", + "high": "7155.00", + "low": "7148.10", + "open": "7155.00", + "timestamp": "1577820540", + "volume": "1.78241179" + }, + { + "close": "7154.24", + "high": "7155.00", + "low": "7149.03", + "open": "7155.00", + "timestamp": "1577820600", + "volume": "1.34281390" + }, + { + "close": "7154.01", + "high": "7154.01", + "low": "7147.96", + "open": "7153.41", + "timestamp": "1577820660", + "volume": "4.44072029" + }, + { + "close": "7153.99", + "high": "7154.00", + "low": "7149.45", + "open": "7149.45", + "timestamp": "1577820720", + "volume": "0.18181304" + }, + { + "close": "7148.05", + "high": "7148.32", + "low": "7148.05", + "open": "7148.32", + "timestamp": "1577820780", + "volume": "0.20756141" + }, + { + "close": "7143.23", + "high": "7148.71", + "low": "7143.23", + "open": "7147.95", + "timestamp": "1577820840", + "volume": "1.07567378" + }, + { + "close": "7148.78", + "high": "7148.78", + "low": "7148.69", + "open": "7148.69", + "timestamp": "1577820900", + "volume": "0.18728364" + }, + { + "close": "7142.39", + "high": "7147.62", + "low": "7142.39", + "open": "7143.83", + "timestamp": "1577820960", + "volume": "0.49848287" + }, + { + "close": "7144.61", + "high": "7150.59", + "low": "7144.61", + "open": "7147.10", + "timestamp": "1577821020", + "volume": "0.51463384" + }, + { + "close": "7152.09", + "high": "7152.09", + "low": "7150.66", + "open": "7150.66", + "timestamp": "1577821080", + "volume": "0.36123612" + }, + { + "close": "7145.29", + "high": "7152.09", + "low": "7145.29", + "open": "7152.09", + "timestamp": "1577821140", + "volume": "0.08405136" + }, + { + "close": "7148.95", + "high": "7151.50", + "low": "7143.02", + "open": "7151.50", + "timestamp": "1577821200", + "volume": "0.22727823" + }, + { + "close": "7140.29", + "high": "7148.94", + "low": "7140.29", + "open": "7148.94", + "timestamp": "1577821260", + "volume": "0.30490440" + }, + { + "close": "7142.92", + "high": "7150.00", + "low": "7142.92", + "open": "7143.93", + "timestamp": "1577821320", + "volume": "0.04344459" + }, + { + "close": "7148.01", + "high": "7149.23", + "low": "7140.11", + "open": "7149.23", + "timestamp": "1577821380", + "volume": "0.27220454" + }, + { + "close": "7140.53", + "high": "7148.02", + "low": "7140.53", + "open": "7147.90", + "timestamp": "1577821440", + "volume": "2.82911019" + }, + { + "close": "7144.00", + "high": "7146.87", + "low": "7141.03", + "open": "7146.54", + "timestamp": "1577821500", + "volume": "0.40902961" + }, + { + "close": "7144.00", + "high": "7146.86", + "low": "7144.00", + "open": "7144.00", + "timestamp": "1577821560", + "volume": "0.03635522" + }, + { + "close": "7150.00", + "high": "7150.79", + "low": "7146.86", + "open": "7146.86", + "timestamp": "1577821620", + "volume": "5.55866472" + }, + { + "close": "7152.58", + "high": "7152.58", + "low": "7146.74", + "open": "7146.74", + "timestamp": "1577821680", + "volume": "0.09195199" + }, + { + "close": "7153.99", + "high": "7155.49", + "low": "7152.58", + "open": "7152.58", + "timestamp": "1577821740", + "volume": "3.41609787" + }, + { + "close": "7150.22", + "high": "7157.28", + "low": "7150.12", + "open": "7157.28", + "timestamp": "1577821800", + "volume": "0.06220411" + }, + { + "close": "7157.01", + "high": "7157.01", + "low": "7150.12", + "open": "7150.12", + "timestamp": "1577821860", + "volume": "0.63096461" + }, + { + "close": "7157.22", + "high": "7157.22", + "low": "7150.23", + "open": "7157.01", + "timestamp": "1577821920", + "volume": "0.65724263" + }, + { + "close": "7150.33", + "high": "7155.00", + "low": "7150.33", + "open": "7155.00", + "timestamp": "1577821980", + "volume": "0.07898810" + }, + { + "close": "7156.20", + "high": "7156.20", + "low": "7151.25", + "open": "7155.00", + "timestamp": "1577822040", + "volume": "2.05583830" + }, + { + "close": "7150.75", + "high": "7156.20", + "low": "7150.45", + "open": "7156.20", + "timestamp": "1577822100", + "volume": "0.96610696" + }, + { + "close": "7150.75", + "high": "7150.75", + "low": "7146.91", + "open": "7150.34", + "timestamp": "1577822160", + "volume": "1.55331097" + }, + { + "close": "7146.92", + "high": "7152.45", + "low": "7146.92", + "open": "7146.95", + "timestamp": "1577822220", + "volume": "0.30448922" + }, + { + "close": "7152.45", + "high": "7152.45", + "low": "7147.02", + "open": "7147.02", + "timestamp": "1577822280", + "volume": "0.05612338" + }, + { + "close": "7146.74", + "high": "7147.02", + "low": "7146.74", + "open": "7147.02", + "timestamp": "1577822340", + "volume": "0.01316598" + }, + { + "close": "7138.32", + "high": "7142.02", + "low": "7138.12", + "open": "7142.02", + "timestamp": "1577822400", + "volume": "2.07662456" + }, + { + "close": "7138.02", + "high": "7144.12", + "low": "7138.02", + "open": "7141.18", + "timestamp": "1577822460", + "volume": "3.89828185" + }, + { + "close": "7138.00", + "high": "7138.00", + "low": "7138.00", + "open": "7138.00", + "timestamp": "1577822520", + "volume": "0.00729242" + }, + { + "close": "7142.87", + "high": "7142.87", + "low": "7138.00", + "open": "7140.60", + "timestamp": "1577822580", + "volume": "0.08750090" + }, + { + "close": "7142.87", + "high": "7142.87", + "low": "7138.00", + "open": "7142.87", + "timestamp": "1577822640", + "volume": "0.95987016" + }, + { + "close": "7149.03", + "high": "7151.13", + "low": "7140.27", + "open": "7142.87", + "timestamp": "1577822700", + "volume": "9.99641718" + }, + { + "close": "7144.33", + "high": "7152.91", + "low": "7144.33", + "open": "7149.21", + "timestamp": "1577822760", + "volume": "0.05964677" + }, + { + "close": "7150.26", + "high": "7150.26", + "low": "7145.54", + "open": "7149.05", + "timestamp": "1577822820", + "volume": "0.28350747" + }, + { + "close": "7141.90", + "high": "7150.00", + "low": "7141.90", + "open": "7145.55", + "timestamp": "1577822880", + "volume": "0.17384531" + }, + { + "close": "7141.90", + "high": "7141.90", + "low": "7141.90", + "open": "7141.90", + "timestamp": "1577822940", + "volume": "0.01681636" + }, + { + "close": "7147.77", + "high": "7147.77", + "low": "7146.33", + "open": "7146.33", + "timestamp": "1577823000", + "volume": "0.52688488" + }, + { + "close": "7146.85", + "high": "7146.85", + "low": "7138.01", + "open": "7138.22", + "timestamp": "1577823060", + "volume": "0.57792634" + }, + { + "close": "7138.02", + "high": "7138.02", + "low": "7138.02", + "open": "7138.02", + "timestamp": "1577823120", + "volume": "0.02273552" + }, + { + "close": "7139.88", + "high": "7144.97", + "low": "7139.88", + "open": "7144.97", + "timestamp": "1577823180", + "volume": "0.17274483" + }, + { + "close": "7142.28", + "high": "7145.00", + "low": "7137.00", + "open": "7144.97", + "timestamp": "1577823240", + "volume": "0.02659232" + }, + { + "close": "7140.75", + "high": "7141.12", + "low": "7137.00", + "open": "7137.00", + "timestamp": "1577823300", + "volume": "0.30593587" + }, + { + "close": "7142.42", + "high": "7146.77", + "low": "7142.42", + "open": "7143.21", + "timestamp": "1577823360", + "volume": "6.08805803" + }, + { + "close": "7147.37", + "high": "7150.00", + "low": "7141.42", + "open": "7141.42", + "timestamp": "1577823420", + "volume": "6.31360418" + }, + { + "close": "7143.83", + "high": "7150.33", + "low": "7143.83", + "open": "7150.33", + "timestamp": "1577823480", + "volume": "0.02958112" + }, + { + "close": "7145.48", + "high": "7145.48", + "low": "7145.48", + "open": "7145.48", + "timestamp": "1577823540", + "volume": "0.02977844" + }, + { + "close": "7146.01", + "high": "7150.33", + "low": "7145.38", + "open": "7150.33", + "timestamp": "1577823600", + "volume": "0.02276151" + }, + { + "close": "7147.20", + "high": "7150.00", + "low": "7145.91", + "open": "7150.00", + "timestamp": "1577823660", + "volume": "0.22863916" + }, + { + "close": "7143.83", + "high": "7143.83", + "low": "7143.83", + "open": "7143.83", + "timestamp": "1577823720", + "volume": "0.00898203" + }, + { + "close": "7150.00", + "high": "7150.00", + "low": "7150.00", + "open": "7150.00", + "timestamp": "1577823780", + "volume": "0.00482905" + }, + { + "close": "7150.00", + "high": "7150.00", + "low": "7150.00", + "open": "7150.00", + "timestamp": "1577823840", + "volume": "0.35226995" + }, + { + "close": "7144.01", + "high": "7150.00", + "low": "7144.01", + "open": "7145.48", + "timestamp": "1577823900", + "volume": "0.10907787" + }, + { + "close": "7145.48", + "high": "7145.48", + "low": "7145.48", + "open": "7145.48", + "timestamp": "1577823960", + "volume": "0.01401717" + }, + { + "close": "7150.00", + "high": "7150.00", + "low": "7145.48", + "open": "7145.48", + "timestamp": "1577824020", + "volume": "0.43159687" + }, + { + "close": "7143.83", + "high": "7144.20", + "low": "7143.73", + "open": "7143.73", + "timestamp": "1577824080", + "volume": "0.02997170" + }, + { + "close": "7144.18", + "high": "7150.00", + "low": "7143.73", + "open": "7143.83", + "timestamp": "1577824140", + "volume": "0.81243715" + }, + { + "close": "7144.18", + "high": "7144.18", + "low": "7144.18", + "open": "7144.18", + "timestamp": "1577824200", + "volume": "0.00858284" + }, + { + "close": "7147.70", + "high": "7148.84", + "low": "7143.74", + "open": "7148.84", + "timestamp": "1577824260", + "volume": "1.38870075" + }, + { + "close": "7149.33", + "high": "7149.85", + "low": "7144.06", + "open": "7149.85", + "timestamp": "1577824320", + "volume": "0.11667529" + }, + { + "close": "7143.94", + "high": "7150.00", + "low": "7143.83", + "open": "7149.33", + "timestamp": "1577824380", + "volume": "1.34480191" + }, + { + "close": "7143.84", + "high": "7143.84", + "low": "7143.84", + "open": "7143.84", + "timestamp": "1577824440", + "volume": "0.00688623" + }, + { + "close": "7143.84", + "high": "7150.00", + "low": "7143.84", + "open": "7150.00", + "timestamp": "1577824500", + "volume": "0.65277270" + }, + { + "close": "7150.00", + "high": "7150.00", + "low": "7143.84", + "open": "7149.99", + "timestamp": "1577824560", + "volume": "0.31835544" + }, + { + "close": "7149.94", + "high": "7150.00", + "low": "7143.84", + "open": "7143.84", + "timestamp": "1577824620", + "volume": "0.66761039" + }, + { + "close": "7149.94", + "high": "7149.94", + "low": "7143.85", + "open": "7143.85", + "timestamp": "1577824680", + "volume": "0.44961952" + }, + { + "close": "7150.00", + "high": "7150.00", + "low": "7144.90", + "open": "7144.90", + "timestamp": "1577824740", + "volume": "0.09301736" + }, + { + "close": "7158.18", + "high": "7159.97", + "low": "7150.00", + "open": "7150.00", + "timestamp": "1577824800", + "volume": "23.24364993" + }, + { + "close": "7154.88", + "high": "7161.21", + "low": "7151.35", + "open": "7156.09", + "timestamp": "1577824860", + "volume": "1.39610367" + }, + { + "close": "7157.99", + "high": "7158.00", + "low": "7151.35", + "open": "7158.00", + "timestamp": "1577824920", + "volume": "0.14121998" + }, + { + "close": "7152.81", + "high": "7154.04", + "low": "7147.31", + "open": "7150.52", + "timestamp": "1577824980", + "volume": "1.14037555" + }, + { + "close": "7153.21", + "high": "7153.46", + "low": "7143.92", + "open": "7153.46", + "timestamp": "1577825040", + "volume": "0.31618433" + }, + { + "close": "7154.44", + "high": "7154.44", + "low": "7148.14", + "open": "7148.14", + "timestamp": "1577825100", + "volume": "2.18484079" + }, + { + "close": "7151.49", + "high": "7151.49", + "low": "7146.38", + "open": "7147.33", + "timestamp": "1577825160", + "volume": "0.84293225" + }, + { + "close": "7144.85", + "high": "7144.85", + "low": "7144.85", + "open": "7144.85", + "timestamp": "1577825220", + "volume": "0.00757784" + }, + { + "close": "7144.22", + "high": "7144.22", + "low": "7144.22", + "open": "7144.22", + "timestamp": "1577825280", + "volume": "0.00000000" + }, + { + "close": "7144.22", + "high": "7149.06", + "low": "7144.12", + "open": "7149.06", + "timestamp": "1577825340", + "volume": "0.08490320" + }, + { + "close": "7143.72", + "high": "7145.38", + "low": "7143.72", + "open": "7145.38", + "timestamp": "1577825400", + "volume": "0.21259574" + }, + { + "close": "7143.91", + "high": "7149.07", + "low": "7143.39", + "open": "7147.81", + "timestamp": "1577825460", + "volume": "0.09123496" + }, + { + "close": "7142.77", + "high": "7148.19", + "low": "7142.77", + "open": "7142.77", + "timestamp": "1577825520", + "volume": "0.02550527" + }, + { + "close": "7142.77", + "high": "7148.19", + "low": "7142.77", + "open": "7142.77", + "timestamp": "1577825580", + "volume": "0.40132130" + }, + { + "close": "7142.00", + "high": "7142.00", + "low": "7139.14", + "open": "7139.14", + "timestamp": "1577825640", + "volume": "6.65613767" + }, + { + "close": "7140.99", + "high": "7146.35", + "low": "7140.99", + "open": "7145.29", + "timestamp": "1577825700", + "volume": "0.33904063" + }, + { + "close": "7146.35", + "high": "7146.35", + "low": "7140.99", + "open": "7140.99", + "timestamp": "1577825760", + "volume": "0.03618083" + }, + { + "close": "7141.09", + "high": "7144.34", + "low": "7140.99", + "open": "7144.34", + "timestamp": "1577825820", + "volume": "0.02335436" + }, + { + "close": "7143.52", + "high": "7146.23", + "low": "7143.52", + "open": "7146.23", + "timestamp": "1577825880", + "volume": "0.45323000" + }, + { + "close": "7148.02", + "high": "7148.02", + "low": "7144.52", + "open": "7146.23", + "timestamp": "1577825940", + "volume": "0.11460220" + }, + { + "close": "7139.39", + "high": "7144.52", + "low": "7139.39", + "open": "7144.52", + "timestamp": "1577826000", + "volume": "1.62373574" + }, + { + "close": "7143.23", + "high": "7143.23", + "low": "7139.39", + "open": "7140.39", + "timestamp": "1577826060", + "volume": "0.27798735" + }, + { + "close": "7144.88", + "high": "7144.88", + "low": "7139.40", + "open": "7139.40", + "timestamp": "1577826120", + "volume": "0.31028616" + }, + { + "close": "7139.41", + "high": "7139.41", + "low": "7139.41", + "open": "7139.41", + "timestamp": "1577826180", + "volume": "0.02341218" + }, + { + "close": "7143.23", + "high": "7143.23", + "low": "7139.41", + "open": "7139.41", + "timestamp": "1577826240", + "volume": "14.44369184" + }, + { + "close": "7139.50", + "high": "7143.23", + "low": "7139.50", + "open": "7143.23", + "timestamp": "1577826300", + "volume": "0.02154939" + }, + { + "close": "7140.02", + "high": "7143.23", + "low": "7140.02", + "open": "7143.23", + "timestamp": "1577826360", + "volume": "0.11391572" + }, + { + "close": "7140.49", + "high": "7140.49", + "low": "7140.49", + "open": "7140.49", + "timestamp": "1577826420", + "volume": "0.01718763" + }, + { + "close": "7144.88", + "high": "7144.88", + "low": "7140.56", + "open": "7140.56", + "timestamp": "1577826480", + "volume": "0.02938181" + }, + { + "close": "7150.22", + "high": "7150.22", + "low": "7140.49", + "open": "7140.49", + "timestamp": "1577826540", + "volume": "2.68207920" + }, + { + "close": "7152.01", + "high": "7152.01", + "low": "7146.76", + "open": "7150.23", + "timestamp": "1577826600", + "volume": "1.96702633" + }, + { + "close": "7148.22", + "high": "7151.38", + "low": "7146.67", + "open": "7151.38", + "timestamp": "1577826660", + "volume": "2.49711337" + }, + { + "close": "7150.33", + "high": "7150.33", + "low": "7150.33", + "open": "7150.33", + "timestamp": "1577826720", + "volume": "0.01393201" + }, + { + "close": "7152.85", + "high": "7152.85", + "low": "7146.96", + "open": "7151.56", + "timestamp": "1577826780", + "volume": "0.65965003" + }, + { + "close": "7152.66", + "high": "7155.79", + "low": "7148.09", + "open": "7148.09", + "timestamp": "1577826840", + "volume": "0.52111039" + }, + { + "close": "7148.38", + "high": "7155.79", + "low": "7148.38", + "open": "7153.50", + "timestamp": "1577826900", + "volume": "2.07396170" + }, + { + "close": "7145.94", + "high": "7151.59", + "low": "7145.94", + "open": "7148.34", + "timestamp": "1577826960", + "volume": "0.42203539" + }, + { + "close": "7150.71", + "high": "7150.71", + "low": "7148.34", + "open": "7148.34", + "timestamp": "1577827020", + "volume": "0.27488346" + }, + { + "close": "7146.88", + "high": "7152.50", + "low": "7144.91", + "open": "7149.49", + "timestamp": "1577827080", + "volume": "2.19087283" + }, + { + "close": "7152.50", + "high": "7152.50", + "low": "7147.15", + "open": "7151.29", + "timestamp": "1577827140", + "volume": "0.45550999" + }, + { + "close": "7147.26", + "high": "7150.36", + "low": "7147.26", + "open": "7150.36", + "timestamp": "1577827200", + "volume": "0.02343113" + }, + { + "close": "7152.50", + "high": "7152.50", + "low": "7152.50", + "open": "7152.50", + "timestamp": "1577827260", + "volume": "0.02411895" + }, + { + "close": "7148.13", + "high": "7153.90", + "low": "7148.13", + "open": "7152.50", + "timestamp": "1577827320", + "volume": "0.11258650" + }, + { + "close": "7150.95", + "high": "7153.90", + "low": "7150.95", + "open": "7153.90", + "timestamp": "1577827380", + "volume": "0.11019740" + }, + { + "close": "7153.68", + "high": "7153.78", + "low": "7147.26", + "open": "7147.26", + "timestamp": "1577827440", + "volume": "0.46393683" + }, + { + "close": "7148.10", + "high": "7148.10", + "low": "7148.10", + "open": "7148.10", + "timestamp": "1577827500", + "volume": "0.00915170" + }, + { + "close": "7153.90", + "high": "7153.90", + "low": "7148.11", + "open": "7148.11", + "timestamp": "1577827560", + "volume": "0.77325801" + }, + { + "close": "7154.58", + "high": "7154.58", + "low": "7151.40", + "open": "7151.40", + "timestamp": "1577827620", + "volume": "0.60807172" + }, + { + "close": "7154.58", + "high": "7154.58", + "low": "7150.46", + "open": "7154.58", + "timestamp": "1577827680", + "volume": "0.57313304" + }, + { + "close": "7155.69", + "high": "7155.69", + "low": "7152.53", + "open": "7154.58", + "timestamp": "1577827740", + "volume": "0.39288402" + }, + { + "close": "7155.69", + "high": "7155.69", + "low": "7155.13", + "open": "7155.23", + "timestamp": "1577827800", + "volume": "1.34068578" + }, + { + "close": "7156.91", + "high": "7156.91", + "low": "7151.88", + "open": "7155.69", + "timestamp": "1577827860", + "volume": "1.08590978" + }, + { + "close": "7153.92", + "high": "7156.08", + "low": "7152.21", + "open": "7156.08", + "timestamp": "1577827920", + "volume": "0.04136200" + }, + { + "close": "7152.41", + "high": "7152.45", + "low": "7152.41", + "open": "7152.45", + "timestamp": "1577827980", + "volume": "0.29853304" + }, + { + "close": "7156.01", + "high": "7156.01", + "low": "7150.14", + "open": "7152.44", + "timestamp": "1577828040", + "volume": "0.25043501" + }, + { + "close": "7156.01", + "high": "7156.01", + "low": "7156.01", + "open": "7156.01", + "timestamp": "1577828100", + "volume": "0.02413703" + }, + { + "close": "7156.01", + "high": "7156.01", + "low": "7151.65", + "open": "7156.01", + "timestamp": "1577828160", + "volume": "0.02262136" + }, + { + "close": "7153.13", + "high": "7157.41", + "low": "7153.13", + "open": "7156.01", + "timestamp": "1577828220", + "volume": "0.39138527" + }, + { + "close": "7157.41", + "high": "7157.41", + "low": "7153.35", + "open": "7157.41", + "timestamp": "1577828280", + "volume": "0.34256143" + }, + { + "close": "7157.41", + "high": "7157.41", + "low": "7150.56", + "open": "7157.41", + "timestamp": "1577828340", + "volume": "0.06032390" + }, + { + "close": "7152.62", + "high": "7157.41", + "low": "7152.62", + "open": "7157.41", + "timestamp": "1577828400", + "volume": "0.05162205" + }, + { + "close": "7152.62", + "high": "7152.62", + "low": "7152.62", + "open": "7152.62", + "timestamp": "1577828460", + "volume": "0.00693114" + }, + { + "close": "7154.16", + "high": "7157.39", + "low": "7152.53", + "open": "7152.53", + "timestamp": "1577828520", + "volume": "0.17306831" + }, + { + "close": "7157.41", + "high": "7157.41", + "low": "7152.27", + "open": "7157.41", + "timestamp": "1577828580", + "volume": "0.12167145" + }, + { + "close": "7157.41", + "high": "7157.41", + "low": "7153.78", + "open": "7153.78", + "timestamp": "1577828640", + "volume": "0.21820483" + }, + { + "close": "7157.41", + "high": "7157.41", + "low": "7153.89", + "open": "7153.90", + "timestamp": "1577828700", + "volume": "0.21596619" + }, + { + "close": "7155.02", + "high": "7157.80", + "low": "7153.89", + "open": "7153.89", + "timestamp": "1577828760", + "volume": "0.47559066" + }, + { + "close": "7159.20", + "high": "7159.20", + "low": "7155.02", + "open": "7159.20", + "timestamp": "1577828820", + "volume": "0.06282597" + }, + { + "close": "7159.20", + "high": "7159.20", + "low": "7155.46", + "open": "7155.49", + "timestamp": "1577828880", + "volume": "0.09149309" + }, + { + "close": "7155.01", + "high": "7159.20", + "low": "7155.00", + "open": "7159.20", + "timestamp": "1577828940", + "volume": "1.36818256" + }, + { + "close": "7155.00", + "high": "7159.19", + "low": "7155.00", + "open": "7155.01", + "timestamp": "1577829000", + "volume": "3.23450837" + }, + { + "close": "7159.19", + "high": "7159.19", + "low": "7159.19", + "open": "7159.19", + "timestamp": "1577829060", + "volume": "0.01463300" + }, + { + "close": "7159.19", + "high": "7159.19", + "low": "7155.00", + "open": "7155.00", + "timestamp": "1577829120", + "volume": "0.12708373" + }, + { + "close": "7159.19", + "high": "7159.19", + "low": "7155.10", + "open": "7159.19", + "timestamp": "1577829180", + "volume": "0.23720663" + }, + { + "close": "7159.19", + "high": "7159.19", + "low": "7155.00", + "open": "7155.00", + "timestamp": "1577829240", + "volume": "0.13231357" + }, + { + "close": "7155.10", + "high": "7159.20", + "low": "7155.00", + "open": "7159.19", + "timestamp": "1577829300", + "volume": "0.07064921" + }, + { + "close": "7160.00", + "high": "7160.00", + "low": "7155.21", + "open": "7159.20", + "timestamp": "1577829360", + "volume": "0.72486143" + }, + { + "close": "7160.00", + "high": "7160.00", + "low": "7155.32", + "open": "7155.32", + "timestamp": "1577829420", + "volume": "0.02278076" + }, + { + "close": "7156.09", + "high": "7160.00", + "low": "7156.09", + "open": "7160.00", + "timestamp": "1577829480", + "volume": "3.54786199" + }, + { + "close": "7160.99", + "high": "7160.99", + "low": "7160.00", + "open": "7160.00", + "timestamp": "1577829540", + "volume": "7.20575260" + }, + { + "close": "7156.24", + "high": "7164.02", + "low": "7153.60", + "open": "7160.99", + "timestamp": "1577829600", + "volume": "14.35094782" + }, + { + "close": "7160.30", + "high": "7160.30", + "low": "7153.86", + "open": "7153.86", + "timestamp": "1577829660", + "volume": "0.16124894" + }, + { + "close": "7160.65", + "high": "7160.65", + "low": "7154.85", + "open": "7154.85", + "timestamp": "1577829720", + "volume": "0.02603482" + }, + { + "close": "7160.66", + "high": "7160.66", + "low": "7157.41", + "open": "7160.65", + "timestamp": "1577829780", + "volume": "0.41634415" + }, + { + "close": "7157.51", + "high": "7157.51", + "low": "7157.41", + "open": "7157.41", + "timestamp": "1577829840", + "volume": "0.01665170" + }, + { + "close": "7162.45", + "high": "7162.45", + "low": "7157.41", + "open": "7160.66", + "timestamp": "1577829900", + "volume": "0.43802655" + }, + { + "close": "7157.41", + "high": "7159.78", + "low": "7157.41", + "open": "7157.41", + "timestamp": "1577829960", + "volume": "0.19087123" + }, + { + "close": "7159.08", + "high": "7159.08", + "low": "7153.58", + "open": "7153.58", + "timestamp": "1577830020", + "volume": "0.56766231" + }, + { + "close": "7160.87", + "high": "7160.87", + "low": "7156.10", + "open": "7156.10", + "timestamp": "1577830080", + "volume": "0.53953631" + }, + { + "close": "7157.59", + "high": "7159.39", + "low": "7157.59", + "open": "7159.39", + "timestamp": "1577830140", + "volume": "0.02114970" + }, + { + "close": "7158.00", + "high": "7160.87", + "low": "7158.00", + "open": "7158.59", + "timestamp": "1577830200", + "volume": "0.16263965" + }, + { + "close": "7160.87", + "high": "7160.87", + "low": "7158.00", + "open": "7158.00", + "timestamp": "1577830260", + "volume": "0.05273839" + }, + { + "close": "7160.86", + "high": "7160.86", + "low": "7158.00", + "open": "7159.00", + "timestamp": "1577830320", + "volume": "1.80140093" + }, + { + "close": "7160.86", + "high": "7160.86", + "low": "7158.00", + "open": "7158.00", + "timestamp": "1577830380", + "volume": "0.06780436" + }, + { + "close": "7160.86", + "high": "7160.86", + "low": "7158.10", + "open": "7158.10", + "timestamp": "1577830440", + "volume": "0.07848238" + }, + { + "close": "7158.00", + "high": "7164.01", + "low": "7158.00", + "open": "7158.00", + "timestamp": "1577830500", + "volume": "5.33141309" + }, + { + "close": "7163.01", + "high": "7163.01", + "low": "7163.00", + "open": "7163.01", + "timestamp": "1577830560", + "volume": "0.07431322" + }, + { + "close": "7163.01", + "high": "7163.01", + "low": "7158.67", + "open": "7158.67", + "timestamp": "1577830620", + "volume": "0.24485775" + }, + { + "close": "7163.01", + "high": "7164.80", + "low": "7163.01", + "open": "7163.01", + "timestamp": "1577830680", + "volume": "0.38908048" + }, + { + "close": "7158.95", + "high": "7164.80", + "low": "7158.95", + "open": "7163.01", + "timestamp": "1577830740", + "volume": "0.08131752" + }, + { + "close": "7159.00", + "high": "7164.06", + "low": "7159.00", + "open": "7164.06", + "timestamp": "1577830800", + "volume": "0.05992259" + }, + { + "close": "7164.66", + "high": "7164.66", + "low": "7159.06", + "open": "7159.06", + "timestamp": "1577830860", + "volume": "0.03841484" + }, + { + "close": "7163.58", + "high": "7164.66", + "low": "7161.29", + "open": "7164.16", + "timestamp": "1577830920", + "volume": "0.69911058" + }, + { + "close": "7163.13", + "high": "7163.41", + "low": "7158.92", + "open": "7163.41", + "timestamp": "1577830980", + "volume": "0.02535426" + }, + { + "close": "7161.82", + "high": "7162.43", + "low": "7161.82", + "open": "7162.43", + "timestamp": "1577831040", + "volume": "0.05482069" + }, + { + "close": "7158.00", + "high": "7158.00", + "low": "7158.00", + "open": "7158.00", + "timestamp": "1577831100", + "volume": "0.04501726" + }, + { + "close": "7158.30", + "high": "7158.30", + "low": "7158.10", + "open": "7158.10", + "timestamp": "1577831160", + "volume": "0.02361831" + }, + { + "close": "7160.05", + "high": "7163.54", + "low": "7160.05", + "open": "7163.54", + "timestamp": "1577831220", + "volume": "0.33884143" + }, + { + "close": "7159.77", + "high": "7163.54", + "low": "7159.77", + "open": "7163.54", + "timestamp": "1577831280", + "volume": "0.23916471" + }, + { + "close": "7165.24", + "high": "7169.06", + "low": "7159.77", + "open": "7163.54", + "timestamp": "1577831340", + "volume": "1.27069394" + }, + { + "close": "7166.08", + "high": "7166.08", + "low": "7160.87", + "open": "7160.87", + "timestamp": "1577831400", + "volume": "0.04827345" + }, + { + "close": "7166.08", + "high": "7166.08", + "low": "7160.97", + "open": "7160.97", + "timestamp": "1577831460", + "volume": "0.84060953" + }, + { + "close": "7167.87", + "high": "7167.87", + "low": "7167.87", + "open": "7167.87", + "timestamp": "1577831520", + "volume": "0.00000000" + }, + { + "close": "7167.87", + "high": "7167.87", + "low": "7161.09", + "open": "7166.08", + "timestamp": "1577831580", + "volume": "0.19547094" + }, + { + "close": "7168.89", + "high": "7168.89", + "low": "7165.24", + "open": "7165.24", + "timestamp": "1577831640", + "volume": "0.45173780" + }, + { + "close": "7171.45", + "high": "7171.45", + "low": "7165.24", + "open": "7168.89", + "timestamp": "1577831700", + "volume": "0.37625137" + }, + { + "close": "7172.47", + "high": "7172.47", + "low": "7167.00", + "open": "7167.00", + "timestamp": "1577831760", + "volume": "0.51220337" + }, + { + "close": "7173.24", + "high": "7173.24", + "low": "7167.10", + "open": "7167.10", + "timestamp": "1577831820", + "volume": "2.17208431" + }, + { + "close": "7173.71", + "high": "7175.00", + "low": "7168.00", + "open": "7173.24", + "timestamp": "1577831880", + "volume": "0.85946437" + }, + { + "close": "7173.71", + "high": "7173.71", + "low": "7168.01", + "open": "7168.01", + "timestamp": "1577831940", + "volume": "0.13911705" + }, + { + "close": "7167.00", + "high": "7173.45", + "low": "7167.00", + "open": "7173.45", + "timestamp": "1577832000", + "volume": "0.77302150" + }, + { + "close": "7172.51", + "high": "7172.52", + "low": "7161.73", + "open": "7164.60", + "timestamp": "1577832060", + "volume": "0.07079390" + }, + { + "close": "7161.59", + "high": "7164.60", + "low": "7161.59", + "open": "7164.60", + "timestamp": "1577832120", + "volume": "0.01550897" + }, + { + "close": "7169.96", + "high": "7169.96", + "low": "7162.03", + "open": "7162.03", + "timestamp": "1577832180", + "volume": "0.08807935" + }, + { + "close": "7173.16", + "high": "7173.16", + "low": "7169.58", + "open": "7169.58", + "timestamp": "1577832240", + "volume": "0.67202465" + }, + { + "close": "7163.69", + "high": "7170.62", + "low": "7162.78", + "open": "7162.78", + "timestamp": "1577832300", + "volume": "0.10108646" + }, + { + "close": "7164.60", + "high": "7170.62", + "low": "7162.89", + "open": "7170.62", + "timestamp": "1577832360", + "volume": "0.61922748" + }, + { + "close": "7172.41", + "high": "7172.41", + "low": "7165.04", + "open": "7165.60", + "timestamp": "1577832420", + "volume": "2.21268027" + }, + { + "close": "7166.24", + "high": "7166.24", + "low": "7166.14", + "open": "7166.14", + "timestamp": "1577832480", + "volume": "0.03660953" + }, + { + "close": "7172.80", + "high": "7172.80", + "low": "7166.24", + "open": "7166.24", + "timestamp": "1577832540", + "volume": "0.25939553" + }, + { + "close": "7173.26", + "high": "7175.00", + "low": "7166.26", + "open": "7172.90", + "timestamp": "1577832600", + "volume": "3.02660916" + }, + { + "close": "7179.51", + "high": "7179.51", + "low": "7173.26", + "open": "7175.00", + "timestamp": "1577832660", + "volume": "2.43920788" + }, + { + "close": "7186.35", + "high": "7186.35", + "low": "7179.51", + "open": "7179.51", + "timestamp": "1577832720", + "volume": "1.45473254" + }, + { + "close": "7176.16", + "high": "7180.31", + "low": "7176.16", + "open": "7180.00", + "timestamp": "1577832780", + "volume": "6.40286672" + }, + { + "close": "7182.22", + "high": "7182.22", + "low": "7173.58", + "open": "7176.16", + "timestamp": "1577832840", + "volume": "0.34722609" + }, + { + "close": "7174.01", + "high": "7180.31", + "low": "7174.01", + "open": "7180.31", + "timestamp": "1577832900", + "volume": "3.05118653" + }, + { + "close": "7180.81", + "high": "7180.81", + "low": "7174.01", + "open": "7174.01", + "timestamp": "1577832960", + "volume": "1.79016873" + }, + { + "close": "7175.32", + "high": "7175.32", + "low": "7175.32", + "open": "7175.32", + "timestamp": "1577833020", + "volume": "0.00756288" + }, + { + "close": "7178.88", + "high": "7178.88", + "low": "7174.11", + "open": "7175.53", + "timestamp": "1577833080", + "volume": "0.09334035" + }, + { + "close": "7171.33", + "high": "7179.93", + "low": "7171.33", + "open": "7174.01", + "timestamp": "1577833140", + "volume": "6.34694860" + }, + { + "close": "7175.39", + "high": "7175.39", + "low": "7171.23", + "open": "7175.39", + "timestamp": "1577833200", + "volume": "0.51834456" + }, + { + "close": "7175.39", + "high": "7175.39", + "low": "7175.39", + "open": "7175.39", + "timestamp": "1577833260", + "volume": "0.11585586" + }, + { + "close": "7173.86", + "high": "7178.31", + "low": "7172.96", + "open": "7172.96", + "timestamp": "1577833320", + "volume": "0.86097667" + }, + { + "close": "7166.25", + "high": "7171.94", + "low": "7166.25", + "open": "7170.76", + "timestamp": "1577833380", + "volume": "7.47667296" + }, + { + "close": "7170.44", + "high": "7170.44", + "low": "7170.44", + "open": "7170.44", + "timestamp": "1577833440", + "volume": "0.02500152" + }, + { + "close": "7167.10", + "high": "7170.44", + "low": "7167.10", + "open": "7170.44", + "timestamp": "1577833500", + "volume": "0.04682507" + }, + { + "close": "7165.51", + "high": "7167.10", + "low": "7165.51", + "open": "7167.10", + "timestamp": "1577833560", + "volume": "0.04354982" + }, + { + "close": "7172.22", + "high": "7172.22", + "low": "7165.51", + "open": "7165.51", + "timestamp": "1577833620", + "volume": "0.09517149" + }, + { + "close": "7172.19", + "high": "7172.19", + "low": "7165.51", + "open": "7165.51", + "timestamp": "1577833680", + "volume": "0.23014235" + }, + { + "close": "7165.62", + "high": "7165.62", + "low": "7165.62", + "open": "7165.62", + "timestamp": "1577833740", + "volume": "0.00719960" + }, + { + "close": "7172.22", + "high": "7172.22", + "low": "7165.62", + "open": "7165.62", + "timestamp": "1577833800", + "volume": "0.05747769" + }, + { + "close": "7174.56", + "high": "7174.56", + "low": "7167.57", + "open": "7172.22", + "timestamp": "1577833860", + "volume": "0.19676577" + }, + { + "close": "7172.22", + "high": "7172.22", + "low": "7169.89", + "open": "7169.89", + "timestamp": "1577833920", + "volume": "0.18209214" + }, + { + "close": "7167.02", + "high": "7167.02", + "low": "7167.02", + "open": "7167.02", + "timestamp": "1577833980", + "volume": "0.00713773" + }, + { + "close": "7168.10", + "high": "7172.81", + "low": "7167.12", + "open": "7167.12", + "timestamp": "1577834040", + "volume": "0.51370541" + }, + { + "close": "7172.81", + "high": "7172.81", + "low": "7165.71", + "open": "7167.96", + "timestamp": "1577834100", + "volume": "0.05925171" + }, + { + "close": "7172.81", + "high": "7172.81", + "low": "7167.97", + "open": "7167.97", + "timestamp": "1577834160", + "volume": "0.04208154" + }, + { + "close": "7172.71", + "high": "7172.71", + "low": "7172.71", + "open": "7172.71", + "timestamp": "1577834220", + "volume": "0.00654621" + }, + { + "close": "7171.30", + "high": "7171.78", + "low": "7163.73", + "open": "7163.73", + "timestamp": "1577834280", + "volume": "0.08349080" + }, + { + "close": "7171.09", + "high": "7171.09", + "low": "7171.09", + "open": "7171.09", + "timestamp": "1577834340", + "volume": "0.02357160" + }, + { + "close": "7170.80", + "high": "7170.80", + "low": "7164.27", + "open": "7165.46", + "timestamp": "1577834400", + "volume": "0.14766537" + }, + { + "close": "7163.24", + "high": "7163.24", + "low": "7160.60", + "open": "7160.86", + "timestamp": "1577834460", + "volume": "0.02524252" + }, + { + "close": "7167.37", + "high": "7173.29", + "low": "7163.24", + "open": "7163.24", + "timestamp": "1577834520", + "volume": "0.38439890" + }, + { + "close": "7164.21", + "high": "7167.37", + "low": "7164.21", + "open": "7167.37", + "timestamp": "1577834580", + "volume": "0.12169281" + }, + { + "close": "7161.15", + "high": "7164.21", + "low": "7160.48", + "open": "7164.21", + "timestamp": "1577834640", + "volume": "1.43478524" + }, + { + "close": "7160.00", + "high": "7166.77", + "low": "7160.00", + "open": "7166.77", + "timestamp": "1577834700", + "volume": "0.02912847" + }, + { + "close": "7167.13", + "high": "7167.13", + "low": "7160.98", + "open": "7162.28", + "timestamp": "1577834760", + "volume": "1.09473914" + }, + { + "close": "7161.75", + "high": "7162.29", + "low": "7161.75", + "open": "7162.29", + "timestamp": "1577834820", + "volume": "0.00901197" + }, + { + "close": "7167.30", + "high": "7167.30", + "low": "7167.13", + "open": "7167.13", + "timestamp": "1577834880", + "volume": "0.28590371" + }, + { + "close": "7160.31", + "high": "7160.31", + "low": "7160.31", + "open": "7160.31", + "timestamp": "1577834940", + "volume": "0.00000000" + }, + { + "close": "7160.31", + "high": "7167.28", + "low": "7160.31", + "open": "7161.10", + "timestamp": "1577835000", + "volume": "0.75468343" + }, + { + "close": "7160.00", + "high": "7160.11", + "low": "7160.00", + "open": "7160.11", + "timestamp": "1577835060", + "volume": "1.23242573" + }, + { + "close": "7166.30", + "high": "7166.30", + "low": "7160.10", + "open": "7160.10", + "timestamp": "1577835120", + "volume": "0.04335358" + }, + { + "close": "7161.71", + "high": "7166.30", + "low": "7160.20", + "open": "7160.20", + "timestamp": "1577835180", + "volume": "0.05726805" + }, + { + "close": "7167.39", + "high": "7167.39", + "low": "7160.34", + "open": "7160.34", + "timestamp": "1577835240", + "volume": "0.10640342" + }, + { + "close": "7161.61", + "high": "7161.61", + "low": "7161.61", + "open": "7161.61", + "timestamp": "1577835300", + "volume": "0.02153092" + }, + { + "close": "7160.10", + "high": "7161.51", + "low": "7160.10", + "open": "7161.51", + "timestamp": "1577835360", + "volume": "0.19792125" + }, + { + "close": "7160.00", + "high": "7165.75", + "low": "7160.00", + "open": "7165.75", + "timestamp": "1577835420", + "volume": "0.20677654" + }, + { + "close": "7160.00", + "high": "7165.75", + "low": "7160.00", + "open": "7160.00", + "timestamp": "1577835480", + "volume": "0.17273376" + }, + { + "close": "7161.39", + "high": "7165.75", + "low": "7161.39", + "open": "7165.75", + "timestamp": "1577835540", + "volume": "0.03043474" + }, + { + "close": "7161.49", + "high": "7161.49", + "low": "7161.39", + "open": "7161.39", + "timestamp": "1577835600", + "volume": "0.05694710" + }, + { + "close": "7162.81", + "high": "7165.75", + "low": "7161.59", + "open": "7161.59", + "timestamp": "1577835660", + "volume": "0.04976802" + }, + { + "close": "7170.04", + "high": "7170.04", + "low": "7164.23", + "open": "7165.75", + "timestamp": "1577835720", + "volume": "0.77392817" + }, + { + "close": "7175.90", + "high": "7175.90", + "low": "7170.04", + "open": "7170.04", + "timestamp": "1577835780", + "volume": "0.44968716" + }, + { + "close": "7164.91", + "high": "7170.04", + "low": "7164.91", + "open": "7170.04", + "timestamp": "1577835840", + "volume": "0.02103287" + }, + { + "close": "7164.40", + "high": "7170.80", + "low": "7162.62", + "open": "7164.90", + "timestamp": "1577835900", + "volume": "1.60227481" + }, + { + "close": "7170.94", + "high": "7170.94", + "low": "7164.51", + "open": "7164.51", + "timestamp": "1577835960", + "volume": "0.02285346" + }, + { + "close": "7167.98", + "high": "7173.01", + "low": "7166.95", + "open": "7166.95", + "timestamp": "1577836020", + "volume": "0.39485641" + }, + { + "close": "7164.11", + "high": "7164.11", + "low": "7164.11", + "open": "7164.11", + "timestamp": "1577836080", + "volume": "0.00000000" + }, + { + "close": "7164.11", + "high": "7172.91", + "low": "7164.11", + "open": "7171.37", + "timestamp": "1577836140", + "volume": "0.40789343" + }, + { + "close": "7170.66", + "high": "7170.66", + "low": "7164.21", + "open": "7164.21", + "timestamp": "1577836200", + "volume": "0.08549090" + }, + { + "close": "7176.25", + "high": "7180.18", + "low": "7170.20", + "open": "7170.20", + "timestamp": "1577836260", + "volume": "1.19011113" + }, + { + "close": "7177.80", + "high": "7177.80", + "low": "7171.69", + "open": "7176.25", + "timestamp": "1577836320", + "volume": "0.15259559" + }, + { + "close": "7174.07", + "high": "7180.86", + "low": "7174.07", + "open": "7180.86", + "timestamp": "1577836380", + "volume": "2.17324716" + }, + { + "close": "7175.20", + "high": "7175.20", + "low": "7172.47", + "open": "7172.47", + "timestamp": "1577836440", + "volume": "0.03599842" + }, + { + "close": "7176.68", + "high": "7176.68", + "low": "7175.69", + "open": "7175.69", + "timestamp": "1577836500", + "volume": "0.01687725" + }, + { + "close": "7170.20", + "high": "7182.49", + "low": "7170.20", + "open": "7182.49", + "timestamp": "1577836560", + "volume": "6.24889160" + }, + { + "close": "7166.89", + "high": "7170.80", + "low": "7161.65", + "open": "7164.22", + "timestamp": "1577836620", + "volume": "3.95944050" + }, + { + "close": "7167.30", + "high": "7167.30", + "low": "7161.99", + "open": "7166.89", + "timestamp": "1577836680", + "volume": "0.56886771" + }, + { + "close": "7168.36", + "high": "7171.22", + "low": "7167.30", + "open": "7167.30", + "timestamp": "1577836740", + "volume": "0.19144775" + } + ], + "pair": "BTC/USD" + } + }, + "queryString": "end=1577836799\u0026limit=1000\u0026start=1546300800\u0026step=60", + "bodyParams": "", + "headers": { + "Referer": [ + "https://www.bitstamp.net/api/v2/ohlc/btcusd?end=1577836799\u0026limit=1000\u0026start=1546300800\u0026step=60" + ] + } + }, + { + "data": { + "data": { + "ohlc": [ + { + "close": "1190.66", + "high": "1202.00", + "low": "1176.00", + "open": "1190.72", + "timestamp": "1491523200", + "volume": "5450.27271426" + }, + { + "close": "1184.03", + "high": "1197.30", + "low": "1166.66", + "open": "1190.66", + "timestamp": "1491609600", + "volume": "2720.79822734" + }, + { + "close": "1206.20", + "high": "1216.87", + "low": "1173.98", + "open": "1184.05", + "timestamp": "1491696000", + "volume": "4817.42424874" + }, + { + "close": "1209.25", + "high": "1219.71", + "low": "1195.00", + "open": "1205.20", + "timestamp": "1491782400", + "volume": "3656.81631296" + }, + { + "close": "1218.99", + "high": "1229.00", + "low": "1198.02", + "open": "1209.99", + "timestamp": "1491868800", + "volume": "3487.75310814" + }, + { + "close": "1212.17", + "high": "1224.57", + "low": "1208.00", + "open": "1218.99", + "timestamp": "1491955200", + "volume": "3475.19462571" + }, + { + "close": "1172.91", + "high": "1219.45", + "low": "1141.00", + "open": "1212.16", + "timestamp": "1492041600", + "volume": "7135.30295650" + }, + { + "close": "1170.34", + "high": "1193.00", + "low": "1142.00", + "open": "1172.56", + "timestamp": "1492128000", + "volume": "8982.76789635" + }, + { + "close": "1173.45", + "high": "1192.50", + "low": "1165.00", + "open": "1169.53", + "timestamp": "1492214400", + "volume": "1804.45079680" + }, + { + "close": "1162.31", + "high": "1179.30", + "low": "1150.00", + "open": "1171.00", + "timestamp": "1492300800", + "volume": "2663.99028304" + }, + { + "close": "1176.54", + "high": "1192.50", + "low": "1161.00", + "open": "1162.31", + "timestamp": "1492387200", + "volume": "3568.82507477" + }, + { + "close": "1202.58", + "high": "1210.00", + "low": "1175.95", + "open": "1176.59", + "timestamp": "1492473600", + "volume": "5514.18240451" + }, + { + "close": "1203.98", + "high": "1209.99", + "low": "1190.00", + "open": "1202.59", + "timestamp": "1492560000", + "volume": "6046.51943656" + }, + { + "close": "1234.19", + "high": "1243.88", + "low": "1201.66", + "open": "1203.98", + "timestamp": "1492646400", + "volume": "5972.93539154" + }, + { + "close": "1243.61", + "high": "1252.32", + "low": "1231.65", + "open": "1234.93", + "timestamp": "1492732800", + "volume": "5023.03852040" + }, + { + "close": "1233.20", + "high": "1247.15", + "low": "1199.00", + "open": "1243.60", + "timestamp": "1492819200", + "volume": "4173.28321472" + }, + { + "close": "1241.99", + "high": "1248.99", + "low": "1223.42", + "open": "1231.85", + "timestamp": "1492905600", + "volume": "2604.72196524" + }, + { + "close": "1253.58", + "high": "1254.00", + "low": "1234.00", + "open": "1242.00", + "timestamp": "1492992000", + "volume": "3048.68890003" + }, + { + "close": "1269.00", + "high": "1280.00", + "low": "1251.07", + "open": "1253.57", + "timestamp": "1493078400", + "volume": "5249.77353318" + }, + { + "close": "1287.99", + "high": "1330.00", + "low": "1265.00", + "open": "1271.40", + "timestamp": "1493164800", + "volume": "8707.63904245" + }, + { + "close": "1331.53", + "high": "1342.02", + "low": "1285.00", + "open": "1287.92", + "timestamp": "1493251200", + "volume": "6669.98746832" + }, + { + "close": "1330.70", + "high": "1347.02", + "low": "1299.00", + "open": "1331.00", + "timestamp": "1493337600", + "volume": "8234.27554370" + }, + { + "close": "1333.00", + "high": "1342.80", + "low": "1316.00", + "open": "1333.93", + "timestamp": "1493424000", + "volume": "3927.45061482" + }, + { + "close": "1350.21", + "high": "1356.00", + "low": "1315.68", + "open": "1336.77", + "timestamp": "1493510400", + "volume": "3536.17581110" + }, + { + "close": "1390.86", + "high": "1425.00", + "low": "1341.22", + "open": "1348.88", + "timestamp": "1493596800", + "volume": "8604.41493207" + }, + { + "close": "1447.75", + "high": "1481.73", + "low": "1388.00", + "open": "1390.86", + "timestamp": "1493683200", + "volume": "8920.68985793" + }, + { + "close": "1503.22", + "high": "1516.04", + "low": "1431.02", + "open": "1447.75", + "timestamp": "1493769600", + "volume": "11077.58948720" + }, + { + "close": "1537.23", + "high": "1623.01", + "low": "1444.94", + "open": "1503.25", + "timestamp": "1493856000", + "volume": "19548.52973673" + }, + { + "close": "1514.90", + "high": "1609.00", + "low": "1495.00", + "open": "1537.36", + "timestamp": "1493942400", + "volume": "15603.68436616" + }, + { + "close": "1558.02", + "high": "1578.97", + "low": "1505.00", + "open": "1515.39", + "timestamp": "1494028800", + "volume": "7901.14284010" + }, + { + "close": "1554.01", + "high": "1565.00", + "low": "1525.00", + "open": "1554.04", + "timestamp": "1494115200", + "volume": "7667.78585113" + }, + { + "close": "1649.54", + "high": "1653.97", + "low": "1554.38", + "open": "1554.38", + "timestamp": "1494201600", + "volume": "19262.35352625" + }, + { + "close": "1720.28", + "high": "1760.40", + "low": "1616.05", + "open": "1649.55", + "timestamp": "1494288000", + "volume": "16807.73323227" + }, + { + "close": "1772.58", + "high": "1794.21", + "low": "1682.00", + "open": "1720.26", + "timestamp": "1494374400", + "volume": "11265.37863829" + }, + { + "close": "1828.45", + "high": "1892.00", + "low": "1745.01", + "open": "1774.52", + "timestamp": "1494460800", + "volume": "14740.21932638" + }, + { + "close": "1691.51", + "high": "1832.00", + "low": "1650.00", + "open": "1830.85", + "timestamp": "1494547200", + "volume": "17062.84462773" + }, + { + "close": "1776.89", + "high": "1785.82", + "low": "1601.46", + "open": "1690.33", + "timestamp": "1494633600", + "volume": "10532.23451343" + }, + { + "close": "1784.00", + "high": "1815.00", + "low": "1753.00", + "open": "1776.80", + "timestamp": "1494720000", + "volume": "4816.73208815" + }, + { + "close": "1705.48", + "high": "1784.00", + "low": "1682.56", + "open": "1782.30", + "timestamp": "1494806400", + "volume": "13316.80217814" + }, + { + "close": "1700.01", + "high": "1750.00", + "low": "1641.22", + "open": "1706.07", + "timestamp": "1494892800", + "volume": "16554.08858020" + }, + { + "close": "1782.99", + "high": "1840.42", + "low": "1670.01", + "open": "1700.01", + "timestamp": "1494979200", + "volume": "17797.31852412" + }, + { + "close": "1878.99", + "high": "1881.80", + "low": "1766.33", + "open": "1779.00", + "timestamp": "1495065600", + "volume": "11916.12339070" + }, + { + "close": "1958.00", + "high": "1969.99", + "low": "1874.99", + "open": "1879.00", + "timestamp": "1495152000", + "volume": "14124.61831495" + }, + { + "close": "2013.99", + "high": "2021.00", + "low": "1914.00", + "open": "1959.09", + "timestamp": "1495238400", + "volume": "12309.94747354" + }, + { + "close": "2017.55", + "high": "2063.11", + "low": "1961.52", + "open": "2013.99", + "timestamp": "1495324800", + "volume": "6755.83436855" + }, + { + "close": "2099.97", + "high": "2230.34", + "low": "2001.00", + "open": "2017.55", + "timestamp": "1495411200", + "volume": "16338.53540635" + }, + { + "close": "2264.23", + "high": "2275.00", + "low": "2088.45", + "open": "2088.76", + "timestamp": "1495497600", + "volume": "14138.91966835" + }, + { + "close": "2420.29", + "high": "2481.75", + "low": "2264.64", + "open": "2265.90", + "timestamp": "1495584000", + "volume": "22144.59820110" + }, + { + "close": "2292.53", + "high": "2760.10", + "low": "2221.00", + "open": "2420.29", + "timestamp": "1495670400", + "volume": "32964.76142591" + }, + { + "close": "2279.82", + "high": "2599.12", + "low": "2060.00", + "open": "2277.01", + "timestamp": "1495756800", + "volume": "28326.82201443" + }, + { + "close": "2042.00", + "high": "2339.94", + "low": "1850.00", + "open": "2280.70", + "timestamp": "1495843200", + "volume": "26216.27512690" + }, + { + "close": "2178.81", + "high": "2313.96", + "low": "2041.48", + "open": "2042.89", + "timestamp": "1495929600", + "volume": "15375.21812611" + }, + { + "close": "2292.10", + "high": "2350.00", + "low": "2110.00", + "open": "2172.54", + "timestamp": "1496016000", + "volume": "12129.27808588" + }, + { + "close": "2203.51", + "high": "2339.08", + "low": "2160.00", + "open": "2290.18", + "timestamp": "1496102400", + "volume": "13888.85097299" + }, + { + "close": "2298.01", + "high": "2334.00", + "low": "2154.28", + "open": "2201.70", + "timestamp": "1496188800", + "volume": "16279.29243150" + }, + { + "close": "2413.63", + "high": "2456.39", + "low": "2296.81", + "open": "2298.01", + "timestamp": "1496275200", + "volume": "18401.66360125" + }, + { + "close": "2488.94", + "high": "2489.00", + "low": "2370.03", + "open": "2413.58", + "timestamp": "1496361600", + "volume": "12428.70059429" + }, + { + "close": "2540.94", + "high": "2584.34", + "low": "2445.00", + "open": "2488.94", + "timestamp": "1496448000", + "volume": "10810.58468925" + }, + { + "close": "2530.27", + "high": "2569.00", + "low": "2460.00", + "open": "2538.10", + "timestamp": "1496534400", + "volume": "8828.62494281" + }, + { + "close": "2698.00", + "high": "2699.35", + "low": "2525.28", + "open": "2530.27", + "timestamp": "1496620800", + "volume": "12221.44480600" + }, + { + "close": "2880.74", + "high": "2933.00", + "low": "2689.40", + "open": "2698.00", + "timestamp": "1496707200", + "volume": "26695.67081758" + }, + { + "close": "2683.03", + "high": "2893.28", + "low": "2612.50", + "open": "2875.71", + "timestamp": "1496793600", + "volume": "16967.04353572" + }, + { + "close": "2806.00", + "high": "2815.00", + "low": "2613.13", + "open": "2680.24", + "timestamp": "1496880000", + "volume": "13251.40544911" + }, + { + "close": "2822.32", + "high": "2868.23", + "low": "2780.43", + "open": "2805.46", + "timestamp": "1496966400", + "volume": "8036.31356941" + }, + { + "close": "2899.99", + "high": "2912.98", + "low": "2800.00", + "open": "2818.00", + "timestamp": "1497052800", + "volume": "9593.36119146" + }, + { + "close": "2954.22", + "high": "2967.46", + "low": "2861.53", + "open": "2899.01", + "timestamp": "1497139200", + "volume": "6830.60683981" + }, + { + "close": "2667.06", + "high": "2980.00", + "low": "2480.03", + "open": "2954.23", + "timestamp": "1497225600", + "volume": "31534.94605550" + }, + { + "close": "2703.02", + "high": "2783.62", + "low": "2638.62", + "open": "2656.97", + "timestamp": "1497312000", + "volume": "16275.83441252" + }, + { + "close": "2450.00", + "high": "2801.00", + "low": "2320.00", + "open": "2705.99", + "timestamp": "1497398400", + "volume": "29478.82028393" + }, + { + "close": "2424.91", + "high": "2516.20", + "low": "2120.00", + "open": "2451.42", + "timestamp": "1497484800", + "volume": "36751.09130817" + }, + { + "close": "2484.68", + "high": "2540.00", + "low": "2307.66", + "open": "2424.96", + "timestamp": "1497571200", + "volume": "13802.39329983" + }, + { + "close": "2630.00", + "high": "2674.40", + "low": "2420.53", + "open": "2484.68", + "timestamp": "1497657600", + "volume": "11142.98518556" + }, + { + "close": "2516.98", + "high": "2665.00", + "low": "2460.62", + "open": "2630.06", + "timestamp": "1497744000", + "volume": "9424.23118056" + }, + { + "close": "2598.00", + "high": "2598.00", + "low": "2480.96", + "open": "2516.98", + "timestamp": "1497830400", + "volume": "10570.67252500" + }, + { + "close": "2740.00", + "high": "2783.00", + "low": "2581.00", + "open": "2598.00", + "timestamp": "1497916800", + "volume": "15891.69948817" + }, + { + "close": "2657.04", + "high": "2789.00", + "low": "2611.00", + "open": "2734.03", + "timestamp": "1498003200", + "volume": "15676.32352625" + }, + { + "close": "2713.48", + "high": "2740.00", + "low": "2594.61", + "open": "2658.67", + "timestamp": "1498089600", + "volume": "10792.78764641" + }, + { + "close": "2685.05", + "high": "2745.00", + "low": "2657.46", + "open": "2713.48", + "timestamp": "1498176000", + "volume": "8232.48064925" + }, + { + "close": "2557.66", + "high": "2724.96", + "low": "2512.13", + "open": "2685.05", + "timestamp": "1498262400", + "volume": "13342.81785584" + }, + { + "close": "2502.03", + "high": "2635.72", + "low": "2432.00", + "open": "2557.66", + "timestamp": "1498348800", + "volume": "10339.57437415" + }, + { + "close": "2421.22", + "high": "2550.03", + "low": "2315.01", + "open": "2502.26", + "timestamp": "1498435200", + "volume": "22094.21151071" + }, + { + "close": "2565.00", + "high": "2565.00", + "low": "2291.00", + "open": "2421.21", + "timestamp": "1498521600", + "volume": "19129.59650756" + }, + { + "close": "2559.90", + "high": "2593.00", + "low": "2468.01", + "open": "2565.00", + "timestamp": "1498608000", + "volume": "12274.54530348" + }, + { + "close": "2541.59", + "high": "2594.78", + "low": "2500.31", + "open": "2550.99", + "timestamp": "1498694400", + "volume": "8125.37763725" + }, + { + "close": "2465.49", + "high": "2564.58", + "low": "2451.00", + "open": "2538.41", + "timestamp": "1498780800", + "volume": "8715.71676156" + }, + { + "close": "2412.41", + "high": "2517.11", + "low": "2390.00", + "open": "2465.48", + "timestamp": "1498867200", + "volume": "8885.89349655" + }, + { + "close": "2504.37", + "high": "2528.72", + "low": "2374.34", + "open": "2421.30", + "timestamp": "1498953600", + "volume": "8744.53441127" + }, + { + "close": "2550.47", + "high": "2595.00", + "low": "2472.68", + "open": "2504.81", + "timestamp": "1499040000", + "volume": "11520.70730801" + }, + { + "close": "2596.12", + "high": "2639.47", + "low": "2540.07", + "open": "2540.07", + "timestamp": "1499126400", + "volume": "9662.75941445" + }, + { + "close": "2602.90", + "high": "2623.00", + "low": "2530.10", + "open": "2594.52", + "timestamp": "1499212800", + "volume": "10882.83901071" + }, + { + "close": "2600.39", + "high": "2614.00", + "low": "2522.00", + "open": "2598.37", + "timestamp": "1499299200", + "volume": "8333.98094907" + }, + { + "close": "2501.46", + "high": "2605.00", + "low": "2475.00", + "open": "2599.01", + "timestamp": "1499385600", + "volume": "9430.61545780" + }, + { + "close": "2550.07", + "high": "2555.00", + "low": "2462.00", + "open": "2501.46", + "timestamp": "1499472000", + "volume": "5405.89088691" + }, + { + "close": "2502.28", + "high": "2564.65", + "low": "2500.50", + "open": "2550.13", + "timestamp": "1499558400", + "volume": "4483.14413363" + }, + { + "close": "2323.45", + "high": "2527.88", + "low": "2261.85", + "open": "2504.00", + "timestamp": "1499644800", + "volume": "17296.34045274" + }, + { + "close": "2305.98", + "high": "2399.00", + "low": "2242.62", + "open": "2326.12", + "timestamp": "1499731200", + "volume": "17580.96163529" + }, + { + "close": "2388.00", + "high": "2408.84", + "low": "2239.54", + "open": "2301.55", + "timestamp": "1499817600", + "volume": "12883.55493809" + }, + { + "close": "2339.99", + "high": "2425.16", + "low": "2312.93", + "open": "2383.97", + "timestamp": "1499904000", + "volume": "8429.85040306" + }, + { + "close": "2213.37", + "high": "2357.84", + "low": "2140.00", + "open": "2340.00", + "timestamp": "1499990400", + "volume": "12659.01704362" + }, + { + "close": "1970.51", + "high": "2219.99", + "low": "1967.65", + "open": "2209.44", + "timestamp": "1500076800", + "volume": "19886.67952318" + }, + { + "close": "1917.63", + "high": "2044.44", + "low": "1830.00", + "open": "1970.51", + "timestamp": "1500163200", + "volume": "25562.70564457" + }, + { + "close": "2226.00", + "high": "2229.97", + "low": "1910.57", + "open": "1917.72", + "timestamp": "1500249600", + "volume": "26448.50140255" + }, + { + "close": "2303.71", + "high": "2392.00", + "low": "2164.00", + "open": "2226.00", + "timestamp": "1500336000", + "volume": "25204.48960246" + }, + { + "close": "2265.21", + "high": "2402.50", + "low": "2223.00", + "open": "2308.82", + "timestamp": "1500422400", + "volume": "17009.88349592" + }, + { + "close": "2875.03", + "high": "2938.00", + "low": "2265.51", + "open": "2265.51", + "timestamp": "1500508800", + "volume": "30989.89112526" + }, + { + "close": "2670.00", + "high": "2887.45", + "low": "2611.39", + "open": "2880.00", + "timestamp": "1500595200", + "volume": "20724.16050338" + }, + { + "close": "2832.71", + "high": "2882.00", + "low": "2644.59", + "open": "2667.01", + "timestamp": "1500681600", + "volume": "12819.63134804" + }, + { + "close": "2749.02", + "high": "2855.00", + "low": "2640.00", + "open": "2824.82", + "timestamp": "1500768000", + "volume": "11001.96460067" + }, + { + "close": "2759.98", + "high": "2800.00", + "low": "2701.00", + "open": "2756.80", + "timestamp": "1500854400", + "volume": "10001.91506610" + }, + { + "close": "2564.82", + "high": "2775.79", + "low": "2450.00", + "open": "2759.95", + "timestamp": "1500940800", + "volume": "21326.54783885" + }, + { + "close": "2524.99", + "high": "2608.96", + "low": "2400.00", + "open": "2564.74", + "timestamp": "1501027200", + "volume": "17713.67446580" + }, + { + "close": "2666.33", + "high": "2695.00", + "low": "2509.63", + "open": "2524.99", + "timestamp": "1501113600", + "volume": "11826.47519948" + }, + { + "close": "2777.01", + "high": "2825.00", + "low": "2655.82", + "open": "2666.33", + "timestamp": "1501200000", + "volume": "14069.50149214" + }, + { + "close": "2680.56", + "high": "2785.65", + "low": "2631.78", + "open": "2777.01", + "timestamp": "1501286400", + "volume": "10782.21753675" + }, + { + "close": "2742.37", + "high": "2774.45", + "low": "2569.69", + "open": "2681.60", + "timestamp": "1501372800", + "volume": "9678.16126067" + }, + { + "close": "2855.81", + "high": "2889.99", + "low": "2680.01", + "open": "2745.76", + "timestamp": "1501459200", + "volume": "11114.33554221" + }, + { + "close": "2731.00", + "high": "2929.17", + "low": "2615.00", + "open": "2855.81", + "timestamp": "1501545600", + "volume": "12525.07669112" + }, + { + "close": "2703.51", + "high": "2760.00", + "low": "2650.00", + "open": "2732.00", + "timestamp": "1501632000", + "volume": "9486.62552563" + }, + { + "close": "2793.37", + "high": "2807.44", + "low": "2698.83", + "open": "2703.51", + "timestamp": "1501718400", + "volume": "7963.69799924" + }, + { + "close": "2855.00", + "high": "2877.52", + "low": "2765.91", + "open": "2793.34", + "timestamp": "1501804800", + "volume": "7635.82167190" + }, + { + "close": "3263.62", + "high": "3339.66", + "low": "2848.32", + "open": "2851.01", + "timestamp": "1501891200", + "volume": "16996.27310091" + }, + { + "close": "3222.75", + "high": "3296.51", + "low": "3146.10", + "open": "3263.51", + "timestamp": "1501977600", + "volume": "5998.73578852" + }, + { + "close": "3387.55", + "high": "3430.00", + "low": "3186.00", + "open": "3216.78", + "timestamp": "1502064000", + "volume": "12046.11726501" + }, + { + "close": "3412.41", + "high": "3490.00", + "low": "3300.00", + "open": "3387.54", + "timestamp": "1502150400", + "volume": "15835.37020781" + }, + { + "close": "3342.99", + "high": "3423.10", + "low": "3178.72", + "open": "3408.46", + "timestamp": "1502236800", + "volume": "14286.84413824" + }, + { + "close": "3413.03", + "high": "3448.00", + "low": "3311.17", + "open": "3342.99", + "timestamp": "1502323200", + "volume": "9031.12128021" + }, + { + "close": "3645.06", + "high": "3705.00", + "low": "3390.67", + "open": "3410.00", + "timestamp": "1502409600", + "volume": "11927.37333424" + }, + { + "close": "3855.10", + "high": "3934.00", + "low": "3586.95", + "open": "3651.74", + "timestamp": "1502496000", + "volume": "12351.07466143" + }, + { + "close": "4053.87", + "high": "4190.00", + "low": "3841.71", + "open": "3855.04", + "timestamp": "1502582400", + "volume": "15889.82978854" + }, + { + "close": "4306.23", + "high": "4329.43", + "low": "3964.96", + "open": "4053.87", + "timestamp": "1502668800", + "volume": "14212.30420724" + }, + { + "close": "4155.67", + "high": "4400.00", + "low": "3800.00", + "open": "4320.95", + "timestamp": "1502755200", + "volume": "25515.71801437" + }, + { + "close": "4378.84", + "high": "4379.78", + "low": "3926.06", + "open": "4154.99", + "timestamp": "1502841600", + "volume": "12923.63728054" + }, + { + "close": "4276.50", + "high": "4480.00", + "low": "4167.21", + "open": "4361.99", + "timestamp": "1502928000", + "volume": "14573.18592909" + }, + { + "close": "4100.00", + "high": "4368.00", + "low": "3964.96", + "open": "4260.47", + "timestamp": "1503014400", + "volume": "17516.99336076" + }, + { + "close": "4099.55", + "high": "4188.00", + "low": "3900.00", + "open": "4100.00", + "timestamp": "1503100800", + "volume": "15036.18405113" + }, + { + "close": "4058.68", + "high": "4125.95", + "low": "4000.00", + "open": "4091.99", + "timestamp": "1503187200", + "volume": "6237.97289632" + }, + { + "close": "3987.52", + "high": "4080.00", + "low": "3949.78", + "open": "4058.64", + "timestamp": "1503273600", + "volume": "9782.05659401" + }, + { + "close": "4085.00", + "high": "4139.31", + "low": "3600.00", + "open": "3987.51", + "timestamp": "1503360000", + "volume": "23522.75816636" + }, + { + "close": "4108.12", + "high": "4248.97", + "low": "4051.94", + "open": "4078.00", + "timestamp": "1503446400", + "volume": "14979.40348147" + }, + { + "close": "4300.34", + "high": "4350.00", + "low": "4082.57", + "open": "4121.78", + "timestamp": "1503532800", + "volume": "10782.69436738" + }, + { + "close": "4355.98", + "high": "4449.98", + "low": "4270.00", + "open": "4308.80", + "timestamp": "1503619200", + "volume": "9699.61003374" + }, + { + "close": "4333.38", + "high": "4369.78", + "low": "4232.43", + "open": "4348.17", + "timestamp": "1503705600", + "volume": "6559.66860375" + }, + { + "close": "4337.68", + "high": "4393.30", + "low": "4290.32", + "open": "4333.38", + "timestamp": "1503792000", + "volume": "3979.12445283" + }, + { + "close": "4379.99", + "high": "4399.72", + "low": "4169.01", + "open": "4329.91", + "timestamp": "1503878400", + "volume": "8641.00244590" + }, + { + "close": "4578.82", + "high": "4649.78", + "low": "4336.26", + "open": "4385.00", + "timestamp": "1503964800", + "volume": "11879.64283069" + }, + { + "close": "4573.20", + "high": "4642.22", + "low": "4479.00", + "open": "4578.82", + "timestamp": "1504051200", + "volume": "8720.03503995" + }, + { + "close": "4734.26", + "high": "4765.21", + "low": "4566.66", + "open": "4573.15", + "timestamp": "1504137600", + "volume": "8911.41245939" + }, + { + "close": "4921.70", + "high": "4935.00", + "low": "4671.09", + "open": "4734.26", + "timestamp": "1504224000", + "volume": "15367.52969736" + }, + { + "close": "4599.90", + "high": "4979.90", + "low": "4488.50", + "open": "4921.71", + "timestamp": "1504310400", + "volume": "16977.79362226" + }, + { + "close": "4606.26", + "high": "4700.00", + "low": "4385.00", + "open": "4599.90", + "timestamp": "1504396800", + "volume": "11224.91455630" + }, + { + "close": "4277.00", + "high": "4613.97", + "low": "4058.50", + "open": "4603.68", + "timestamp": "1504483200", + "volume": "25069.12523005" + }, + { + "close": "4396.52", + "high": "4474.88", + "low": "4001.93", + "open": "4282.53", + "timestamp": "1504569600", + "volume": "20884.21969353" + }, + { + "close": "4605.80", + "high": "4649.23", + "low": "4356.42", + "open": "4397.38", + "timestamp": "1504656000", + "volume": "16634.10420534" + }, + { + "close": "4615.00", + "high": "4674.34", + "low": "4475.00", + "open": "4605.81", + "timestamp": "1504742400", + "volume": "9254.85142692" + }, + { + "close": "4312.00", + "high": "4679.97", + "low": "4125.99", + "open": "4615.00", + "timestamp": "1504828800", + "volume": "23693.30162259" + }, + { + "close": "4308.72", + "high": "4379.78", + "low": "4164.00", + "open": "4327.41", + "timestamp": "1504915200", + "volume": "9974.38823453" + }, + { + "close": "4226.22", + "high": "4322.44", + "low": "4010.00", + "open": "4322.44", + "timestamp": "1505001600", + "volume": "14724.20414387" + }, + { + "close": "4207.31", + "high": "4353.49", + "low": "4092.40", + "open": "4226.21", + "timestamp": "1505088000", + "volume": "11191.59504385" + }, + { + "close": "4172.56", + "high": "4377.65", + "low": "4080.00", + "open": "4198.89", + "timestamp": "1505174400", + "volume": "13294.43769742" + }, + { + "close": "3865.34", + "high": "4179.14", + "low": "3720.01", + "open": "4170.60", + "timestamp": "1505260800", + "volume": "29636.38096311" + }, + { + "close": "3227.79", + "high": "3921.74", + "low": "3210.00", + "open": "3861.89", + "timestamp": "1505347200", + "volume": "41319.39712570" + }, + { + "close": "3700.01", + "high": "3820.00", + "low": "2972.01", + "open": "3227.79", + "timestamp": "1505433600", + "volume": "60278.94654177" + }, + { + "close": "3678.93", + "high": "3872.90", + "low": "3500.00", + "open": "3699.89", + "timestamp": "1505520000", + "volume": "23158.22891071" + }, + { + "close": "3662.99", + "high": "3772.52", + "low": "3463.00", + "open": "3669.07", + "timestamp": "1505606400", + "volume": "11770.21765049" + }, + { + "close": "4101.60", + "high": "4122.70", + "low": "3659.42", + "open": "3662.95", + "timestamp": "1505692800", + "volume": "17207.59892439" + }, + { + "close": "3888.80", + "high": "4119.70", + "low": "3848.35", + "open": "4102.00", + "timestamp": "1505779200", + "volume": "15278.93044040" + }, + { + "close": "3874.46", + "high": "4050.00", + "low": "3820.56", + "open": "3888.80", + "timestamp": "1505865600", + "volume": "11660.27181331" + }, + { + "close": "3617.05", + "high": "3914.00", + "low": "3573.00", + "open": "3864.00", + "timestamp": "1505952000", + "volume": "17904.29717206" + }, + { + "close": "3612.18", + "high": "3761.84", + "low": "3514.00", + "open": "3607.83", + "timestamp": "1506038400", + "volume": "15007.73844949" + }, + { + "close": "3779.17", + "high": "3810.25", + "low": "3552.00", + "open": "3611.91", + "timestamp": "1506124800", + "volume": "10123.23213552" + }, + { + "close": "3664.22", + "high": "3783.25", + "low": "3615.00", + "open": "3781.13", + "timestamp": "1506211200", + "volume": "6508.72499023" + }, + { + "close": "3918.00", + "high": "3968.59", + "low": "3658.39", + "open": "3667.01", + "timestamp": "1506297600", + "volume": "14979.78226289" + }, + { + "close": "3888.03", + "high": "3970.00", + "low": "3850.61", + "open": "3920.66", + "timestamp": "1506384000", + "volume": "10014.62367124" + }, + { + "close": "4199.29", + "high": "4226.73", + "low": "3870.00", + "open": "3883.95", + "timestamp": "1506470400", + "volume": "15075.83871664" + }, + { + "close": "4184.84", + "high": "4270.01", + "low": "4123.50", + "open": "4202.34", + "timestamp": "1506556800", + "volume": "9625.92938226" + }, + { + "close": "4164.82", + "high": "4227.62", + "low": "4022.02", + "open": "4183.47", + "timestamp": "1506643200", + "volume": "12191.93065131" + }, + { + "close": "4326.09", + "high": "4349.00", + "low": "4154.28", + "open": "4162.04", + "timestamp": "1506729600", + "volume": "7496.78249925" + }, + { + "close": "4377.22", + "high": "4377.22", + "low": "4216.00", + "open": "4326.09", + "timestamp": "1506816000", + "volume": "7211.33513580" + }, + { + "close": "4391.48", + "high": "4453.00", + "low": "4352.00", + "open": "4369.33", + "timestamp": "1506902400", + "volume": "8259.81863150" + }, + { + "close": "4315.83", + "high": "4425.00", + "low": "4218.00", + "open": "4391.41", + "timestamp": "1506988800", + "volume": "12468.05725642" + }, + { + "close": "4219.53", + "high": "4343.00", + "low": "4170.07", + "open": "4315.73", + "timestamp": "1507075200", + "volume": "8518.99274917" + }, + { + "close": "4301.09", + "high": "4358.97", + "low": "4137.96", + "open": "4219.74", + "timestamp": "1507161600", + "volume": "8419.96284162" + }, + { + "close": "4362.95", + "high": "4425.00", + "low": "4278.40", + "open": "4301.09", + "timestamp": "1507248000", + "volume": "8377.30164966" + }, + { + "close": "4423.30", + "high": "4463.00", + "low": "4312.82", + "open": "4356.09", + "timestamp": "1507334400", + "volume": "4646.40562117" + }, + { + "close": "4597.98", + "high": "4612.00", + "low": "4404.50", + "open": "4422.72", + "timestamp": "1507420800", + "volume": "10083.86684927" + }, + { + "close": "4764.70", + "high": "4865.00", + "low": "4541.00", + "open": "4597.97", + "timestamp": "1507507200", + "volume": "12923.66661677" + }, + { + "close": "4749.29", + "high": "4909.97", + "low": "4700.00", + "open": "4761.67", + "timestamp": "1507593600", + "volume": "11666.02496241" + }, + { + "close": "4822.01", + "high": "4869.78", + "low": "4700.00", + "open": "4747.90", + "timestamp": "1507680000", + "volume": "9866.89562175" + }, + { + "close": "5445.00", + "high": "5445.00", + "low": "4793.66", + "open": "4822.01", + "timestamp": "1507766400", + "volume": "19916.22801995" + }, + { + "close": "5653.60", + "high": "5846.43", + "low": "5380.00", + "open": "5444.00", + "timestamp": "1507852800", + "volume": "27827.38028536" + }, + { + "close": "5801.29", + "high": "5817.34", + "low": "5558.26", + "open": "5653.58", + "timestamp": "1507939200", + "volume": "8410.93623080" + }, + { + "close": "5679.70", + "high": "5830.00", + "low": "5415.00", + "open": "5795.01", + "timestamp": "1508025600", + "volume": "11542.94583367" + }, + { + "close": "5745.72", + "high": "5807.11", + "low": "5548.00", + "open": "5683.92", + "timestamp": "1508112000", + "volume": "9066.79974453" + }, + { + "close": "5597.31", + "high": "5776.31", + "low": "5506.78", + "open": "5752.20", + "timestamp": "1508198400", + "volume": "9105.28187907" + }, + { + "close": "5582.05", + "high": "5617.75", + "low": "5101.36", + "open": "5591.97", + "timestamp": "1508284800", + "volume": "18961.67579669" + }, + { + "close": "5698.69", + "high": "5735.14", + "low": "5512.06", + "open": "5572.64", + "timestamp": "1508371200", + "volume": "9919.83821694" + }, + { + "close": "5977.29", + "high": "6074.00", + "low": "5589.80", + "open": "5700.00", + "timestamp": "1508457600", + "volume": "15109.06365101" + }, + { + "close": "6013.46", + "high": "6180.00", + "low": "5871.00", + "open": "5977.26", + "timestamp": "1508544000", + "volume": "15357.42373371" + }, + { + "close": "5969.00", + "high": "6071.07", + "low": "5700.00", + "open": "6010.85", + "timestamp": "1508630400", + "volume": "12232.52332991" + }, + { + "close": "5871.17", + "high": "6045.34", + "low": "5617.75", + "open": "5967.38", + "timestamp": "1508716800", + "volume": "15331.63502934" + }, + { + "close": "5523.40", + "high": "5870.00", + "low": "5453.01", + "open": "5869.82", + "timestamp": "1508803200", + "volume": "17286.72373931" + }, + { + "close": "5735.88", + "high": "5748.00", + "low": "5366.00", + "open": "5518.49", + "timestamp": "1508889600", + "volume": "12349.10670220" + }, + { + "close": "5890.00", + "high": "5988.00", + "low": "5683.00", + "open": "5741.35", + "timestamp": "1508976000", + "volume": "11788.30258919" + }, + { + "close": "5771.89", + "high": "5994.06", + "low": "5674.06", + "open": "5889.99", + "timestamp": "1509062400", + "volume": "11911.04199625" + }, + { + "close": "5730.69", + "high": "5875.66", + "low": "5646.18", + "open": "5773.03", + "timestamp": "1509148800", + "volume": "5926.29737158" + }, + { + "close": "6137.37", + "high": "6316.85", + "low": "5683.00", + "open": "5731.70", + "timestamp": "1509235200", + "volume": "16086.62569466" + }, + { + "close": "6119.99", + "high": "6229.77", + "low": "6024.03", + "open": "6133.01", + "timestamp": "1509321600", + "volume": "9574.64365313" + }, + { + "close": "6434.21", + "high": "6449.78", + "low": "6072.81", + "open": "6120.00", + "timestamp": "1509408000", + "volume": "13423.30855051" + }, + { + "close": "6741.59", + "high": "6756.36", + "low": "6340.01", + "open": "6434.24", + "timestamp": "1509494400", + "volume": "12967.22211638" + }, + { + "close": "7030.00", + "high": "7354.10", + "low": "6700.00", + "open": "6745.04", + "timestamp": "1509580800", + "volume": "26514.65119452" + }, + { + "close": "7146.82", + "high": "7500.00", + "low": "6925.22", + "open": "7030.00", + "timestamp": "1509667200", + "volume": "15999.78379684" + }, + { + "close": "7388.83", + "high": "7569.90", + "low": "6994.00", + "open": "7145.24", + "timestamp": "1509753600", + "volume": "9200.11461844" + }, + { + "close": "7372.72", + "high": "7590.00", + "low": "7275.16", + "open": "7388.79", + "timestamp": "1509840000", + "volume": "9218.32689776" + }, + { + "close": "6967.68", + "high": "7421.39", + "low": "6922.07", + "open": "7373.30", + "timestamp": "1509926400", + "volume": "19323.12875746" + }, + { + "close": "7130.28", + "high": "7244.69", + "low": "6945.00", + "open": "6967.64", + "timestamp": "1510012800", + "volume": "11634.26529651" + }, + { + "close": "7450.32", + "high": "7888.00", + "low": "7080.01", + "open": "7131.38", + "timestamp": "1510099200", + "volume": "24679.72054960" + }, + { + "close": "7148.00", + "high": "7490.00", + "low": "7061.20", + "open": "7465.06", + "timestamp": "1510185600", + "volume": "14799.26577204" + }, + { + "close": "6588.18", + "high": "7343.18", + "low": "6429.44", + "open": "7150.61", + "timestamp": "1510272000", + "volume": "26614.27605231" + }, + { + "close": "6355.13", + "high": "6820.00", + "low": "6218.00", + "open": "6588.18", + "timestamp": "1510358400", + "volume": "14942.70255533" + }, + { + "close": "5870.37", + "high": "6488.88", + "low": "5555.55", + "open": "6355.13", + "timestamp": "1510444800", + "volume": "37315.15663980" + }, + { + "close": "6525.17", + "high": "6775.75", + "low": "5846.00", + "open": "5870.03", + "timestamp": "1510531200", + "volume": "27202.28180796" + }, + { + "close": "6609.00", + "high": "6750.00", + "low": "6466.88", + "open": "6524.69", + "timestamp": "1510617600", + "volume": "12072.05308804" + }, + { + "close": "7294.00", + "high": "7350.00", + "low": "6609.00", + "open": "6609.00", + "timestamp": "1510704000", + "volume": "16869.89791295" + }, + { + "close": "7846.96", + "high": "7976.79", + "low": "7120.85", + "open": "7294.00", + "timestamp": "1510790400", + "volume": "19272.37147666" + }, + { + "close": "7674.99", + "high": "7997.00", + "low": "7528.50", + "open": "7846.96", + "timestamp": "1510876800", + "volume": "17714.36787452" + }, + { + "close": "7771.03", + "high": "7858.00", + "low": "7431.54", + "open": "7675.00", + "timestamp": "1510963200", + "volume": "7326.81014016" + }, + { + "close": "8016.58", + "high": "8087.35", + "low": "7675.00", + "open": "7775.55", + "timestamp": "1511049600", + "volume": "8307.77750857" + }, + { + "close": "8226.17", + "high": "8269.99", + "low": "7900.00", + "open": "8016.58", + "timestamp": "1511136000", + "volume": "8179.45772727" + }, + { + "close": "8095.23", + "high": "8354.46", + "low": "7770.00", + "open": "8226.14", + "timestamp": "1511222400", + "volume": "13686.51123870" + }, + { + "close": "8214.69", + "high": "8310.89", + "low": "8045.76", + "open": "8095.19", + "timestamp": "1511308800", + "volume": "8078.58080138" + }, + { + "close": "7989.00", + "high": "8279.76", + "low": "7980.00", + "open": "8214.69", + "timestamp": "1511395200", + "volume": "7811.79339997" + }, + { + "close": "8199.19", + "high": "8340.00", + "low": "7876.00", + "open": "7988.96", + "timestamp": "1511481600", + "volume": "9289.98925704" + }, + { + "close": "8717.99", + "high": "8737.00", + "low": "8114.78", + "open": "8199.83", + "timestamp": "1511568000", + "volume": "11611.66637888" + }, + { + "close": "9271.06", + "high": "9366.60", + "low": "8538.20", + "open": "8718.00", + "timestamp": "1511654400", + "volume": "12021.21548696" + }, + { + "close": "9708.07", + "high": "9721.70", + "low": "9267.00", + "open": "9278.99", + "timestamp": "1511740800", + "volume": "13272.45254013" + }, + { + "close": "9868.82", + "high": "9968.00", + "low": "9582.25", + "open": "9708.06", + "timestamp": "1511827200", + "volume": "11214.92993115" + }, + { + "close": "9824.68", + "high": "11395.00", + "low": "9250.00", + "open": "9877.63", + "timestamp": "1511913600", + "volume": "33432.33996208" + }, + { + "close": "9947.67", + "high": "10618.29", + "low": "9000.00", + "open": "9833.70", + "timestamp": "1512000000", + "volume": "25433.45836367" + }, + { + "close": "10840.45", + "high": "10949.89", + "low": "9370.11", + "open": "9927.29", + "timestamp": "1512086400", + "volume": "16708.03224846" + }, + { + "close": "10872.00", + "high": "11200.00", + "low": "10637.69", + "open": "10840.45", + "timestamp": "1512172800", + "volume": "9267.16105468" + }, + { + "close": "11250.00", + "high": "11800.01", + "low": "10513.16", + "open": "10875.68", + "timestamp": "1512259200", + "volume": "14238.52587700" + }, + { + "close": "11613.07", + "high": "11613.07", + "low": "10850.00", + "open": "11250.00", + "timestamp": "1512345600", + "volume": "13621.48197282" + }, + { + "close": "11677.00", + "high": "11850.00", + "low": "11384.25", + "open": "11613.07", + "timestamp": "1512432000", + "volume": "11875.03377686" + }, + { + "close": "13623.50", + "high": "13700.00", + "low": "11659.80", + "open": "11676.99", + "timestamp": "1512518400", + "volume": "19784.87348713" + }, + { + "close": "16599.99", + "high": "16615.62", + "low": "13085.90", + "open": "13623.00", + "timestamp": "1512604800", + "volume": "25787.67655646" + }, + { + "close": "15800.00", + "high": "16666.66", + "low": "13482.42", + "open": "16599.99", + "timestamp": "1512691200", + "volume": "25473.39531065" + }, + { + "close": "14607.49", + "high": "15998.50", + "low": "12701.05", + "open": "15799.87", + "timestamp": "1512777600", + "volume": "16587.47292694" + }, + { + "close": "14691.00", + "high": "15385.00", + "low": "13011.00", + "open": "14601.01", + "timestamp": "1512864000", + "volume": "18487.98304099" + }, + { + "close": "16470.00", + "high": "17270.00", + "low": "14677.19", + "open": "14690.99", + "timestamp": "1512950400", + "volume": "16583.72315538" + }, + { + "close": "16650.01", + "high": "17428.42", + "low": "15967.29", + "open": "16470.00", + "timestamp": "1513036800", + "volume": "13517.89210328" + }, + { + "close": "16250.00", + "high": "17107.03", + "low": "15497.69", + "open": "16650.01", + "timestamp": "1513123200", + "volume": "17136.70585820" + }, + { + "close": "16404.99", + "high": "16830.45", + "low": "15852.69", + "open": "16245.02", + "timestamp": "1513209600", + "volume": "13409.52428786" + }, + { + "close": "17471.50", + "high": "17934.00", + "low": "16337.19", + "open": "16404.99", + "timestamp": "1513296000", + "volume": "18998.38813709" + }, + { + "close": "19187.78", + "high": "19377.00", + "low": "17269.99", + "open": "17477.98", + "timestamp": "1513382400", + "volume": "9761.22080853" + }, + { + "close": "18953.00", + "high": "19666.00", + "low": "18465.00", + "open": "19187.78", + "timestamp": "1513468800", + "volume": "9749.24915462" + }, + { + "close": "18940.57", + "high": "19220.00", + "low": "17835.20", + "open": "18953.00", + "timestamp": "1513555200", + "volume": "14678.94144797" + }, + { + "close": "17700.00", + "high": "19160.79", + "low": "16831.26", + "open": "18940.58", + "timestamp": "1513641600", + "volume": "21528.13766503" + }, + { + "close": "16466.98", + "high": "17950.00", + "low": "15343.04", + "open": "17700.00", + "timestamp": "1513728000", + "volume": "31172.22880670" + }, + { + "close": "15600.01", + "high": "17281.17", + "low": "15005.00", + "open": "16466.98", + "timestamp": "1513814400", + "volume": "20377.86043859" + }, + { + "close": "14009.79", + "high": "15795.61", + "low": "11159.93", + "open": "15600.00", + "timestamp": "1513900800", + "volume": "57444.88580326" + }, + { + "close": "14619.00", + "high": "15756.22", + "low": "13496.48", + "open": "13980.00", + "timestamp": "1513987200", + "volume": "21786.40866420" + }, + { + "close": "14157.87", + "high": "14619.10", + "low": "12488.00", + "open": "14619.00", + "timestamp": "1514073600", + "volume": "18519.48932254" + }, + { + "close": "13911.28", + "high": "14650.00", + "low": "13210.00", + "open": "14107.87", + "timestamp": "1514160000", + "volume": "11564.54433309" + }, + { + "close": "15764.44", + "high": "16147.87", + "low": "13746.95", + "open": "13925.50", + "timestamp": "1514246400", + "volume": "15051.16401761" + }, + { + "close": "15364.93", + "high": "16480.52", + "low": "14484.00", + "open": "15764.45", + "timestamp": "1514332800", + "volume": "15643.75488215" + }, + { + "close": "14470.07", + "high": "15474.19", + "low": "13500.00", + "open": "15390.05", + "timestamp": "1514419200", + "volume": "16557.21732271" + }, + { + "close": "14340.00", + "high": "15111.00", + "low": "13998.00", + "open": "14436.99", + "timestamp": "1514505600", + "volume": "13505.70299216" + }, + { + "close": "12640.00", + "high": "14463.28", + "low": "12050.00", + "open": "14351.00", + "timestamp": "1514592000", + "volume": "21749.67444609" + }, + { + "close": "13880.00", + "high": "14296.06", + "low": "12491.21", + "open": "12640.00", + "timestamp": "1514678400", + "volume": "11583.41864698" + }, + { + "close": "13443.41", + "high": "13941.75", + "low": "12801.38", + "open": "13880.00", + "timestamp": "1514764800", + "volume": "7688.03068460" + }, + { + "close": "14678.94", + "high": "15257.53", + "low": "12910.58", + "open": "13394.20", + "timestamp": "1514851200", + "volume": "16299.66930279" + }, + { + "close": "15155.62", + "high": "15500.00", + "low": "14546.28", + "open": "14670.96", + "timestamp": "1514937600", + "volume": "12275.00119668" + }, + { + "close": "15143.67", + "high": "15430.27", + "low": "14192.37", + "open": "15155.62", + "timestamp": "1515024000", + "volume": "15004.01859256" + }, + { + "close": "16928.00", + "high": "17200.00", + "low": "14810.00", + "open": "15143.67", + "timestamp": "1515110400", + "volume": "16248.91467956" + }, + { + "close": "17149.67", + "high": "17234.99", + "low": "16220.00", + "open": "16927.99", + "timestamp": "1515196800", + "volume": "9501.01675546" + }, + { + "close": "16124.02", + "high": "17149.97", + "low": "15707.16", + "open": "17142.43", + "timestamp": "1515283200", + "volume": "8632.81384337" + }, + { + "close": "14999.99", + "high": "16300.00", + "low": "13900.00", + "open": "16173.98", + "timestamp": "1515369600", + "volume": "16676.34994239" + }, + { + "close": "14403.51", + "high": "15367.18", + "low": "14123.97", + "open": "14999.99", + "timestamp": "1515456000", + "volume": "13913.52469368" + }, + { + "close": "14890.02", + "high": "14900.00", + "low": "13412.00", + "open": "14403.51", + "timestamp": "1515542400", + "volume": "18479.01253046" + }, + { + "close": "13243.83", + "high": "14973.07", + "low": "12800.00", + "open": "14899.99", + "timestamp": "1515628800", + "volume": "19630.07517112" + }, + { + "close": "13781.41", + "high": "14152.19", + "low": "12807.27", + "open": "13249.99", + "timestamp": "1515715200", + "volume": "13433.08481363" + }, + { + "close": "14197.78", + "high": "14619.10", + "low": "13789.42", + "open": "13829.28", + "timestamp": "1515801600", + "volume": "7488.98701847" + }, + { + "close": "13647.99", + "high": "14365.81", + "low": "13072.22", + "open": "14197.78", + "timestamp": "1515888000", + "volume": "7588.63558972" + }, + { + "close": "13607.04", + "high": "14394.36", + "low": "13429.25", + "open": "13647.99", + "timestamp": "1515974400", + "volume": "9444.63530824" + }, + { + "close": "11386.34", + "high": "13607.04", + "low": "10162.00", + "open": "13581.66", + "timestamp": "1516060800", + "volume": "38789.88308789" + }, + { + "close": "11191.35", + "high": "11794.07", + "low": "9222.00", + "open": "11393.97", + "timestamp": "1516147200", + "volume": "41356.18973790" + }, + { + "close": "11247.57", + "high": "12146.00", + "low": "10693.00", + "open": "11199.00", + "timestamp": "1516233600", + "volume": "22195.26202056" + }, + { + "close": "11552.00", + "high": "12050.39", + "low": "11025.18", + "open": "11290.90", + "timestamp": "1516320000", + "volume": "13203.25567513" + }, + { + "close": "12775.99", + "high": "13052.12", + "low": "11515.94", + "open": "11560.82", + "timestamp": "1516406400", + "volume": "10324.05733414" + }, + { + "close": "11558.87", + "high": "12791.88", + "low": "11100.00", + "open": "12782.99", + "timestamp": "1516492800", + "volume": "11596.44128787" + }, + { + "close": "10808.99", + "high": "11910.78", + "low": "10028.41", + "open": "11558.87", + "timestamp": "1516579200", + "volume": "17067.72925582" + }, + { + "close": "10851.82", + "high": "11409.87", + "low": "9927.54", + "open": "10810.00", + "timestamp": "1516665600", + "volume": "17250.17614645" + }, + { + "close": "11400.96", + "high": "11500.00", + "low": "10488.13", + "open": "10848.99", + "timestamp": "1516752000", + "volume": "11646.79059794" + }, + { + "close": "11155.54", + "high": "11741.82", + "low": "10868.57", + "open": "11400.98", + "timestamp": "1516838400", + "volume": "10212.92183381" + }, + { + "close": "11092.95", + "high": "11635.00", + "low": "10263.32", + "open": "11140.01", + "timestamp": "1516924800", + "volume": "15074.66641243" + }, + { + "close": "11446.54", + "high": "11630.47", + "low": "10815.84", + "open": "11093.74", + "timestamp": "1517011200", + "volume": "10309.80746248" + }, + { + "close": "11685.58", + "high": "11989.15", + "low": "11360.52", + "open": "11446.54", + "timestamp": "1517097600", + "volume": "9956.09249576" + }, + { + "close": "11162.62", + "high": "11820.01", + "low": "10991.00", + "open": "11685.58", + "timestamp": "1517184000", + "volume": "9996.35689848" + }, + { + "close": "9971.00", + "high": "11222.36", + "low": "9731.20", + "open": "11162.62", + "timestamp": "1517270400", + "volume": "21082.19252764" + }, + { + "close": "10149.00", + "high": "10324.00", + "low": "9514.96", + "open": "9971.00", + "timestamp": "1517356800", + "volume": "12743.50947059" + }, + { + "close": "8998.99", + "high": "10187.56", + "low": "8455.00", + "open": "10148.99", + "timestamp": "1517443200", + "volume": "26356.58883931" + }, + { + "close": "8838.83", + "high": "9096.79", + "low": "7625.25", + "open": "9010.87", + "timestamp": "1517529600", + "volume": "44406.01982931" + }, + { + "close": "9225.86", + "high": "9491.20", + "low": "8170.71", + "open": "8838.29", + "timestamp": "1517616000", + "volume": "16208.37411342" + }, + { + "close": "8191.00", + "high": "9350.09", + "low": "7825.00", + "open": "9225.31", + "timestamp": "1517702400", + "volume": "19110.67246079" + }, + { + "close": "6874.27", + "high": "8335.56", + "low": "6600.00", + "open": "8190.78", + "timestamp": "1517788800", + "volume": "46544.42880431" + }, + { + "close": "7737.37", + "high": "8150.00", + "low": "5920.72", + "open": "6878.65", + "timestamp": "1517875200", + "volume": "70961.36965826" + }, + { + "close": "7588.01", + "high": "8649.00", + "low": "7213.80", + "open": "7737.26", + "timestamp": "1517961600", + "volume": "32640.89253754" + }, + { + "close": "8259.76", + "high": "8644.36", + "low": "7565.50", + "open": "7588.01", + "timestamp": "1518048000", + "volume": "22746.39118112" + }, + { + "close": "8693.98", + "high": "8779.62", + "low": "7753.32", + "open": "8259.42", + "timestamp": "1518134400", + "volume": "18418.11709042" + }, + { + "close": "8560.00", + "high": "9090.80", + "low": "8170.86", + "open": "8693.98", + "timestamp": "1518220800", + "volume": "14670.55870203" + }, + { + "close": "8067.00", + "high": "8560.00", + "low": "7820.00", + "open": "8560.00", + "timestamp": "1518307200", + "volume": "12711.78584570" + }, + { + "close": "8899.00", + "high": "8995.00", + "low": "8067.00", + "open": "8077.25", + "timestamp": "1518393600", + "volume": "15071.04029684" + }, + { + "close": "8522.99", + "high": "8951.89", + "low": "8360.13", + "open": "8891.20", + "timestamp": "1518480000", + "volume": "11374.52415254" + }, + { + "close": "9490.98", + "high": "9515.00", + "low": "8504.57", + "open": "8504.57", + "timestamp": "1518566400", + "volume": "17468.73886593" + }, + { + "close": "10018.00", + "high": "10234.00", + "low": "9350.00", + "open": "9490.98", + "timestamp": "1518652800", + "volume": "21036.33731750" + }, + { + "close": "10196.00", + "high": "10300.00", + "low": "9707.51", + "open": "10011.30", + "timestamp": "1518739200", + "volume": "11857.64277513" + }, + { + "close": "11101.00", + "high": "11135.83", + "low": "10053.50", + "open": "10203.14", + "timestamp": "1518825600", + "volume": "14511.16913676" + }, + { + "close": "10421.06", + "high": "11300.00", + "low": "10153.15", + "open": "11101.00", + "timestamp": "1518912000", + "volume": "17623.07943135" + }, + { + "close": "11173.00", + "high": "11262.48", + "low": "10307.51", + "open": "10433.68", + "timestamp": "1518998400", + "volume": "11698.25622611" + }, + { + "close": "11233.41", + "high": "11780.00", + "low": "11080.37", + "open": "11159.12", + "timestamp": "1519084800", + "volume": "15880.90903980" + }, + { + "close": "10449.40", + "high": "11275.74", + "low": "10256.00", + "open": "11233.42", + "timestamp": "1519171200", + "volume": "19959.67715652" + }, + { + "close": "9843.34", + "high": "10935.00", + "low": "9731.20", + "open": "10446.79", + "timestamp": "1519257600", + "volume": "20204.69095384" + }, + { + "close": "10166.10", + "high": "10405.30", + "low": "9600.00", + "open": "9843.33", + "timestamp": "1519344000", + "volume": "16044.03930333" + }, + { + "close": "9689.99", + "high": "10540.63", + "low": "9373.48", + "open": "10135.20", + "timestamp": "1519430400", + "volume": "13972.71472351" + }, + { + "close": "9590.04", + "high": "9883.41", + "low": "9260.00", + "open": "9688.26", + "timestamp": "1519516800", + "volume": "11037.17695269" + }, + { + "close": "10324.70", + "high": "10461.97", + "low": "9376.34", + "open": "9595.99", + "timestamp": "1519603200", + "volume": "16156.80505618" + }, + { + "close": "10566.30", + "high": "10850.00", + "low": "10150.00", + "open": "10329.99", + "timestamp": "1519689600", + "volume": "10408.47993775" + }, + { + "close": "10314.90", + "high": "11064.75", + "low": "10255.07", + "open": "10572.49", + "timestamp": "1519776000", + "volume": "10490.74905816" + }, + { + "close": "10903.13", + "high": "11090.00", + "low": "10223.41", + "open": "10314.99", + "timestamp": "1519862400", + "volume": "9481.66514611" + }, + { + "close": "11029.99", + "high": "11175.00", + "low": "10774.01", + "open": "10917.37", + "timestamp": "1519948800", + "volume": "8329.09790086" + }, + { + "close": "11445.00", + "high": "11503.24", + "low": "11022.85", + "open": "11032.81", + "timestamp": "1520035200", + "volume": "7786.26753951" + }, + { + "close": "11463.27", + "high": "11511.00", + "low": "11054.91", + "open": "11445.00", + "timestamp": "1520121600", + "volume": "6831.63070279" + }, + { + "close": "11419.24", + "high": "11688.00", + "low": "11383.66", + "open": "11479.68", + "timestamp": "1520208000", + "volume": "9933.67623336" + }, + { + "close": "10723.76", + "high": "11420.01", + "low": "10560.19", + "open": "11417.39", + "timestamp": "1520294400", + "volume": "14734.41949313" + }, + { + "close": "9913.03", + "high": "10911.78", + "low": "9450.00", + "open": "10723.01", + "timestamp": "1520380800", + "volume": "26116.51184803" + }, + { + "close": "9285.32", + "high": "10150.00", + "low": "9078.95", + "open": "9904.52", + "timestamp": "1520467200", + "volume": "22522.42746991" + }, + { + "close": "9230.00", + "high": "9420.39", + "low": "8366.00", + "open": "9293.06", + "timestamp": "1520553600", + "volume": "29014.16684454" + }, + { + "close": "8791.47", + "high": "9514.96", + "low": "8697.00", + "open": "9228.83", + "timestamp": "1520640000", + "volume": "12886.58857926" + }, + { + "close": "9535.04", + "high": "9768.37", + "low": "8450.00", + "open": "8795.04", + "timestamp": "1520726400", + "volume": "16407.54237557" + }, + { + "close": "9120.75", + "high": "9892.00", + "low": "8742.07", + "open": "9535.04", + "timestamp": "1520812800", + "volume": "18751.02057959" + }, + { + "close": "9142.32", + "high": "9482.79", + "low": "8830.00", + "open": "9115.24", + "timestamp": "1520899200", + "volume": "16001.47534639" + }, + { + "close": "8196.69", + "high": "9356.14", + "low": "7948.00", + "open": "9152.07", + "timestamp": "1520985600", + "volume": "21191.02313580" + }, + { + "close": "8265.05", + "high": "8425.00", + "low": "7682.00", + "open": "8195.99", + "timestamp": "1521072000", + "volume": "18387.61138793" + }, + { + "close": "8258.54", + "high": "8613.06", + "low": "7914.08", + "open": "8265.05", + "timestamp": "1521158400", + "volume": "16498.62433531" + }, + { + "close": "7860.83", + "high": "8356.40", + "low": "7730.23", + "open": "8258.54", + "timestamp": "1521244800", + "volume": "12048.66889140" + }, + { + "close": "8188.24", + "high": "8324.92", + "low": "7325.37", + "open": "7860.83", + "timestamp": "1521331200", + "volume": "19547.36114711" + }, + { + "close": "8596.93", + "high": "8718.74", + "low": "8114.17", + "open": "8205.55", + "timestamp": "1521417600", + "volume": "19396.08835883" + }, + { + "close": "8904.02", + "high": "9051.00", + "low": "8313.01", + "open": "8596.79", + "timestamp": "1521504000", + "volume": "13454.82226040" + }, + { + "close": "8893.79", + "high": "9188.10", + "low": "8754.83", + "open": "8904.02", + "timestamp": "1521590400", + "volume": "12100.99713332" + }, + { + "close": "8704.67", + "high": "9099.59", + "low": "8503.52", + "open": "8892.18", + "timestamp": "1521676800", + "volume": "12587.63392229" + }, + { + "close": "8920.79", + "high": "8920.79", + "low": "8265.00", + "open": "8708.52", + "timestamp": "1521763200", + "volume": "13749.78486097" + }, + { + "close": "8547.00", + "high": "9020.00", + "low": "8505.00", + "open": "8917.99", + "timestamp": "1521849600", + "volume": "9731.98236841" + }, + { + "close": "8453.90", + "high": "8680.00", + "low": "8368.63", + "open": "8541.96", + "timestamp": "1521936000", + "volume": "9155.91214778" + }, + { + "close": "8149.66", + "high": "8500.00", + "low": "7831.15", + "open": "8451.12", + "timestamp": "1522022400", + "volume": "17693.41533930" + }, + { + "close": "7791.70", + "high": "8211.62", + "low": "7742.11", + "open": "8152.26", + "timestamp": "1522108800", + "volume": "12385.25028422" + }, + { + "close": "7932.41", + "high": "8104.98", + "low": "7723.03", + "open": "7791.69", + "timestamp": "1522195200", + "volume": "8437.64467971" + }, + { + "close": "7088.38", + "high": "7968.00", + "low": "6914.53", + "open": "7932.41", + "timestamp": "1522281600", + "volume": "22138.11413228" + }, + { + "close": "6850.00", + "high": "7302.35", + "low": "6550.00", + "open": "7086.14", + "timestamp": "1522368000", + "volume": "29101.44802706" + }, + { + "close": "6928.62", + "high": "7231.73", + "low": "6794.26", + "open": "6839.63", + "timestamp": "1522454400", + "volume": "11579.59705718" + }, + { + "close": "6813.52", + "high": "7045.71", + "low": "6427.16", + "open": "6926.50", + "timestamp": "1522540800", + "volume": "18046.94087395" + }, + { + "close": "7052.76", + "high": "7106.50", + "low": "6759.96", + "open": "6816.31", + "timestamp": "1522627200", + "volume": "13624.16035566" + }, + { + "close": "7416.27", + "high": "7506.84", + "low": "7001.28", + "open": "7052.75", + "timestamp": "1522713600", + "volume": "16089.54162903" + }, + { + "close": "6799.95", + "high": "7430.00", + "low": "6710.38", + "open": "7415.53", + "timestamp": "1522800000", + "volume": "15779.20246661" + }, + { + "close": "6771.69", + "high": "6928.70", + "low": "6578.95", + "open": "6799.37", + "timestamp": "1522886400", + "volume": "11894.53597807" + }, + { + "close": "6618.33", + "high": "6850.00", + "low": "6510.00", + "open": "6771.30", + "timestamp": "1522972800", + "volume": "8478.41806897" + }, + { + "close": "6904.90", + "high": "7069.13", + "low": "6600.99", + "open": "6627.70", + "timestamp": "1523059200", + "volume": "7683.04165260" + }, + { + "close": "7027.26", + "high": "7104.52", + "low": "6894.80", + "open": "6904.21", + "timestamp": "1523145600", + "volume": "4352.69794202" + }, + { + "close": "6780.10", + "high": "7175.83", + "low": "6611.49", + "open": "7027.26", + "timestamp": "1523232000", + "volume": "10103.91621615" + }, + { + "close": "6835.67", + "high": "6900.00", + "low": "6653.21", + "open": "6782.39", + "timestamp": "1523318400", + "volume": "6480.19276418" + }, + { + "close": "6940.94", + "high": "6984.92", + "low": "6809.26", + "open": "6824.75", + "timestamp": "1523404800", + "volume": "5825.41064556" + }, + { + "close": "7923.78", + "high": "8069.34", + "low": "6758.45", + "open": "6940.94", + "timestamp": "1523491200", + "volume": "19033.38033440" + }, + { + "close": "7896.92", + "high": "8239.33", + "low": "7753.32", + "open": "7923.78", + "timestamp": "1523577600", + "volume": "19605.94275077" + }, + { + "close": "8000.41", + "high": "8232.14", + "low": "7835.00", + "open": "7885.90", + "timestamp": "1523664000", + "volume": "8935.53071477" + }, + { + "close": "8354.22", + "high": "8417.00", + "low": "8001.23", + "open": "8003.39", + "timestamp": "1523750400", + "volume": "7542.84081564" + }, + { + "close": "8048.15", + "high": "8424.99", + "low": "7905.00", + "open": "8353.43", + "timestamp": "1523836800", + "volume": "10866.60295749" + }, + { + "close": "7890.87", + "high": "8160.85", + "low": "7806.81", + "open": "8054.68", + "timestamp": "1523923200", + "volume": "9277.15121538" + }, + { + "close": "8172.84", + "high": "8235.00", + "low": "7870.35", + "open": "7890.87", + "timestamp": "1524009600", + "volume": "9227.20459808" + }, + { + "close": "8271.31", + "high": "8297.99", + "low": "8074.44", + "open": "8172.83", + "timestamp": "1524096000", + "volume": "9436.84632763" + }, + { + "close": "8861.00", + "high": "8934.00", + "low": "8216.90", + "open": "8273.00", + "timestamp": "1524182400", + "volume": "16059.62267134" + }, + { + "close": "8920.71", + "high": "9023.40", + "low": "8608.00", + "open": "8865.78", + "timestamp": "1524268800", + "volume": "15336.30792743" + }, + { + "close": "8789.96", + "high": "9036.52", + "low": "8760.00", + "open": "8924.93", + "timestamp": "1524355200", + "volume": "9346.45175925" + }, + { + "close": "8946.95", + "high": "9006.39", + "low": "8771.22", + "open": "8781.70", + "timestamp": "1524441600", + "volume": "10286.11771490" + }, + { + "close": "9648.00", + "high": "9737.16", + "low": "8930.00", + "open": "8942.00", + "timestamp": "1524528000", + "volume": "20460.50898304" + }, + { + "close": "8864.99", + "high": "9755.53", + "low": "8751.00", + "open": "9648.36", + "timestamp": "1524614400", + "volume": "33035.90404482" + }, + { + "close": "9274.48", + "high": "9326.79", + "low": "8647.29", + "open": "8855.07", + "timestamp": "1524700800", + "volume": "20042.96970211" + }, + { + "close": "8921.43", + "high": "9387.82", + "low": "8901.09", + "open": "9277.32", + "timestamp": "1524787200", + "volume": "11375.51437547" + }, + { + "close": "9345.11", + "high": "9442.34", + "low": "8854.47", + "open": "8916.54", + "timestamp": "1524873600", + "volume": "15558.40230193" + }, + { + "close": "9393.99", + "high": "9538.75", + "low": "9180.00", + "open": "9352.97", + "timestamp": "1524960000", + "volume": "10940.71803063" + }, + { + "close": "9242.17", + "high": "9443.96", + "low": "9111.00", + "open": "9396.32", + "timestamp": "1525046400", + "volume": "8085.68829456" + }, + { + "close": "9066.90", + "high": "9249.99", + "low": "8815.91", + "open": "9243.51", + "timestamp": "1525132800", + "volume": "12138.26396050" + }, + { + "close": "9222.00", + "high": "9259.16", + "low": "8975.23", + "open": "9066.90", + "timestamp": "1525219200", + "volume": "10575.17497792" + }, + { + "close": "9732.43", + "high": "9799.99", + "low": "9165.19", + "open": "9220.00", + "timestamp": "1525305600", + "volume": "11670.79957863" + }, + { + "close": "9696.57", + "high": "9784.73", + "low": "9527.38", + "open": "9737.00", + "timestamp": "1525392000", + "volume": "7326.05207111" + }, + { + "close": "9823.28", + "high": "9948.98", + "low": "9670.68", + "open": "9689.00", + "timestamp": "1525478400", + "volume": "7403.10502352" + }, + { + "close": "9623.54", + "high": "9918.41", + "low": "9375.00", + "open": "9827.04", + "timestamp": "1525564800", + "volume": "8155.57685660" + }, + { + "close": "9359.52", + "high": "9634.50", + "low": "9175.00", + "open": "9621.99", + "timestamp": "1525651200", + "volume": "13616.34859330" + }, + { + "close": "9167.69", + "high": "9450.00", + "low": "9015.00", + "open": "9356.79", + "timestamp": "1525737600", + "volume": "11418.31053651" + }, + { + "close": "9308.49", + "high": "9368.79", + "low": "8974.62", + "open": "9181.52", + "timestamp": "1525824000", + "volume": "11368.83432539" + }, + { + "close": "9020.99", + "high": "9393.00", + "low": "8987.74", + "open": "9308.49", + "timestamp": "1525910400", + "volume": "11764.97750570" + }, + { + "close": "8411.42", + "high": "9018.38", + "low": "8351.00", + "open": "9007.19", + "timestamp": "1525996800", + "volume": "20383.92660992" + }, + { + "close": "8481.60", + "high": "8652.80", + "low": "8208.81", + "open": "8408.79", + "timestamp": "1526083200", + "volume": "15464.92940302" + }, + { + "close": "8696.58", + "high": "8775.90", + "low": "8335.56", + "open": "8481.72", + "timestamp": "1526169600", + "volume": "9835.22450915" + }, + { + "close": "8674.36", + "high": "8900.90", + "low": "8286.57", + "open": "8696.54", + "timestamp": "1526256000", + "volume": "18861.93709627" + }, + { + "close": "8474.99", + "high": "8865.00", + "low": "8400.00", + "open": "8674.53", + "timestamp": "1526342400", + "volume": "12391.83198691" + }, + { + "close": "8346.59", + "high": "8505.33", + "low": "8100.01", + "open": "8481.99", + "timestamp": "1526428800", + "volume": "12705.12321984" + }, + { + "close": "8067.03", + "high": "8500.00", + "low": "7980.00", + "open": "8337.77", + "timestamp": "1526515200", + "volume": "8259.12452442" + }, + { + "close": "8248.87", + "high": "8275.10", + "low": "7929.53", + "open": "8058.16", + "timestamp": "1526601600", + "volume": "7181.20388348" + }, + { + "close": "8231.20", + "high": "8395.00", + "low": "8141.08", + "open": "8248.99", + "timestamp": "1526688000", + "volume": "3784.07576637" + }, + { + "close": "8518.48", + "high": "8590.00", + "low": "8170.71", + "open": "8225.55", + "timestamp": "1526774400", + "volume": "5314.99889979" + }, + { + "close": "8391.76", + "high": "8589.10", + "low": "8320.00", + "open": "8518.64", + "timestamp": "1526860800", + "volume": "6126.97105348" + }, + { + "close": "7984.08", + "high": "8417.65", + "low": "7951.41", + "open": "8403.23", + "timestamp": "1526947200", + "volume": "9101.06078693" + }, + { + "close": "7502.89", + "high": "8032.01", + "low": "7435.49", + "open": "7983.98", + "timestamp": "1527033600", + "volume": "17635.90129337" + }, + { + "close": "7586.88", + "high": "7733.99", + "low": "7267.24", + "open": "7509.99", + "timestamp": "1527120000", + "volume": "11648.36524358" + }, + { + "close": "7471.18", + "high": "7661.07", + "low": "7328.13", + "open": "7579.30", + "timestamp": "1527206400", + "volume": "10088.84331121" + }, + { + "close": "7335.99", + "high": "7622.87", + "low": "7276.04", + "open": "7459.21", + "timestamp": "1527292800", + "volume": "4043.55765023" + }, + { + "close": "7347.39", + "high": "7412.57", + "low": "7213.09", + "open": "7335.99", + "timestamp": "1527379200", + "volume": "3144.45110906" + }, + { + "close": "7112.50", + "high": "7445.00", + "low": "7084.99", + "open": "7348.64", + "timestamp": "1527465600", + "volume": "6583.63252959" + }, + { + "close": "7469.45", + "high": "7537.00", + "low": "7026.90", + "open": "7112.20", + "timestamp": "1527552000", + "volume": "11049.92099287" + }, + { + "close": "7375.73", + "high": "7559.00", + "low": "7273.89", + "open": "7469.45", + "timestamp": "1527638400", + "volume": "8940.45400530" + }, + { + "close": "7492.28", + "high": "7601.23", + "low": "7330.22", + "open": "7375.64", + "timestamp": "1527724800", + "volume": "7339.00726931" + }, + { + "close": "7511.60", + "high": "7620.01", + "low": "7348.45", + "open": "7492.28", + "timestamp": "1527811200", + "volume": "6762.62757270" + }, + { + "close": "7642.00", + "high": "7700.00", + "low": "7438.92", + "open": "7511.72", + "timestamp": "1527897600", + "volume": "4012.16875521" + }, + { + "close": "7703.67", + "high": "7790.69", + "low": "7581.03", + "open": "7642.00", + "timestamp": "1527984000", + "volume": "4729.21008365" + }, + { + "close": "7488.26", + "high": "7764.44", + "low": "7449.68", + "open": "7712.97", + "timestamp": "1528070400", + "volume": "6990.55135270" + }, + { + "close": "7617.98", + "high": "7685.00", + "low": "7360.00", + "open": "7494.99", + "timestamp": "1528156800", + "volume": "9968.45508961" + }, + { + "close": "7658.57", + "high": "7695.46", + "low": "7482.61", + "open": "7617.98", + "timestamp": "1528243200", + "volume": "7058.05577232" + }, + { + "close": "7689.28", + "high": "7750.00", + "low": "7618.99", + "open": "7658.99", + "timestamp": "1528329600", + "volume": "7545.00925066" + }, + { + "close": "7618.11", + "high": "7697.00", + "low": "7542.00", + "open": "7676.41", + "timestamp": "1528416000", + "volume": "4676.55832777" + }, + { + "close": "7492.70", + "high": "7686.45", + "low": "7468.31", + "open": "7618.11", + "timestamp": "1528502400", + "volume": "2713.78104511" + }, + { + "close": "6781.17", + "high": "7498.00", + "low": "6627.70", + "open": "7498.00", + "timestamp": "1528588800", + "volume": "14392.69540615" + }, + { + "close": "6880.61", + "high": "6919.97", + "low": "6634.86", + "open": "6781.17", + "timestamp": "1528675200", + "volume": "11409.52423218" + }, + { + "close": "6557.67", + "high": "6880.76", + "low": "6461.42", + "open": "6880.76", + "timestamp": "1528761600", + "volume": "8827.59949970" + }, + { + "close": "6307.40", + "high": "6624.45", + "low": "6120.00", + "open": "6557.66", + "timestamp": "1528848000", + "volume": "19190.50457858" + }, + { + "close": "6646.10", + "high": "6708.10", + "low": "6270.69", + "open": "6308.49", + "timestamp": "1528934400", + "volume": "14185.83821156" + }, + { + "close": "6390.60", + "high": "6666.66", + "low": "6370.00", + "open": "6638.80", + "timestamp": "1529020800", + "volume": "7132.20678871" + }, + { + "close": "6487.92", + "high": "6557.81", + "low": "6333.63", + "open": "6390.60", + "timestamp": "1529107200", + "volume": "3553.69972603" + }, + { + "close": "6453.41", + "high": "6575.35", + "low": "6429.23", + "open": "6487.92", + "timestamp": "1529193600", + "volume": "2828.75680848" + }, + { + "close": "6707.50", + "high": "6793.00", + "low": "6381.25", + "open": "6451.03", + "timestamp": "1529280000", + "volume": "5940.17439750" + }, + { + "close": "6736.52", + "high": "6841.81", + "low": "6660.21", + "open": "6711.30", + "timestamp": "1529366400", + "volume": "5443.67979628" + }, + { + "close": "6756.58", + "high": "6809.26", + "low": "6558.95", + "open": "6728.44", + "timestamp": "1529452800", + "volume": "5193.76884592" + }, + { + "close": "6718.33", + "high": "6792.20", + "low": "6677.85", + "open": "6756.60", + "timestamp": "1529539200", + "volume": "4837.32442832" + }, + { + "close": "6050.45", + "high": "6737.97", + "low": "5940.00", + "open": "6718.33", + "timestamp": "1529625600", + "volume": "18544.14405465" + }, + { + "close": "6177.38", + "high": "6261.00", + "low": "6048.54", + "open": "6055.17", + "timestamp": "1529712000", + "volume": "4585.87147205" + }, + { + "close": "6153.40", + "high": "6255.05", + "low": "5780.00", + "open": "6169.91", + "timestamp": "1529798400", + "volume": "11423.59392896" + }, + { + "close": "6253.61", + "high": "6365.34", + "low": "6075.01", + "open": "6153.60", + "timestamp": "1529884800", + "volume": "9689.68930701" + }, + { + "close": "6068.00", + "high": "6277.00", + "low": "6025.68", + "open": "6252.28", + "timestamp": "1529971200", + "volume": "7751.62208792" + }, + { + "close": "6135.64", + "high": "6181.11", + "low": "5985.00", + "open": "6073.99", + "timestamp": "1530057600", + "volume": "7446.86155074" + }, + { + "close": "5848.33", + "high": "6165.49", + "low": "5818.14", + "open": "6135.64", + "timestamp": "1530144000", + "volume": "8878.39857291" + }, + { + "close": "6204.24", + "high": "6299.00", + "low": "5774.72", + "open": "5845.20", + "timestamp": "1530230400", + "volume": "12067.37316767" + }, + { + "close": "6385.71", + "high": "6510.00", + "low": "6190.28", + "open": "6204.01", + "timestamp": "1530316800", + "volume": "6915.08887702" + }, + { + "close": "6349.99", + "high": "6438.55", + "low": "6259.34", + "open": "6385.75", + "timestamp": "1530403200", + "volume": "4160.70556721" + }, + { + "close": "6612.98", + "high": "6667.57", + "low": "6270.69", + "open": "6345.48", + "timestamp": "1530489600", + "volume": "8799.80247408" + }, + { + "close": "6507.99", + "high": "6666.00", + "low": "6464.39", + "open": "6605.46", + "timestamp": "1530576000", + "volume": "5924.86541706" + }, + { + "close": "6584.25", + "high": "6792.28", + "low": "6413.20", + "open": "6507.99", + "timestamp": "1530662400", + "volume": "6706.73400620" + }, + { + "close": "6533.69", + "high": "6700.00", + "low": "6445.31", + "open": "6575.62", + "timestamp": "1530748800", + "volume": "7692.21577694" + }, + { + "close": "6596.53", + "high": "6636.15", + "low": "6449.76", + "open": "6533.69", + "timestamp": "1530835200", + "volume": "5457.67218749" + }, + { + "close": "6759.99", + "high": "6820.00", + "low": "6510.00", + "open": "6604.74", + "timestamp": "1530921600", + "volume": "4842.79587112" + }, + { + "close": "6706.60", + "high": "6783.54", + "low": "6674.60", + "open": "6755.46", + "timestamp": "1531008000", + "volume": "5145.84575684" + }, + { + "close": "6666.75", + "high": "6814.72", + "low": "6620.00", + "open": "6706.60", + "timestamp": "1531094400", + "volume": "7165.21723333" + }, + { + "close": "6299.46", + "high": "6683.90", + "low": "6270.84", + "open": "6666.75", + "timestamp": "1531180800", + "volume": "9163.01977492" + }, + { + "close": "6380.00", + "high": "6400.00", + "low": "6285.00", + "open": "6304.45", + "timestamp": "1531267200", + "volume": "6370.13680136" + }, + { + "close": "6243.88", + "high": "6380.00", + "low": "6072.00", + "open": "6379.13", + "timestamp": "1531353600", + "volume": "7792.46685782" + }, + { + "close": "6215.59", + "high": "6337.25", + "low": "6121.01", + "open": "6243.53", + "timestamp": "1531440000", + "volume": "5901.29571452" + }, + { + "close": "6243.98", + "high": "6317.84", + "low": "6180.00", + "open": "6208.78", + "timestamp": "1531526400", + "volume": "2584.73396230" + }, + { + "close": "6349.30", + "high": "6397.21", + "low": "6227.76", + "open": "6245.99", + "timestamp": "1531612800", + "volume": "3556.29310719" + }, + { + "close": "6721.04", + "high": "6755.00", + "low": "6333.63", + "open": "6353.25", + "timestamp": "1531699200", + "volume": "9404.05647649" + }, + { + "close": "7310.71", + "high": "7468.31", + "low": "6657.95", + "open": "6721.21", + "timestamp": "1531785600", + "volume": "12703.29651293" + }, + { + "close": "7378.10", + "high": "7599.98", + "low": "7239.15", + "open": "7310.71", + "timestamp": "1531872000", + "volume": "13347.87429603" + }, + { + "close": "7471.42", + "high": "7570.90", + "low": "7278.84", + "open": "7384.92", + "timestamp": "1531958400", + "volume": "8803.25309749" + }, + { + "close": "7330.84", + "high": "7696.88", + "low": "7265.00", + "open": "7474.35", + "timestamp": "1532044800", + "volume": "9379.17143244" + }, + { + "close": "7409.92", + "high": "7458.00", + "low": "7212.00", + "open": "7330.84", + "timestamp": "1532131200", + "volume": "4049.81022253" + }, + { + "close": "7396.60", + "high": "7581.03", + "low": "7336.15", + "open": "7398.16", + "timestamp": "1532217600", + "volume": "5107.97881280" + }, + { + "close": "7719.62", + "high": "7800.00", + "low": "7369.86", + "open": "7393.50", + "timestamp": "1532304000", + "volume": "12572.45317131" + }, + { + "close": "8403.83", + "high": "8496.96", + "low": "7691.14", + "open": "7712.46", + "timestamp": "1532390400", + "volume": "18707.41156484" + }, + { + "close": "8174.06", + "high": "8475.00", + "low": "8049.22", + "open": "8394.48", + "timestamp": "1532476800", + "volume": "10348.06857767" + }, + { + "close": "7926.00", + "high": "8314.23", + "low": "7855.97", + "open": "8174.06", + "timestamp": "1532563200", + "volume": "8091.87166049" + }, + { + "close": "8183.05", + "high": "8274.98", + "low": "7798.48", + "open": "7926.00", + "timestamp": "1532649600", + "volume": "8701.76587806" + }, + { + "close": "8237.74", + "high": "8259.00", + "low": "8051.43", + "open": "8177.72", + "timestamp": "1532736000", + "volume": "2765.68049060" + }, + { + "close": "8216.74", + "high": "8299.99", + "low": "8109.74", + "open": "8231.07", + "timestamp": "1532822400", + "volume": "3980.27940760" + }, + { + "close": "8160.21", + "high": "8295.00", + "low": "7853.01", + "open": "8216.74", + "timestamp": "1532908800", + "volume": "11785.89207823" + }, + { + "close": "7725.43", + "high": "8162.37", + "low": "7633.67", + "open": "8162.28", + "timestamp": "1532995200", + "volume": "11994.08614156" + }, + { + "close": "7602.01", + "high": "7761.56", + "low": "7440.00", + "open": "7726.85", + "timestamp": "1533081600", + "volume": "11406.76843741" + }, + { + "close": "7536.37", + "high": "7709.98", + "low": "7455.00", + "open": "7600.22", + "timestamp": "1533168000", + "volume": "5262.23613199" + }, + { + "close": "7416.98", + "high": "7542.92", + "low": "7286.41", + "open": "7535.00", + "timestamp": "1533254400", + "volume": "9585.77930917" + }, + { + "close": "7009.99", + "high": "7494.48", + "low": "6926.00", + "open": "7416.98", + "timestamp": "1533340800", + "volume": "6831.75139028" + }, + { + "close": "7032.61", + "high": "7086.80", + "low": "6888.88", + "open": "7009.94", + "timestamp": "1533427200", + "volume": "6039.13514460" + }, + { + "close": "6936.11", + "high": "7157.93", + "low": "6835.06", + "open": "7028.89", + "timestamp": "1533513600", + "volume": "7317.64296455" + }, + { + "close": "6717.68", + "high": "7155.00", + "low": "6671.00", + "open": "6932.18", + "timestamp": "1533600000", + "volume": "10039.39296375" + }, + { + "close": "6283.59", + "high": "6717.68", + "low": "6121.00", + "open": "6717.67", + "timestamp": "1533686400", + "volume": "14668.56802221" + }, + { + "close": "6543.76", + "high": "6627.00", + "low": "6190.01", + "open": "6283.89", + "timestamp": "1533772800", + "volume": "9484.88670496" + }, + { + "close": "6139.99", + "high": "6584.05", + "low": "5995.75", + "open": "6544.98", + "timestamp": "1533859200", + "volume": "14096.00988894" + }, + { + "close": "6239.98", + "high": "6494.13", + "low": "6000.00", + "open": "6139.99", + "timestamp": "1533945600", + "volume": "6818.37504816" + }, + { + "close": "6310.82", + "high": "6493.77", + "low": "6163.44", + "open": "6240.49", + "timestamp": "1534032000", + "volume": "7169.89323056" + }, + { + "close": "6252.63", + "high": "6544.37", + "low": "6142.20", + "open": "6311.99", + "timestamp": "1534118400", + "volume": "8896.68083746" + }, + { + "close": "6193.62", + "high": "6254.02", + "low": "5880.00", + "open": "6252.63", + "timestamp": "1534204800", + "volume": "14235.27018218" + }, + { + "close": "6272.30", + "high": "6628.50", + "low": "6186.02", + "open": "6194.30", + "timestamp": "1534291200", + "volume": "12501.11334781" + }, + { + "close": "6313.51", + "high": "6477.57", + "low": "6208.37", + "open": "6273.34", + "timestamp": "1534377600", + "volume": "7099.26116360" + }, + { + "close": "6580.15", + "high": "6584.49", + "low": "6290.64", + "open": "6314.08", + "timestamp": "1534464000", + "volume": "6635.58158998" + }, + { + "close": "6399.28", + "high": "6615.00", + "low": "6303.00", + "open": "6578.13", + "timestamp": "1534550400", + "volume": "3496.80232127" + }, + { + "close": "6481.99", + "high": "6545.00", + "low": "6312.00", + "open": "6397.37", + "timestamp": "1534636800", + "volume": "3138.71131829" + }, + { + "close": "6260.82", + "high": "6522.99", + "low": "6223.90", + "open": "6481.63", + "timestamp": "1534723200", + "volume": "6254.82080784" + }, + { + "close": "6479.27", + "high": "6513.28", + "low": "6246.05", + "open": "6260.83", + "timestamp": "1534809600", + "volume": "5655.04172504" + }, + { + "close": "6355.76", + "high": "6906.81", + "low": "6250.00", + "open": "6478.99", + "timestamp": "1534896000", + "volume": "11955.65069577" + }, + { + "close": "6525.01", + "high": "6575.99", + "low": "6344.80", + "open": "6355.97", + "timestamp": "1534982400", + "volume": "4028.43387247" + }, + { + "close": "6692.94", + "high": "6721.09", + "low": "6445.32", + "open": "6525.99", + "timestamp": "1535068800", + "volume": "6374.54257854" + }, + { + "close": "6732.40", + "high": "6800.00", + "low": "6664.25", + "open": "6692.99", + "timestamp": "1535155200", + "volume": "4980.64928331" + }, + { + "close": "6700.46", + "high": "6775.34", + "low": "6558.95", + "open": "6732.99", + "timestamp": "1535241600", + "volume": "3475.72024960" + }, + { + "close": "6904.51", + "high": "6944.47", + "low": "6641.35", + "open": "6700.13", + "timestamp": "1535328000", + "volume": "5863.68824836" + }, + { + "close": "7080.94", + "high": "7125.28", + "low": "6861.17", + "open": "6911.70", + "timestamp": "1535414400", + "volume": "8222.24765235" + }, + { + "close": "7032.96", + "high": "7124.06", + "low": "6890.00", + "open": "7079.46", + "timestamp": "1535500800", + "volume": "5730.97892652" + }, + { + "close": "6984.01", + "high": "7055.97", + "low": "6792.85", + "open": "7034.47", + "timestamp": "1535587200", + "volume": "6875.26197217" + }, + { + "close": "7017.35", + "high": "7101.03", + "low": "6879.00", + "open": "6984.34", + "timestamp": "1535673600", + "volume": "5790.38050638" + }, + { + "close": "7185.01", + "high": "7300.18", + "low": "7015.22", + "open": "7015.78", + "timestamp": "1535760000", + "volume": "4590.45724112" + }, + { + "close": "7290.31", + "high": "7334.50", + "low": "7130.63", + "open": "7195.80", + "timestamp": "1535846400", + "volume": "3297.68658519" + }, + { + "close": "7258.99", + "high": "7340.08", + "low": "7184.00", + "open": "7291.94", + "timestamp": "1535932800", + "volume": "2829.87707292" + }, + { + "close": "7361.00", + "high": "7411.85", + "low": "7231.00", + "open": "7261.29", + "timestamp": "1536019200", + "volume": "4531.14780379" + }, + { + "close": "6679.30", + "high": "7387.00", + "low": "6650.00", + "open": "7353.48", + "timestamp": "1536105600", + "volume": "12408.79698551" + }, + { + "close": "6493.09", + "high": "6705.59", + "low": "6253.29", + "open": "6671.95", + "timestamp": "1536192000", + "volume": "14674.02367160" + }, + { + "close": "6400.00", + "high": "6525.00", + "low": "6322.00", + "open": "6488.01", + "timestamp": "1536278400", + "volume": "6541.96747088" + }, + { + "close": "6178.31", + "high": "6465.46", + "low": "6113.23", + "open": "6401.01", + "timestamp": "1536364800", + "volume": "4284.19484304" + }, + { + "close": "6236.04", + "high": "6451.51", + "low": "6094.38", + "open": "6178.31", + "timestamp": "1536451200", + "volume": "4104.31379555" + }, + { + "close": "6301.99", + "high": "6351.13", + "low": "6223.90", + "open": "6238.99", + "timestamp": "1536537600", + "volume": "5371.72530672" + }, + { + "close": "6279.99", + "high": "6405.00", + "low": "6162.06", + "open": "6303.99", + "timestamp": "1536624000", + "volume": "7076.79725968" + }, + { + "close": "6322.45", + "high": "6350.00", + "low": "6192.89", + "open": "6274.60", + "timestamp": "1536710400", + "volume": "4282.15960066" + }, + { + "close": "6485.70", + "high": "6537.46", + "low": "6324.37", + "open": "6326.83", + "timestamp": "1536796800", + "volume": "6985.34747474" + }, + { + "close": "6476.51", + "high": "6587.00", + "low": "6384.36", + "open": "6482.95", + "timestamp": "1536883200", + "volume": "4598.02098322" + }, + { + "close": "6520.15", + "high": "6570.10", + "low": "6466.74", + "open": "6476.51", + "timestamp": "1536969600", + "volume": "1328.81956289" + }, + { + "close": "6499.98", + "high": "6524.84", + "low": "6349.47", + "open": "6521.49", + "timestamp": "1537056000", + "volume": "1098.62806031" + }, + { + "close": "6254.52", + "high": "6530.24", + "low": "6200.00", + "open": "6499.28", + "timestamp": "1537142400", + "volume": "4386.88772482" + }, + { + "close": "6332.34", + "high": "6390.00", + "low": "6226.63", + "open": "6251.49", + "timestamp": "1537228800", + "volume": "4196.47314808" + }, + { + "close": "6388.40", + "high": "6510.00", + "low": "6100.00", + "open": "6330.00", + "timestamp": "1537315200", + "volume": "7232.08338006" + }, + { + "close": "6492.98", + "high": "6535.11", + "low": "6333.63", + "open": "6388.40", + "timestamp": "1537401600", + "volume": "5177.64510387" + }, + { + "close": "6749.45", + "high": "6775.34", + "low": "6483.83", + "open": "6492.98", + "timestamp": "1537488000", + "volume": "8569.98587321" + }, + { + "close": "6710.01", + "high": "6826.28", + "low": "6624.79", + "open": "6748.85", + "timestamp": "1537574400", + "volume": "5491.80951385" + }, + { + "close": "6702.22", + "high": "6774.91", + "low": "6659.00", + "open": "6710.01", + "timestamp": "1537660800", + "volume": "3248.80491931" + }, + { + "close": "6581.52", + "high": "6721.68", + "low": "6550.96", + "open": "6703.37", + "timestamp": "1537747200", + "volume": "4030.72562001" + }, + { + "close": "6428.99", + "high": "6579.59", + "low": "6324.96", + "open": "6578.70", + "timestamp": "1537833600", + "volume": "8206.61700477" + }, + { + "close": "6461.51", + "high": "6540.00", + "low": "6379.44", + "open": "6428.09", + "timestamp": "1537920000", + "volume": "4295.92674134" + }, + { + "close": "6681.62", + "high": "6736.85", + "low": "6431.95", + "open": "6454.32", + "timestamp": "1538006400", + "volume": "5664.85211251" + }, + { + "close": "6610.76", + "high": "6792.28", + "low": "6525.67", + "open": "6684.50", + "timestamp": "1538092800", + "volume": "7642.04936428" + }, + { + "close": "6579.38", + "high": "6609.02", + "low": "6454.00", + "open": "6609.02", + "timestamp": "1538179200", + "volume": "3382.01592212" + }, + { + "close": "6597.81", + "high": "6628.06", + "low": "6510.00", + "open": "6574.29", + "timestamp": "1538265600", + "volume": "2482.69507513" + }, + { + "close": "6571.20", + "high": "6638.15", + "low": "6477.57", + "open": "6597.79", + "timestamp": "1538352000", + "volume": "4796.04013200" + }, + { + "close": "6500.00", + "high": "6597.00", + "low": "6447.28", + "open": "6569.32", + "timestamp": "1538438400", + "volume": "4116.13342419" + }, + { + "close": "6456.77", + "high": "6510.00", + "low": "6396.34", + "open": "6500.00", + "timestamp": "1538524800", + "volume": "4774.76328174" + }, + { + "close": "6547.56", + "high": "6604.89", + "low": "6450.58", + "open": "6454.81", + "timestamp": "1538611200", + "volume": "3832.70048916" + }, + { + "close": "6582.12", + "high": "6641.35", + "low": "6510.00", + "open": "6548.83", + "timestamp": "1538697600", + "volume": "3807.26928181" + }, + { + "close": "6544.08", + "high": "6595.69", + "low": "6526.28", + "open": "6582.11", + "timestamp": "1538784000", + "volume": "2022.78075908" + }, + { + "close": "6577.63", + "high": "6600.00", + "low": "6493.92", + "open": "6547.93", + "timestamp": "1538870400", + "volume": "2455.65659087" + }, + { + "close": "6604.75", + "high": "6656.63", + "low": "6541.06", + "open": "6574.15", + "timestamp": "1538956800", + "volume": "4079.04424933" + }, + { + "close": "6588.80", + "high": "6623.14", + "low": "6553.13", + "open": "6604.76", + "timestamp": "1539043200", + "volume": "2254.95026959" + }, + { + "close": "6517.55", + "high": "6589.79", + "low": "6387.91", + "open": "6588.72", + "timestamp": "1539129600", + "volume": "5177.06675956" + }, + { + "close": "6152.76", + "high": "6520.43", + "low": "6055.28", + "open": "6517.55", + "timestamp": "1539216000", + "volume": "9616.23958351" + }, + { + "close": "6185.15", + "high": "6243.79", + "low": "6109.79", + "open": "6152.76", + "timestamp": "1539302400", + "volume": "3246.38155720" + }, + { + "close": "6199.69", + "high": "6219.77", + "low": "6168.83", + "open": "6182.03", + "timestamp": "1539388800", + "volume": "1954.04680593" + }, + { + "close": "6183.00", + "high": "6349.47", + "low": "6143.08", + "open": "6201.23", + "timestamp": "1539475200", + "volume": "2525.73820085" + }, + { + "close": "6441.74", + "high": "6756.00", + "low": "6149.28", + "open": "6185.04", + "timestamp": "1539561600", + "volume": "16895.88930388" + }, + { + "close": "6461.20", + "high": "6493.77", + "low": "6386.40", + "open": "6438.20", + "timestamp": "1539648000", + "volume": "4703.09390629" + }, + { + "close": "6437.29", + "high": "6465.39", + "low": "6407.69", + "open": "6457.67", + "timestamp": "1539734400", + "volume": "2961.26337446" + }, + { + "close": "6396.18", + "high": "6490.00", + "low": "6350.00", + "open": "6440.07", + "timestamp": "1539820800", + "volume": "3823.16928503" + }, + { + "close": "6383.46", + "high": "6412.40", + "low": "6355.99", + "open": "6394.23", + "timestamp": "1539907200", + "volume": "2290.05901170" + }, + { + "close": "6412.86", + "high": "6424.16", + "low": "6363.02", + "open": "6380.47", + "timestamp": "1539993600", + "volume": "1261.97849549" + }, + { + "close": "6413.38", + "high": "6470.00", + "low": "6401.01", + "open": "6412.86", + "timestamp": "1540080000", + "volume": "1541.01151749" + }, + { + "close": "6406.06", + "high": "6429.23", + "low": "6372.53", + "open": "6412.62", + "timestamp": "1540166400", + "volume": "2407.53546180" + }, + { + "close": "6393.41", + "high": "6421.58", + "low": "6354.26", + "open": "6409.39", + "timestamp": "1540252800", + "volume": "2851.00556658" + }, + { + "close": "6411.96", + "high": "6473.00", + "low": "6393.00", + "open": "6396.24", + "timestamp": "1540339200", + "volume": "3535.33808825" + }, + { + "close": "6393.53", + "high": "6422.73", + "low": "6361.73", + "open": "6411.96", + "timestamp": "1540425600", + "volume": "3046.60380599" + }, + { + "close": "6406.10", + "high": "6450.30", + "low": "6377.81", + "open": "6393.38", + "timestamp": "1540512000", + "volume": "3323.82631782" + }, + { + "close": "6407.66", + "high": "6420.01", + "low": "6381.25", + "open": "6406.10", + "timestamp": "1540598400", + "volume": "890.12715690" + }, + { + "close": "6405.57", + "high": "6420.00", + "low": "6383.00", + "open": "6407.66", + "timestamp": "1540684800", + "volume": "839.29766473" + }, + { + "close": "6266.52", + "high": "6420.00", + "low": "6208.37", + "open": "6404.27", + "timestamp": "1540771200", + "volume": "5190.82201499" + }, + { + "close": "6269.46", + "high": "6289.00", + "low": "6240.00", + "open": "6266.47", + "timestamp": "1540857600", + "volume": "2523.57742936" + }, + { + "close": "6303.27", + "high": "6350.00", + "low": "6199.25", + "open": "6269.45", + "timestamp": "1540944000", + "volume": "5148.08262352" + }, + { + "close": "6340.99", + "high": "6365.33", + "low": "6288.01", + "open": "6304.50", + "timestamp": "1541030400", + "volume": "2190.97047686" + }, + { + "close": "6350.43", + "high": "6381.25", + "low": "6328.33", + "open": "6343.85", + "timestamp": "1541116800", + "volume": "2678.06948097" + }, + { + "close": "6335.00", + "high": "6351.74", + "low": "6312.48", + "open": "6350.05", + "timestamp": "1541203200", + "volume": "1084.13861953" + }, + { + "close": "6421.76", + "high": "6475.00", + "low": "6310.57", + "open": "6333.59", + "timestamp": "1541289600", + "volume": "2673.81391399" + }, + { + "close": "6403.20", + "high": "6441.43", + "low": "6369.89", + "open": "6428.23", + "timestamp": "1541376000", + "volume": "2335.48865475" + }, + { + "close": "6447.50", + "high": "6460.01", + "low": "6378.24", + "open": "6404.97", + "timestamp": "1541462400", + "volume": "4270.33460011" + }, + { + "close": "6501.00", + "high": "6544.00", + "low": "6442.47", + "open": "6448.17", + "timestamp": "1541548800", + "volume": "4800.82491273" + }, + { + "close": "6405.49", + "high": "6511.27", + "low": "6388.88", + "open": "6501.00", + "timestamp": "1541635200", + "volume": "3966.97303181" + }, + { + "close": "6325.00", + "high": "6418.18", + "low": "6307.00", + "open": "6405.49", + "timestamp": "1541721600", + "volume": "3218.12902607" + }, + { + "close": "6349.32", + "high": "6377.26", + "low": "6323.00", + "open": "6325.00", + "timestamp": "1541808000", + "volume": "1523.39384996" + }, + { + "close": "6357.54", + "high": "6365.00", + "low": "6269.46", + "open": "6349.39", + "timestamp": "1541894400", + "volume": "1718.26855567" + }, + { + "close": "6318.00", + "high": "6388.21", + "low": "6298.50", + "open": "6352.57", + "timestamp": "1541980800", + "volume": "3526.03903239" + }, + { + "close": "6260.91", + "high": "6328.36", + "low": "6244.35", + "open": "6318.01", + "timestamp": "1542067200", + "volume": "3630.56272124" + }, + { + "close": "5595.91", + "high": "6298.47", + "low": "5324.00", + "open": "6255.86", + "timestamp": "1542153600", + "volume": "25121.93301356" + }, + { + "close": "5585.00", + "high": "5641.00", + "low": "5199.80", + "open": "5592.23", + "timestamp": "1542240000", + "volume": "19945.90828161" + }, + { + "close": "5508.71", + "high": "5610.00", + "low": "5411.74", + "open": "5571.12", + "timestamp": "1542326400", + "volume": "8074.60557580" + }, + { + "close": "5503.36", + "high": "5550.66", + "low": "5452.63", + "open": "5514.62", + "timestamp": "1542412800", + "volume": "2732.79162871" + }, + { + "close": "5559.26", + "high": "5658.47", + "low": "5500.00", + "open": "5503.36", + "timestamp": "1542499200", + "volume": "2576.45532010" + }, + { + "close": "4735.44", + "high": "5559.69", + "low": "4694.44", + "open": "5553.01", + "timestamp": "1542585600", + "volume": "28910.66553331" + }, + { + "close": "4352.00", + "high": "4897.36", + "low": "4048.58", + "open": "4732.92", + "timestamp": "1542672000", + "volume": "39775.38943928" + }, + { + "close": "4538.01", + "high": "4635.00", + "low": "4242.33", + "open": "4349.41", + "timestamp": "1542758400", + "volume": "20678.25000596" + }, + { + "close": "4275.23", + "high": "4589.53", + "low": "4194.98", + "open": "4551.47", + "timestamp": "1542844800", + "volume": "10258.46172893" + }, + { + "close": "4288.26", + "high": "4364.46", + "low": "4061.02", + "open": "4268.40", + "timestamp": "1542931200", + "volume": "13322.77736822" + }, + { + "close": "3785.65", + "high": "4376.88", + "low": "3638.48", + "open": "4288.25", + "timestamp": "1543017600", + "volume": "14236.74417437" + }, + { + "close": "3938.89", + "high": "4120.00", + "low": "3474.73", + "open": "3780.67", + "timestamp": "1543104000", + "volume": "26969.94763424" + }, + { + "close": "3727.34", + "high": "4069.59", + "low": "3522.28", + "open": "3934.22", + "timestamp": "1543190400", + "volume": "24357.88293934" + }, + { + "close": "3771.01", + "high": "3834.35", + "low": "3548.76", + "open": "3727.34", + "timestamp": "1543276800", + "volume": "16814.00296565" + }, + { + "close": "4220.16", + "high": "4355.08", + "low": "3771.00", + "open": "3771.01", + "timestamp": "1543363200", + "volume": "22983.71348838" + }, + { + "close": "4249.80", + "high": "4409.77", + "low": "4086.97", + "open": "4219.77", + "timestamp": "1543449600", + "volume": "15944.01262628" + }, + { + "close": "3971.06", + "high": "4300.00", + "low": "3861.00", + "open": "4250.00", + "timestamp": "1543536000", + "volume": "14364.62144791" + }, + { + "close": "4140.39", + "high": "4264.47", + "low": "3904.34", + "open": "3970.56", + "timestamp": "1543622400", + "volume": "6412.23253743" + }, + { + "close": "4102.05", + "high": "4265.00", + "low": "4030.00", + "open": "4140.40", + "timestamp": "1543708800", + "volume": "7019.16205825" + }, + { + "close": "3834.34", + "high": "4115.15", + "low": "3747.00", + "open": "4099.63", + "timestamp": "1543795200", + "volume": "10726.67730460" + }, + { + "close": "3903.52", + "high": "4033.98", + "low": "3730.00", + "open": "3830.81", + "timestamp": "1543881600", + "volume": "12249.93688790" + }, + { + "close": "3696.69", + "high": "3913.62", + "low": "3662.35", + "open": "3903.52", + "timestamp": "1543968000", + "volume": "13443.22072621" + }, + { + "close": "3437.26", + "high": "3844.79", + "low": "3415.22", + "open": "3694.03", + "timestamp": "1544054400", + "volume": "15480.96697218" + }, + { + "close": "3380.68", + "high": "3531.00", + "low": "3210.00", + "open": "3437.22", + "timestamp": "1544140800", + "volume": "26513.23162490" + }, + { + "close": "3398.80", + "high": "3495.99", + "low": "3241.00", + "open": "3376.27", + "timestamp": "1544227200", + "volume": "10176.34927433" + }, + { + "close": "3529.75", + "high": "3633.20", + "low": "3371.09", + "open": "3398.80", + "timestamp": "1544313600", + "volume": "8011.02295177" + }, + { + "close": "3408.00", + "high": "3588.43", + "low": "3355.00", + "open": "3528.68", + "timestamp": "1544400000", + "volume": "10375.26877055" + }, + { + "close": "3353.42", + "high": "3427.27", + "low": "3292.65", + "open": "3406.41", + "timestamp": "1544486400", + "volume": "8951.71070828" + }, + { + "close": "3430.18", + "high": "3490.00", + "low": "3325.70", + "open": "3345.01", + "timestamp": "1544572800", + "volume": "7284.10378196" + }, + { + "close": "3262.73", + "high": "3441.13", + "low": "3221.14", + "open": "3430.20", + "timestamp": "1544659200", + "volume": "11715.01908312" + }, + { + "close": "3195.75", + "high": "3294.81", + "low": "3135.55", + "open": "3263.55", + "timestamp": "1544745600", + "volume": "14437.50526664" + }, + { + "close": "3179.54", + "high": "3230.00", + "low": "3122.28", + "open": "3194.04", + "timestamp": "1544832000", + "volume": "5814.86853241" + }, + { + "close": "3193.78", + "high": "3259.43", + "low": "3178.23", + "open": "3180.84", + "timestamp": "1544918400", + "volume": "6033.50714633" + }, + { + "close": "3496.73", + "high": "3590.00", + "low": "3181.26", + "open": "3191.41", + "timestamp": "1545004800", + "volume": "16389.79444903" + }, + { + "close": "3667.16", + "high": "3684.00", + "low": "3422.77", + "open": "3499.37", + "timestamp": "1545091200", + "volume": "13792.36427592" + }, + { + "close": "3684.50", + "high": "3924.01", + "low": "3642.69", + "open": "3667.16", + "timestamp": "1545177600", + "volume": "21125.61437541" + }, + { + "close": "4073.77", + "high": "4172.07", + "low": "3656.75", + "open": "3684.03", + "timestamp": "1545264000", + "volume": "25986.85291601" + }, + { + "close": "3841.08", + "high": "4162.00", + "low": "3770.00", + "open": "4073.58", + "timestamp": "1545350400", + "volume": "16967.23460506" + }, + { + "close": "3980.90", + "high": "4010.16", + "low": "3780.09", + "open": "3842.59", + "timestamp": "1545436800", + "volume": "7697.59815203" + }, + { + "close": "3943.83", + "high": "4051.00", + "low": "3900.00", + "open": "3977.65", + "timestamp": "1545523200", + "volume": "4609.89261726" + }, + { + "close": "4036.00", + "high": "4236.84", + "low": "3944.84", + "open": "3947.82", + "timestamp": "1545609600", + "volume": "12017.91713092" + }, + { + "close": "3779.99", + "high": "4049.23", + "low": "3674.73", + "open": "4034.54", + "timestamp": "1545696000", + "volume": "11801.43441841" + }, + { + "close": "3810.01", + "high": "3863.34", + "low": "3678.80", + "open": "3780.00", + "timestamp": "1545782400", + "volume": "10064.18282348" + }, + { + "close": "3591.69", + "high": "3841.17", + "low": "3566.00", + "open": "3810.01", + "timestamp": "1545868800", + "volume": "11850.01238190" + }, + { + "close": "3884.97", + "high": "3970.00", + "low": "3575.00", + "open": "3590.26", + "timestamp": "1545955200", + "volume": "13055.71840689" + }, + { + "close": "3725.48", + "high": "3961.85", + "low": "3702.51", + "open": "3884.66", + "timestamp": "1546041600", + "volume": "6901.38233180" + }, + { + "close": "3835.79", + "high": "3870.00", + "low": "3688.76", + "open": "3728.96", + "timestamp": "1546128000", + "volume": "5736.45370818" + }, + { + "close": "3693.30", + "high": "3842.89", + "low": "3630.00", + "open": "3831.03", + "timestamp": "1546214400", + "volume": "6667.16373743" + }, + { + "close": "3823.44", + "high": "3845.46", + "low": "3629.66", + "open": "3693.85", + "timestamp": "1546300800", + "volume": "5149.60627729" + }, + { + "close": "3885.87", + "high": "3918.67", + "low": "3770.00", + "open": "3825.41", + "timestamp": "1546387200", + "volume": "5534.46951453" + }, + { + "close": "3787.81", + "high": "3893.40", + "low": "3760.00", + "open": "3890.27", + "timestamp": "1546473600", + "volume": "4803.24610920" + }, + { + "close": "3817.71", + "high": "3850.33", + "low": "3732.38", + "open": "3785.64", + "timestamp": "1546560000", + "volume": "7452.05894356" + }, + { + "close": "3791.84", + "high": "3887.09", + "low": "3780.00", + "open": "3822.00", + "timestamp": "1546646400", + "volume": "3656.37531439" + }, + { + "close": "4040.71", + "high": "4090.00", + "low": "3753.00", + "open": "3795.38", + "timestamp": "1546732800", + "volume": "5400.71486407" + }, + { + "close": "4005.45", + "high": "4070.00", + "low": "3964.01", + "open": "4040.71", + "timestamp": "1546819200", + "volume": "7445.09600426" + }, + { + "close": "3994.90", + "high": "4112.00", + "low": "3934.73", + "open": "4005.00", + "timestamp": "1546905600", + "volume": "11819.98676966" + }, + { + "close": "4000.18", + "high": "4060.00", + "low": "3948.44", + "open": "3994.75", + "timestamp": "1546992000", + "volume": "7389.66772280" + }, + { + "close": "4002.13", + "high": "4060.00", + "low": "3948.44", + "open": "3994.75", + "timestamp": "1546992000", + "volume": "7390.13399203" + }, + { + "close": "3627.51", + "high": "4036.22", + "low": "3503.44", + "open": "4003.09", + "timestamp": "1547078400", + "volume": "16118.42088248" + }, + { + "close": "3632.02", + "high": "3704.60", + "low": "3569.85", + "open": "3627.65", + "timestamp": "1547164800", + "volume": "10571.08164263" + }, + { + "close": "3617.13", + "high": "3650.35", + "low": "3557.09", + "open": "3631.00", + "timestamp": "1547251200", + "volume": "3184.35219414" + }, + { + "close": "3515.95", + "high": "3654.02", + "low": "3476.00", + "open": "3617.75", + "timestamp": "1547337600", + "volume": "5908.52280454" + }, + { + "close": "3664.28", + "high": "3714.00", + "low": "3506.00", + "open": "3517.03", + "timestamp": "1547424000", + "volume": "9925.99072165" + }, + { + "close": "3576.93", + "high": "3687.02", + "low": "3534.68", + "open": "3664.28", + "timestamp": "1547510400", + "volume": "8059.81737770" + }, + { + "close": "3605.91", + "high": "3669.00", + "low": "3570.48", + "open": "3576.92", + "timestamp": "1547596800", + "volume": "7675.06606371" + }, + { + "close": "3638.01", + "high": "3660.00", + "low": "3534.25", + "open": "3609.50", + "timestamp": "1547683200", + "volume": "7499.52552971" + }, + { + "close": "3609.21", + "high": "3641.90", + "low": "3577.00", + "open": "3638.01", + "timestamp": "1547769600", + "volume": "5023.51029080" + }, + { + "close": "3681.00", + "high": "3774.00", + "low": "3602.60", + "open": "3609.29", + "timestamp": "1547856000", + "volume": "4080.88346413" + }, + { + "close": "3536.72", + "high": "3703.27", + "low": "3470.00", + "open": "3680.00", + "timestamp": "1547942400", + "volume": "5591.01583422" + }, + { + "close": "3531.51", + "high": "3573.29", + "low": "3485.58", + "open": "3537.42", + "timestamp": "1548028800", + "volume": "5821.89983137" + }, + { + "close": "3576.81", + "high": "3615.80", + "low": "3401.36", + "open": "3531.51", + "timestamp": "1548115200", + "volume": "6877.06367550" + }, + { + "close": "3552.32", + "high": "3620.23", + "low": "3518.00", + "open": "3574.44", + "timestamp": "1548201600", + "volume": "6170.84267224" + }, + { + "close": "3570.73", + "high": "3598.00", + "low": "3524.00", + "open": "3553.20", + "timestamp": "1548288000", + "volume": "4488.01463801" + }, + { + "close": "3560.00", + "high": "3578.79", + "low": "3511.00", + "open": "3570.67", + "timestamp": "1548374400", + "volume": "4961.79512299" + }, + { + "close": "3555.56", + "high": "3657.89", + "low": "3536.51", + "open": "3560.94", + "timestamp": "1548460800", + "volume": "2697.88387935" + }, + { + "close": "3533.23", + "high": "3564.12", + "low": "3456.00", + "open": "3555.31", + "timestamp": "1548547200", + "volume": "3852.65964090" + }, + { + "close": "3429.50", + "high": "3536.77", + "low": "3357.30", + "open": "3532.23", + "timestamp": "1548633600", + "volume": "10345.10091040" + }, + { + "close": "3390.50", + "high": "3438.76", + "low": "3322.19", + "open": "3431.43", + "timestamp": "1548720000", + "volume": "7284.38686266" + }, + { + "close": "3437.35", + "high": "3465.05", + "low": "3372.34", + "open": "3391.25", + "timestamp": "1548806400", + "volume": "5704.02340186" + }, + { + "close": "3413.11", + "high": "3474.20", + "low": "3392.60", + "open": "3438.00", + "timestamp": "1548892800", + "volume": "5951.81816980" + }, + { + "close": "3434.83", + "high": "3460.00", + "low": "3364.53", + "open": "3413.69", + "timestamp": "1548979200", + "volume": "6659.84752495" + }, + { + "close": "3462.82", + "high": "3485.00", + "low": "3406.38", + "open": "3434.83", + "timestamp": "1549065600", + "volume": "3051.95860768" + }, + { + "close": "3414.82", + "high": "3476.33", + "low": "3384.67", + "open": "3470.50", + "timestamp": "1549152000", + "volume": "2813.89222442" + }, + { + "close": "3410.87", + "high": "3439.46", + "low": "3394.85", + "open": "3413.75", + "timestamp": "1549238400", + "volume": "3244.08497898" + }, + { + "close": "3431.39", + "high": "3435.00", + "low": "3396.00", + "open": "3409.81", + "timestamp": "1549324800", + "volume": "4045.62530164" + }, + { + "close": "3364.62", + "high": "3445.60", + "low": "3328.70", + "open": "3431.81", + "timestamp": "1549411200", + "volume": "6137.40639817" + }, + { + "close": "3359.33", + "high": "3383.29", + "low": "3350.00", + "open": "3364.00", + "timestamp": "1549497600", + "volume": "4293.55581410" + }, + { + "close": "3622.94", + "high": "3711.04", + "low": "3337.91", + "open": "3358.39", + "timestamp": "1549584000", + "volume": "14388.64754224" + }, + { + "close": "3622.62", + "high": "3639.74", + "low": "3589.52", + "open": "3626.12", + "timestamp": "1549670400", + "volume": "4054.50461695" + }, + { + "close": "3650.37", + "high": "3662.43", + "low": "3576.16", + "open": "3622.74", + "timestamp": "1549756800", + "volume": "4155.50568273" + }, + { + "close": "3588.70", + "high": "3652.56", + "low": "3578.70", + "open": "3651.32", + "timestamp": "1549843200", + "volume": "7931.40887407" + }, + { + "close": "3585.94", + "high": "3619.93", + "low": "3548.28", + "open": "3588.99", + "timestamp": "1549929600", + "volume": "10074.81670532" + }, + { + "close": "3574.93", + "high": "3629.81", + "low": "3541.00", + "open": "3585.70", + "timestamp": "1550016000", + "volume": "7992.74321134" + }, + { + "close": "3560.46", + "high": "3590.74", + "low": "3531.01", + "open": "3575.01", + "timestamp": "1550102400", + "volume": "5910.24312876" + }, + { + "close": "3566.29", + "high": "3620.53", + "low": "3544.88", + "open": "3560.45", + "timestamp": "1550188800", + "volume": "6234.76805726" + }, + { + "close": "3579.92", + "high": "3609.00", + "low": "3561.96", + "open": "3566.29", + "timestamp": "1550275200", + "volume": "3442.47630393" + }, + { + "close": "3625.60", + "high": "3663.34", + "low": "3553.98", + "open": "3580.43", + "timestamp": "1550361600", + "volume": "5012.46127538" + }, + { + "close": "3869.80", + "high": "3916.47", + "low": "3614.82", + "open": "3625.60", + "timestamp": "1550448000", + "volume": "15567.08485429" + }, + { + "close": "3888.46", + "high": "4000.00", + "low": "3840.08", + "open": "3870.97", + "timestamp": "1550534400", + "volume": "12525.13651013" + }, + { + "close": "3936.53", + "high": "3967.52", + "low": "3861.49", + "open": "3889.92", + "timestamp": "1550620800", + "volume": "9854.35493853" + }, + { + "close": "3900.40", + "high": "3989.99", + "low": "3866.25", + "open": "3936.80", + "timestamp": "1550707200", + "volume": "8055.79892817" + }, + { + "close": "3939.82", + "high": "3957.00", + "low": "3882.59", + "open": "3900.64", + "timestamp": "1550793600", + "volume": "6593.85993401" + }, + { + "close": "4113.53", + "high": "4157.87", + "low": "3905.63", + "open": "3939.83", + "timestamp": "1550880000", + "volume": "7966.31721086" + }, + { + "close": "3730.68", + "high": "4190.00", + "low": "3714.42", + "open": "4113.56", + "timestamp": "1550966400", + "volume": "13737.01398845" + }, + { + "close": "3820.71", + "high": "3861.81", + "low": "3732.60", + "open": "3733.78", + "timestamp": "1551052800", + "volume": "8835.36224921" + }, + { + "close": "3795.06", + "high": "3830.00", + "low": "3760.09", + "open": "3817.93", + "timestamp": "1551139200", + "volume": "6543.16453722" + }, + { + "close": "3798.47", + "high": "3822.85", + "low": "3658.19", + "open": "3794.42", + "timestamp": "1551225600", + "volume": "7602.29984472" + }, + { + "close": "3791.36", + "high": "3897.62", + "low": "3755.00", + "open": "3796.49", + "timestamp": "1551312000", + "volume": "6747.88027166" + }, + { + "close": "3807.05", + "high": "3845.30", + "low": "3789.50", + "open": "3791.02", + "timestamp": "1551398400", + "volume": "4761.41015902" + }, + { + "close": "3810.46", + "high": "3818.75", + "low": "3760.00", + "open": "3805.00", + "timestamp": "1551484800", + "volume": "3259.74312485" + }, + { + "close": "3789.52", + "high": "3822.39", + "low": "3756.00", + "open": "3810.47", + "timestamp": "1551571200", + "volume": "2508.08649072" + }, + { + "close": "3698.66", + "high": "3806.90", + "low": "3670.00", + "open": "3789.70", + "timestamp": "1551657600", + "volume": "7293.71962839" + }, + { + "close": "3844.07", + "high": "3877.10", + "low": "3690.00", + "open": "3698.65", + "timestamp": "1551744000", + "volume": "7280.82397551" + }, + { + "close": "3851.55", + "high": "3895.12", + "low": "3808.80", + "open": "3844.07", + "timestamp": "1551830400", + "volume": "6402.67507493" + }, + { + "close": "3856.64", + "high": "3891.04", + "low": "3826.13", + "open": "3851.26", + "timestamp": "1551916800", + "volume": "7964.50825371" + }, + { + "close": "3844.64", + "high": "3924.37", + "low": "3760.10", + "open": "3856.78", + "timestamp": "1552003200", + "volume": "7707.39667049" + }, + { + "close": "3916.43", + "high": "3950.25", + "low": "3835.66", + "open": "3841.27", + "timestamp": "1552089600", + "volume": "5125.89830383" + }, + { + "close": "3897.92", + "high": "3916.43", + "low": "3862.00", + "open": "3916.42", + "timestamp": "1552176000", + "volume": "3000.60671855" + }, + { + "close": "3849.25", + "high": "3912.89", + "low": "3812.64", + "open": "3898.14", + "timestamp": "1552262400", + "volume": "6612.11516125" + }, + { + "close": "3859.74", + "high": "3877.69", + "low": "3791.07", + "open": "3848.86", + "timestamp": "1552348800", + "volume": "5794.61473428" + }, + { + "close": "3848.48", + "high": "3874.68", + "low": "3820.00", + "open": "3861.37", + "timestamp": "1552435200", + "volume": "4275.54000025" + }, + { + "close": "3854.77", + "high": "3903.98", + "low": "3775.01", + "open": "3848.10", + "timestamp": "1552521600", + "volume": "5167.56617609" + }, + { + "close": "3901.21", + "high": "3912.06", + "low": "3843.09", + "open": "3857.33", + "timestamp": "1552608000", + "volume": "6411.98332751" + }, + { + "close": "3990.00", + "high": "4040.00", + "low": "3899.12", + "open": "3899.19", + "timestamp": "1552694400", + "volume": "6959.47788339" + }, + { + "close": "3965.50", + "high": "3992.42", + "low": "3927.28", + "open": "3990.00", + "timestamp": "1552780800", + "volume": "2711.95016796" + }, + { + "close": "3969.59", + "high": "4016.63", + "low": "3929.83", + "open": "3965.63", + "timestamp": "1552867200", + "volume": "5420.23037801" + }, + { + "close": "3998.13", + "high": "4012.63", + "low": "3947.15", + "open": "3969.94", + "timestamp": "1552953600", + "volume": "5317.45055524" + }, + { + "close": "4031.59", + "high": "4050.00", + "low": "3962.60", + "open": "3999.50", + "timestamp": "1553040000", + "volume": "6244.95370182" + }, + { + "close": "3974.21", + "high": "4055.35", + "low": "3919.63", + "open": "4033.70", + "timestamp": "1553126400", + "volume": "7561.75989694" + }, + { + "close": "3982.07", + "high": "4000.81", + "low": "3958.94", + "open": "3974.50", + "timestamp": "1553212800", + "volume": "3453.36892821" + }, + { + "close": "3982.52", + "high": "4001.17", + "low": "3957.11", + "open": "3980.40", + "timestamp": "1553299200", + "volume": "2259.56452610" + }, + { + "close": "3969.99", + "high": "3980.97", + "low": "3942.04", + "open": "3979.19", + "timestamp": "1553385600", + "volume": "2204.06560941" + }, + { + "close": "3910.51", + "high": "3980.22", + "low": "3850.45", + "open": "3970.23", + "timestamp": "1553472000", + "volume": "6913.36709721" + }, + { + "close": "3922.58", + "high": "3936.36", + "low": "3879.50", + "open": "3910.00", + "timestamp": "1553558400", + "volume": "4315.60487708" + }, + { + "close": "4025.50", + "high": "4037.11", + "low": "3912.19", + "open": "3922.58", + "timestamp": "1553644800", + "volume": "8151.67504888" + }, + { + "close": "4012.23", + "high": "4025.56", + "low": "3992.60", + "open": "4025.50", + "timestamp": "1553731200", + "volume": "3927.54682157" + }, + { + "close": "4090.00", + "high": "4102.57", + "low": "4005.00", + "open": "4011.00", + "timestamp": "1553817600", + "volume": "8391.03462414" + }, + { + "close": "4094.92", + "high": "4130.36", + "low": "4040.00", + "open": "4090.00", + "timestamp": "1553904000", + "volume": "3923.13646640" + }, + { + "close": "4096.08", + "high": "4101.70", + "low": "4074.29", + "open": "4094.92", + "timestamp": "1553990400", + "volume": "2402.58820541" + }, + { + "close": "4136.32", + "high": "4150.00", + "low": "4052.56", + "open": "4092.02", + "timestamp": "1554076800", + "volume": "7232.98731201" + }, + { + "close": "4899.63", + "high": "5080.00", + "low": "4130.64", + "open": "4133.93", + "timestamp": "1554163200", + "volume": "30686.17351442" + }, + { + "close": "4978.23", + "high": "5345.00", + "low": "4800.50", + "open": "4899.01", + "timestamp": "1554249600", + "volume": "29321.27268405" + }, + { + "close": "4907.94", + "high": "5077.35", + "low": "4778.59", + "open": "4972.83", + "timestamp": "1554336000", + "volume": "15898.11514808" + }, + { + "close": "5039.73", + "high": "5067.62", + "low": "4883.83", + "open": "4911.14", + "timestamp": "1554422400", + "volume": "13023.74651610" + }, + { + "close": "5041.39", + "high": "5240.00", + "low": "4900.00", + "open": "5041.00", + "timestamp": "1554508800", + "volume": "10049.84478829" + }, + { + "close": "5190.85", + "high": "5253.49", + "low": "5028.30", + "open": "5041.92", + "timestamp": "1554595200", + "volume": "10872.51935616" + }, + { + "close": "5287.88", + "high": "5347.37", + "low": "5127.68", + "open": "5192.92", + "timestamp": "1554681600", + "volume": "13344.98151487" + }, + { + "close": "5192.60", + "high": "5288.95", + "low": "5136.01", + "open": "5287.97", + "timestamp": "1554768000", + "volume": "9410.35350033" + }, + { + "close": "5323.47", + "high": "5466.06", + "low": "5161.00", + "open": "5184.03", + "timestamp": "1554854400", + "volume": "10723.93474696" + }, + { + "close": "5040.20", + "high": "5344.31", + "low": "4966.87", + "open": "5323.47", + "timestamp": "1554940800", + "volume": "15052.95606333" + }, + { + "close": "5076.35", + "high": "5122.48", + "low": "4912.00", + "open": "5037.82", + "timestamp": "1555027200", + "volume": "8057.03847684" + }, + { + "close": "5063.63", + "high": "5122.01", + "low": "5033.73", + "open": "5075.74", + "timestamp": "1555113600", + "volume": "4520.43702971" + }, + { + "close": "5162.72", + "high": "5185.26", + "low": "5012.73", + "open": "5064.00", + "timestamp": "1555200000", + "volume": "3443.44728316" + }, + { + "close": "5027.31", + "high": "5192.01", + "low": "4948.57", + "open": "5160.54", + "timestamp": "1555286400", + "volume": "7423.01375858" + }, + { + "close": "5202.43", + "high": "5231.96", + "low": "5014.77", + "open": "5027.33", + "timestamp": "1555372800", + "volume": "7675.40412015" + }, + { + "close": "5233.72", + "high": "5275.07", + "low": "5170.01", + "open": "5201.47", + "timestamp": "1555459200", + "volume": "6741.07720986" + }, + { + "close": "5281.58", + "high": "5325.00", + "low": "5218.23", + "open": "5227.60", + "timestamp": "1555545600", + "volume": "6375.89568714" + }, + { + "close": "5289.91", + "high": "5357.96", + "low": "5180.37", + "open": "5283.00", + "timestamp": "1555632000", + "volume": "5285.60637017" + }, + { + "close": "5318.89", + "high": "5362.97", + "low": "5253.82", + "open": "5289.91", + "timestamp": "1555718400", + "volume": "3665.56962108" + }, + { + "close": "5295.65", + "high": "5346.91", + "low": "5212.80", + "open": "5318.94", + "timestamp": "1555804800", + "volume": "4631.03916752" + }, + { + "close": "5386.80", + "high": "5439.12", + "low": "5249.00", + "open": "5295.96", + "timestamp": "1555891200", + "volume": "7127.11186779" + }, + { + "close": "5531.32", + "high": "5627.00", + "low": "5363.24", + "open": "5388.22", + "timestamp": "1555977600", + "volume": "10132.40317154" + }, + { + "close": "5440.95", + "high": "5623.30", + "low": "5372.00", + "open": "5531.29", + "timestamp": "1556064000", + "volume": "10521.03763127" + }, + { + "close": "5132.55", + "high": "5510.00", + "low": "4991.42", + "open": "5440.95", + "timestamp": "1556150400", + "volume": "9893.93590864" + }, + { + "close": "5155.19", + "high": "5291.48", + "low": "5046.31", + "open": "5132.50", + "timestamp": "1556236800", + "volume": "15033.10177930" + }, + { + "close": "5168.91", + "high": "5218.31", + "low": "5113.00", + "open": "5154.11", + "timestamp": "1556323200", + "volume": "4041.33355341" + }, + { + "close": "5160.98", + "high": "5213.23", + "low": "5099.00", + "open": "5171.51", + "timestamp": "1556409600", + "volume": "3957.25435637" + }, + { + "close": "5149.11", + "high": "5191.96", + "low": "5071.58", + "open": "5152.98", + "timestamp": "1556496000", + "volume": "5753.61513714" + }, + { + "close": "5269.00", + "high": "5287.40", + "low": "5127.05", + "open": "5150.21", + "timestamp": "1556582400", + "volume": "5055.27283570" + }, + { + "close": "5318.42", + "high": "5357.96", + "low": "5263.03", + "open": "5267.86", + "timestamp": "1556668800", + "volume": "4209.28441353" + }, + { + "close": "5385.00", + "high": "5422.94", + "low": "5304.99", + "open": "5322.28", + "timestamp": "1556755200", + "volume": "5908.52172325" + }, + { + "close": "5658.22", + "high": "5796.56", + "low": "5363.10", + "open": "5385.00", + "timestamp": "1556841600", + "volume": "12700.58899257" + }, + { + "close": "5764.65", + "high": "5846.13", + "low": "5510.00", + "open": "5659.82", + "timestamp": "1556928000", + "volume": "8525.45570755" + }, + { + "close": "5709.32", + "high": "5782.55", + "low": "5624.25", + "open": "5766.46", + "timestamp": "1557014400", + "volume": "5162.56182988" + }, + { + "close": "5685.46", + "high": "5755.79", + "low": "5562.44", + "open": "5714.40", + "timestamp": "1557100800", + "volume": "6826.98087533" + }, + { + "close": "5751.54", + "high": "5970.00", + "low": "5686.88", + "open": "5686.88", + "timestamp": "1557187200", + "volume": "10741.56186069" + }, + { + "close": "5940.89", + "high": "5986.00", + "low": "5658.66", + "open": "5751.54", + "timestamp": "1557273600", + "volume": "6320.41354540" + }, + { + "close": "6156.70", + "high": "6172.00", + "low": "5932.83", + "open": "5945.32", + "timestamp": "1557360000", + "volume": "9081.24077807" + }, + { + "close": "6342.84", + "high": "6426.80", + "low": "6105.00", + "open": "6151.66", + "timestamp": "1557446400", + "volume": "13821.71360689" + }, + { + "close": "7217.47", + "high": "7445.00", + "low": "6338.93", + "open": "6338.93", + "timestamp": "1557532800", + "volume": "22331.43531269" + }, + { + "close": "6974.35", + "high": "7585.00", + "low": "6762.57", + "open": "7214.40", + "timestamp": "1557619200", + "volume": "27398.21436403" + }, + { + "close": "7810.05", + "high": "8167.50", + "low": "6863.75", + "open": "6968.84", + "timestamp": "1557705600", + "volume": "27299.34473923" + }, + { + "close": "7986.00", + "high": "8335.56", + "low": "7618.99", + "open": "7810.72", + "timestamp": "1557792000", + "volume": "18881.44115957" + }, + { + "close": "8208.69", + "high": "8300.00", + "low": "7838.00", + "open": "7991.72", + "timestamp": "1557878400", + "volume": "16613.07123458" + }, + { + "close": "7880.00", + "high": "8390.95", + "low": "7654.93", + "open": "8203.97", + "timestamp": "1557964800", + "volume": "17078.70375960" + }, + { + "close": "7351.71", + "high": "7942.09", + "low": "6178.00", + "open": "7879.28", + "timestamp": "1558051200", + "volume": "27307.57969969" + }, + { + "close": "7260.12", + "high": "7493.85", + "low": "7205.57", + "open": "7352.39", + "timestamp": "1558137600", + "volume": "7564.89968988" + }, + { + "close": "8200.00", + "high": "8299.99", + "low": "7247.86", + "open": "7257.82", + "timestamp": "1558224000", + "volume": "15595.26745165" + }, + { + "close": "8005.64", + "high": "8199.97", + "low": "7581.03", + "open": "8193.45", + "timestamp": "1558310400", + "volume": "13426.78750889" + }, + { + "close": "7955.16", + "high": "8117.48", + "low": "7676.27", + "open": "8007.67", + "timestamp": "1558396800", + "volume": "7518.55567690" + }, + { + "close": "7624.95", + "high": "8049.22", + "low": "7505.69", + "open": "7949.18", + "timestamp": "1558483200", + "volume": "8396.82203697" + }, + { + "close": "7880.22", + "high": "7980.00", + "low": "7468.31", + "open": "7622.90", + "timestamp": "1558569600", + "volume": "8370.35625318" + }, + { + "close": "7999.02", + "high": "8188.87", + "low": "7795.95", + "open": "7880.40", + "timestamp": "1558656000", + "volume": "9358.97181211" + }, + { + "close": "8064.64", + "high": "8158.45", + "low": "7939.76", + "open": "7999.02", + "timestamp": "1558742400", + "volume": "3361.65325124" + }, + { + "close": "8733.26", + "high": "8802.29", + "low": "7888.91", + "open": "8066.15", + "timestamp": "1558828800", + "volume": "8526.81164447" + }, + { + "close": "8770.73", + "high": "8939.18", + "low": "8653.68", + "open": "8733.27", + "timestamp": "1558915200", + "volume": "8948.02467376" + }, + { + "close": "8717.96", + "high": "8817.41", + "low": "8540.94", + "open": "8774.45", + "timestamp": "1559001600", + "volume": "6144.01124571" + }, + { + "close": "8663.41", + "high": "8762.39", + "low": "8421.12", + "open": "8715.35", + "timestamp": "1559088000", + "volume": "7584.25785894" + }, + { + "close": "8277.76", + "high": "9096.79", + "low": "8000.00", + "open": "8663.07", + "timestamp": "1559174400", + "volume": "15259.58792555" + }, + { + "close": "8547.20", + "high": "8589.99", + "low": "8109.74", + "open": "8277.76", + "timestamp": "1559260800", + "volume": "9957.91006545" + }, + { + "close": "8556.27", + "high": "8624.72", + "low": "8457.33", + "open": "8545.80", + "timestamp": "1559347200", + "volume": "5167.05130706" + }, + { + "close": "8734.49", + "high": "8833.97", + "low": "8546.01", + "open": "8560.10", + "timestamp": "1559433600", + "volume": "4263.03616530" + }, + { + "close": "8103.64", + "high": "8745.96", + "low": "8049.22", + "open": "8735.84", + "timestamp": "1559520000", + "volume": "9955.03261894" + }, + { + "close": "7665.53", + "high": "8103.63", + "low": "7432.84", + "open": "8103.63", + "timestamp": "1559606400", + "volume": "15485.70215021" + }, + { + "close": "7785.94", + "high": "7924.48", + "low": "7570.90", + "open": "7673.41", + "timestamp": "1559692800", + "volume": "9193.71188764" + }, + { + "close": "7806.07", + "high": "7878.62", + "low": "7449.68", + "open": "7784.62", + "timestamp": "1559779200", + "volume": "8738.66635896" + }, + { + "close": "8001.25", + "high": "8134.99", + "low": "7758.93", + "open": "7801.97", + "timestamp": "1559865600", + "volume": "9012.09615945" + }, + { + "close": "7932.27", + "high": "8061.12", + "low": "7777.67", + "open": "8002.68", + "timestamp": "1559952000", + "volume": "4870.11556741" + }, + { + "close": "7632.99", + "high": "7966.58", + "low": "7511.41", + "open": "7933.17", + "timestamp": "1560038400", + "volume": "3895.84810538" + }, + { + "close": "8021.10", + "high": "8090.00", + "low": "7523.16", + "open": "7629.98", + "timestamp": "1560124800", + "volume": "7150.59429755" + }, + { + "close": "7919.10", + "high": "8057.32", + "low": "7713.34", + "open": "8017.99", + "timestamp": "1560211200", + "volume": "5552.68803771" + }, + { + "close": "8176.27", + "high": "8266.00", + "low": "7821.73", + "open": "7915.70", + "timestamp": "1560297600", + "volume": "8577.16249687" + }, + { + "close": "8238.00", + "high": "8335.56", + "low": "8049.22", + "open": "8171.12", + "timestamp": "1560384000", + "volume": "7237.80039095" + }, + { + "close": "8697.54", + "high": "8737.37", + "low": "8174.92", + "open": "8235.44", + "timestamp": "1560470400", + "volume": "8678.25030630" + }, + { + "close": "8857.19", + "high": "8911.98", + "low": "8623.52", + "open": "8694.74", + "timestamp": "1560556800", + "volume": "5275.75306910" + }, + { + "close": "8974.19", + "high": "9391.85", + "low": "8805.00", + "open": "8857.19", + "timestamp": "1560643200", + "volume": "15018.85335613" + }, + { + "close": "9333.48", + "high": "9477.70", + "low": "8973.02", + "open": "8973.02", + "timestamp": "1560729600", + "volume": "12760.96069746" + }, + { + "close": "9078.84", + "high": "9361.87", + "low": "8918.00", + "open": "9333.48", + "timestamp": "1560816000", + "volume": "11327.45394298" + }, + { + "close": "9278.27", + "high": "9325.85", + "low": "9036.19", + "open": "9076.51", + "timestamp": "1560902400", + "volume": "4687.25984305" + }, + { + "close": "9534.99", + "high": "9600.00", + "low": "9211.08", + "open": "9280.17", + "timestamp": "1560988800", + "volume": "7870.31583938" + }, + { + "close": "10222.12", + "high": "10229.49", + "low": "9534.97", + "open": "9534.99", + "timestamp": "1561075200", + "volume": "12553.09963424" + }, + { + "close": "10661.30", + "high": "11200.00", + "low": "10085.50", + "open": "10222.13", + "timestamp": "1561161600", + "volume": "13709.30032222" + }, + { + "close": "10831.95", + "high": "11247.62", + "low": "10483.33", + "open": "10665.66", + "timestamp": "1561248000", + "volume": "7270.64581160" + }, + { + "close": "11029.63", + "high": "11099.00", + "low": "10551.51", + "open": "10827.23", + "timestamp": "1561334400", + "volume": "8247.39381098" + }, + { + "close": "11751.01", + "high": "11796.37", + "low": "11000.02", + "open": "11030.00", + "timestamp": "1561420800", + "volume": "12133.57175867" + }, + { + "close": "12920.54", + "high": "13880.00", + "low": "11647.07", + "open": "11760.00", + "timestamp": "1561507200", + "volume": "37487.80242579" + }, + { + "close": "11153.74", + "high": "13355.61", + "low": "10300.00", + "open": "12927.44", + "timestamp": "1561593600", + "volume": "36106.96055323" + }, + { + "close": "12354.43", + "high": "12447.46", + "low": "10739.10", + "open": "11153.73", + "timestamp": "1561680000", + "volume": "18718.10158772" + }, + { + "close": "11858.62", + "high": "12386.76", + "low": "11317.03", + "open": "12354.45", + "timestamp": "1561766400", + "volume": "12265.99736052" + }, + { + "close": "10760.10", + "high": "12200.06", + "low": "10651.30", + "open": "11867.35", + "timestamp": "1561852800", + "volume": "12642.61772277" + }, + { + "close": "10577.43", + "high": "11200.41", + "low": "9950.00", + "open": "10759.24", + "timestamp": "1561939200", + "volume": "22917.43710404" + }, + { + "close": "10828.90", + "high": "10942.63", + "low": "9614.08", + "open": "10581.78", + "timestamp": "1562025600", + "volume": "20285.24655295" + }, + { + "close": "11967.43", + "high": "12009.00", + "low": "10830.10", + "open": "10830.10", + "timestamp": "1562112000", + "volume": "19389.85475767" + }, + { + "close": "11146.34", + "high": "12061.04", + "low": "11052.74", + "open": "11970.00", + "timestamp": "1562198400", + "volume": "11185.29420376" + }, + { + "close": "10997.84", + "high": "11440.00", + "low": "10769.15", + "open": "11144.82", + "timestamp": "1562284800", + "volume": "11893.43794970" + }, + { + "close": "11240.00", + "high": "11735.00", + "low": "10982.89", + "open": "10996.82", + "timestamp": "1562371200", + "volume": "7892.17866812" + }, + { + "close": "11469.96", + "high": "11627.00", + "low": "11083.76", + "open": "11233.21", + "timestamp": "1562457600", + "volume": "6683.05546715" + }, + { + "close": "12286.14", + "high": "12398.00", + "low": "11332.19", + "open": "11478.43", + "timestamp": "1562544000", + "volume": "11901.90089462" + }, + { + "close": "12567.23", + "high": "12883.48", + "low": "12030.43", + "open": "12299.94", + "timestamp": "1562630400", + "volume": "15115.55238390" + }, + { + "close": "12098.95", + "high": "13200.00", + "low": "11550.00", + "open": "12574.88", + "timestamp": "1562716800", + "volume": "19838.38994897" + }, + { + "close": "11349.24", + "high": "12104.97", + "low": "10966.81", + "open": "12101.44", + "timestamp": "1562803200", + "volume": "18468.68600043" + }, + { + "close": "11808.91", + "high": "11942.39", + "low": "11083.52", + "open": "11352.74", + "timestamp": "1562889600", + "volume": "9176.67942993" + }, + { + "close": "11378.79", + "high": "11846.61", + "low": "10810.00", + "open": "11811.08", + "timestamp": "1562976000", + "volume": "9391.35341435" + }, + { + "close": "10191.87", + "high": "11467.30", + "low": "10090.00", + "open": "11382.03", + "timestamp": "1563062400", + "volume": "12170.40823763" + }, + { + "close": "10850.00", + "high": "11080.37", + "low": "9855.00", + "open": "10191.87", + "timestamp": "1563148800", + "volume": "16048.02718406" + }, + { + "close": "9412.81", + "high": "11042.11", + "low": "9366.00", + "open": "10848.27", + "timestamp": "1563235200", + "volume": "20761.02748001" + }, + { + "close": "9699.35", + "high": "9993.00", + "low": "9049.54", + "open": "9427.45", + "timestamp": "1563321600", + "volume": "16992.78525932" + }, + { + "close": "10648.60", + "high": "10797.00", + "low": "9280.33", + "open": "9712.15", + "timestamp": "1563408000", + "volume": "18289.54217585" + }, + { + "close": "10535.43", + "high": "10776.99", + "low": "10102.58", + "open": "10638.44", + "timestamp": "1563494400", + "volume": "13787.45646718" + }, + { + "close": "10750.11", + "high": "11120.00", + "low": "10359.17", + "open": "10533.71", + "timestamp": "1563580800", + "volume": "9964.67388282" + }, + { + "close": "10600.24", + "high": "10839.09", + "low": "10325.00", + "open": "10757.15", + "timestamp": "1563667200", + "volume": "5628.16176664" + }, + { + "close": "10328.83", + "high": "10686.89", + "low": "10052.25", + "open": "10605.03", + "timestamp": "1563753600", + "volume": "9371.30644231" + }, + { + "close": "9847.02", + "high": "10327.33", + "low": "9801.88", + "open": "10315.87", + "timestamp": "1563840000", + "volume": "9040.84882621" + }, + { + "close": "9763.67", + "high": "9911.50", + "low": "9514.96", + "open": "9841.42", + "timestamp": "1563926400", + "volume": "9433.34520017" + }, + { + "close": "9883.96", + "high": "10187.00", + "low": "9734.19", + "open": "9781.52", + "timestamp": "1564012800", + "volume": "6377.95751785" + }, + { + "close": "9846.94", + "high": "9897.46", + "low": "9650.00", + "open": "9886.08", + "timestamp": "1564099200", + "volume": "5570.10914746" + }, + { + "close": "9481.37", + "high": "10235.00", + "low": "9299.00", + "open": "9846.94", + "timestamp": "1564185600", + "volume": "9614.10207519" + }, + { + "close": "9533.19", + "high": "9634.50", + "low": "9111.00", + "open": "9467.84", + "timestamp": "1564272000", + "volume": "3860.83481690" + }, + { + "close": "9495.39", + "high": "9725.17", + "low": "9360.00", + "open": "9538.73", + "timestamp": "1564358400", + "volume": "5068.65430930" + }, + { + "close": "9593.62", + "high": "9775.00", + "low": "9373.48", + "open": "9508.21", + "timestamp": "1564444800", + "volume": "5533.97118529" + }, + { + "close": "10085.34", + "high": "10143.20", + "low": "9574.09", + "open": "9592.26", + "timestamp": "1564531200", + "volume": "7917.50847720" + }, + { + "close": "10407.71", + "high": "10499.00", + "low": "9878.09", + "open": "10096.01", + "timestamp": "1564617600", + "volume": "7681.73235986" + }, + { + "close": "10529.51", + "high": "10670.00", + "low": "10318.47", + "open": "10416.79", + "timestamp": "1564704000", + "volume": "9286.86172741" + }, + { + "close": "10821.52", + "high": "10919.00", + "low": "10502.80", + "open": "10529.51", + "timestamp": "1564790400", + "volume": "6996.11722818" + }, + { + "close": "10986.96", + "high": "11085.99", + "low": "10564.96", + "open": "10812.58", + "timestamp": "1564876800", + "volume": "7556.32923024" + }, + { + "close": "11800.00", + "high": "11959.36", + "low": "10986.55", + "open": "10986.55", + "timestamp": "1564963200", + "volume": "17260.45577332" + }, + { + "close": "11470.00", + "high": "12325.00", + "low": "11200.00", + "open": "11800.00", + "timestamp": "1565049600", + "volume": "16420.57916354" + }, + { + "close": "11971.57", + "high": "12145.42", + "low": "11388.01", + "open": "11471.58", + "timestamp": "1565136000", + "volume": "15480.45524249" + }, + { + "close": "11983.43", + "high": "12061.10", + "low": "11450.93", + "open": "11973.46", + "timestamp": "1565222400", + "volume": "10144.46210884" + }, + { + "close": "11859.32", + "high": "12040.00", + "low": "11650.00", + "open": "11985.60", + "timestamp": "1565308800", + "volume": "7336.91484905" + }, + { + "close": "11273.20", + "high": "11976.68", + "low": "11200.00", + "open": "11859.32", + "timestamp": "1565395200", + "volume": "7447.24834124" + }, + { + "close": "11528.73", + "high": "11589.73", + "low": "11080.37", + "open": "11273.03", + "timestamp": "1565481600", + "volume": "4361.39069182" + }, + { + "close": "11385.11", + "high": "11551.57", + "low": "11194.04", + "open": "11527.44", + "timestamp": "1565568000", + "volume": "3417.70935664" + }, + { + "close": "10862.28", + "high": "11446.94", + "low": "10738.58", + "open": "11380.61", + "timestamp": "1565654400", + "volume": "9003.17888634" + }, + { + "close": "10022.99", + "high": "10862.25", + "low": "9888.57", + "open": "10862.25", + "timestamp": "1565740800", + "volume": "12678.94119470" + }, + { + "close": "10301.44", + "high": "10444.66", + "low": "9467.57", + "open": "10022.50", + "timestamp": "1565827200", + "volume": "15083.17326332" + }, + { + "close": "10354.34", + "high": "10540.00", + "low": "9736.96", + "open": "10294.90", + "timestamp": "1565913600", + "volume": "11080.39966131" + }, + { + "close": "10210.89", + "high": "10472.93", + "low": "9974.51", + "open": "10351.18", + "timestamp": "1566000000", + "volume": "3907.52839849" + }, + { + "close": "10318.99", + "high": "10515.00", + "low": "10065.41", + "open": "10221.94", + "timestamp": "1566086400", + "volume": "3398.41986671" + }, + { + "close": "10927.30", + "high": "10940.00", + "low": "10267.56", + "open": "10318.99", + "timestamp": "1566172800", + "volume": "8044.02134828" + }, + { + "close": "10772.22", + "high": "10955.48", + "low": "10549.74", + "open": "10927.30", + "timestamp": "1566259200", + "volume": "5883.59995275" + }, + { + "close": "10134.75", + "high": "10807.54", + "low": "9853.45", + "open": "10778.75", + "timestamp": "1566345600", + "volume": "9812.62171129" + }, + { + "close": "10112.01", + "high": "10238.29", + "low": "9755.53", + "open": "10123.56", + "timestamp": "1566432000", + "volume": "6710.30664788" + }, + { + "close": "10401.60", + "high": "10479.00", + "low": "10051.00", + "open": "10112.45", + "timestamp": "1566518400", + "volume": "5557.29144342" + }, + { + "close": "10149.70", + "high": "10432.00", + "low": "9885.48", + "open": "10401.87", + "timestamp": "1566604800", + "volume": "5106.55673687" + }, + { + "close": "10136.75", + "high": "10355.89", + "low": "9907.86", + "open": "10149.38", + "timestamp": "1566691200", + "volume": "3953.39528117" + }, + { + "close": "10360.97", + "high": "10650.00", + "low": "10136.75", + "open": "10136.75", + "timestamp": "1566777600", + "volume": "7166.67534085" + }, + { + "close": "10167.29", + "high": "10375.53", + "low": "10019.10", + "open": "10355.11", + "timestamp": "1566864000", + "volume": "4781.33502180" + }, + { + "close": "9711.78", + "high": "10280.71", + "low": "9555.00", + "open": "10171.39", + "timestamp": "1566950400", + "volume": "9303.15591906" + }, + { + "close": "9490.00", + "high": "9720.20", + "low": "9320.00", + "open": "9720.20", + "timestamp": "1567036800", + "volume": "7717.10637568" + }, + { + "close": "9579.75", + "high": "9700.00", + "low": "9350.10", + "open": "9490.56", + "timestamp": "1567123200", + "volume": "5317.30970010" + }, + { + "close": "9594.15", + "high": "9682.73", + "low": "9443.19", + "open": "9569.30", + "timestamp": "1567209600", + "volume": "1572.15542709" + }, + { + "close": "9767.53", + "high": "9832.00", + "low": "9538.75", + "open": "9593.50", + "timestamp": "1567296000", + "volume": "1799.36720121" + }, + { + "close": "10384.48", + "high": "10471.00", + "low": "9753.24", + "open": "9767.56", + "timestamp": "1567382400", + "volume": "6144.79883515" + }, + { + "close": "10617.61", + "high": "10783.00", + "low": "10286.00", + "open": "10384.07", + "timestamp": "1567468800", + "volume": "11443.53849727" + }, + { + "close": "10586.26", + "high": "10834.15", + "low": "10378.70", + "open": "10617.72", + "timestamp": "1567555200", + "volume": "10088.72363010" + }, + { + "close": "10573.66", + "high": "10664.13", + "low": "10461.97", + "open": "10586.26", + "timestamp": "1567641600", + "volume": "4555.62463429" + }, + { + "close": "10311.09", + "high": "10949.00", + "low": "10204.18", + "open": "10573.04", + "timestamp": "1567728000", + "volume": "10701.50994422" + }, + { + "close": "10484.39", + "high": "10580.00", + "low": "10297.58", + "open": "10309.04", + "timestamp": "1567814400", + "volume": "3148.50895336" + }, + { + "close": "10400.18", + "high": "10594.88", + "low": "10229.49", + "open": "10497.57", + "timestamp": "1567900800", + "volume": "3130.86103548" + }, + { + "close": "10307.45", + "high": "10542.93", + "low": "10060.00", + "open": "10387.33", + "timestamp": "1567987200", + "volume": "6059.76274364" + }, + { + "close": "10096.00", + "high": "10390.09", + "low": "9910.00", + "open": "10317.62", + "timestamp": "1568073600", + "volume": "4658.92141056" + }, + { + "close": "10154.46", + "high": "10243.01", + "low": "9855.11", + "open": "10093.39", + "timestamp": "1568160000", + "volume": "4614.34849343" + }, + { + "close": "10420.34", + "high": "10465.00", + "low": "10027.52", + "open": "10163.81", + "timestamp": "1568246400", + "volume": "4719.04668642" + }, + { + "close": "10368.65", + "high": "10458.13", + "low": "10153.87", + "open": "10423.99", + "timestamp": "1568332800", + "volume": "3755.41742244" + }, + { + "close": "10355.37", + "high": "10441.47", + "low": "10217.01", + "open": "10365.81", + "timestamp": "1568419200", + "volume": "2656.15453049" + }, + { + "close": "10305.74", + "high": "10383.20", + "low": "10258.49", + "open": "10362.52", + "timestamp": "1568505600", + "volume": "2297.72276878" + }, + { + "close": "10269.98", + "high": "10378.07", + "low": "10060.95", + "open": "10320.36", + "timestamp": "1568592000", + "volume": "5496.03749388" + }, + { + "close": "10195.73", + "high": "10280.53", + "low": "10130.59", + "open": "10257.20", + "timestamp": "1568678400", + "volume": "5078.59865576" + }, + { + "close": "10152.09", + "high": "10263.65", + "low": "10080.00", + "open": "10182.96", + "timestamp": "1568764800", + "volume": "3952.00683587" + }, + { + "close": "10271.53", + "high": "10380.07", + "low": "9600.00", + "open": "10161.59", + "timestamp": "1568851200", + "volume": "7455.91141166" + }, + { + "close": "10169.02", + "high": "10308.04", + "low": "10055.00", + "open": "10284.72", + "timestamp": "1568937600", + "volume": "4463.38202069" + }, + { + "close": "9985.28", + "high": "10180.43", + "low": "9913.35", + "open": "10169.02", + "timestamp": "1569024000", + "volume": "4148.89981496" + }, + { + "close": "10020.58", + "high": "10093.24", + "low": "9842.35", + "open": "9973.00", + "timestamp": "1569110400", + "volume": "3213.95409570" + }, + { + "close": "9682.19", + "high": "10048.06", + "low": "9606.00", + "open": "10022.38", + "timestamp": "1569196800", + "volume": "5447.96313246" + }, + { + "close": "8536.82", + "high": "9782.00", + "low": "7998.00", + "open": "9685.69", + "timestamp": "1569283200", + "volume": "28154.41355726" + }, + { + "close": "8432.16", + "high": "8746.83", + "low": "8216.00", + "open": "8536.71", + "timestamp": "1569369600", + "volume": "17435.86789130" + }, + { + "close": "8055.03", + "high": "8467.89", + "low": "7733.99", + "open": "8443.44", + "timestamp": "1569456000", + "volume": "16662.32021152" + }, + { + "close": "8187.72", + "high": "8294.04", + "low": "7866.00", + "open": "8055.25", + "timestamp": "1569542400", + "volume": "10165.85293694" + }, + { + "close": "8218.07", + "high": "8356.40", + "low": "8009.84", + "open": "8199.96", + "timestamp": "1569628800", + "volume": "6315.48953894" + }, + { + "close": "8047.60", + "high": "8244.07", + "low": "7902.66", + "open": "8218.07", + "timestamp": "1569715200", + "volume": "5366.57071770" + }, + { + "close": "8298.45", + "high": "8368.50", + "low": "7714.70", + "open": "8060.13", + "timestamp": "1569801600", + "volume": "9518.99210777" + }, + { + "close": "8319.01", + "high": "8531.25", + "low": "8195.42", + "open": "8304.47", + "timestamp": "1569888000", + "volume": "10224.59198253" + }, + { + "close": "8373.42", + "high": "8393.39", + "low": "8170.91", + "open": "8326.41", + "timestamp": "1569974400", + "volume": "4952.53411520" + }, + { + "close": "8239.92", + "high": "8419.23", + "low": "8029.14", + "open": "8377.68", + "timestamp": "1570060800", + "volume": "8701.12039607" + }, + { + "close": "8152.07", + "high": "8244.93", + "low": "7986.65", + "open": "8243.39", + "timestamp": "1570147200", + "volume": "6278.78141904" + }, + { + "close": "8145.17", + "high": "8195.00", + "low": "8016.26", + "open": "8157.89", + "timestamp": "1570233600", + "volume": "4445.10406787" + }, + { + "close": "7854.12", + "high": "8176.46", + "low": "7772.71", + "open": "8150.73", + "timestamp": "1570320000", + "volume": "6454.53572694" + }, + { + "close": "8205.53", + "high": "8313.70", + "low": "7763.54", + "open": "7863.75", + "timestamp": "1570406400", + "volume": "9363.32718459" + }, + { + "close": "8178.54", + "high": "8344.12", + "low": "8109.74", + "open": "8211.04", + "timestamp": "1570492800", + "volume": "3577.72287319" + }, + { + "close": "8586.34", + "high": "8707.80", + "low": "8110.00", + "open": "8185.85", + "timestamp": "1570579200", + "volume": "11634.19484623" + }, + { + "close": "8582.11", + "high": "8666.84", + "low": "8450.61", + "open": "8586.57", + "timestamp": "1570665600", + "volume": "7435.43199033" + }, + { + "close": "8265.55", + "high": "8820.00", + "low": "8222.88", + "open": "8589.08", + "timestamp": "1570752000", + "volume": "7824.58718752" + }, + { + "close": "8303.43", + "high": "8427.76", + "low": "8254.68", + "open": "8265.16", + "timestamp": "1570838400", + "volume": "1828.83312447" + }, + { + "close": "8282.96", + "high": "8474.48", + "low": "8132.91", + "open": "8303.43", + "timestamp": "1570924800", + "volume": "4445.28381368" + }, + { + "close": "8362.99", + "high": "8416.67", + "low": "8215.41", + "open": "8278.39", + "timestamp": "1571011200", + "volume": "4294.60738920" + }, + { + "close": "8155.13", + "high": "8420.85", + "low": "8086.00", + "open": "8353.33", + "timestamp": "1571097600", + "volume": "5044.66127938" + }, + { + "close": "7995.89", + "high": "8179.10", + "low": "7912.66", + "open": "8162.45", + "timestamp": "1571184000", + "volume": "8644.40011646" + }, + { + "close": "8073.32", + "high": "8130.71", + "low": "7936.71", + "open": "7995.73", + "timestamp": "1571270400", + "volume": "5395.88599206" + }, + { + "close": "7955.08", + "high": "8120.77", + "low": "7811.62", + "open": "8069.26", + "timestamp": "1571356800", + "volume": "5611.09353737" + }, + { + "close": "7960.49", + "high": "8096.76", + "low": "7875.00", + "open": "7950.48", + "timestamp": "1571443200", + "volume": "3461.12529207" + }, + { + "close": "8235.74", + "high": "8314.77", + "low": "7874.68", + "open": "7965.39", + "timestamp": "1571529600", + "volume": "6358.92499072" + }, + { + "close": "8213.65", + "high": "8352.00", + "low": "8156.00", + "open": "8236.49", + "timestamp": "1571616000", + "volume": "4919.73416831" + }, + { + "close": "8025.90", + "high": "8314.77", + "low": "7989.15", + "open": "8206.53", + "timestamp": "1571702400", + "volume": "5678.93483059" + }, + { + "close": "7470.77", + "high": "8052.04", + "low": "7293.55", + "open": "8021.57", + "timestamp": "1571788800", + "volume": "13306.18266092" + }, + { + "close": "7435.00", + "high": "7512.00", + "low": "7356.00", + "open": "7470.77", + "timestamp": "1571875200", + "volume": "4997.42309350" + }, + { + "close": "8662.66", + "high": "8784.29", + "low": "7393.14", + "open": "7427.00", + "timestamp": "1571961600", + "volume": "19113.79549622" + }, + { + "close": "9252.75", + "high": "10350.00", + "low": "8642.46", + "open": "8677.09", + "timestamp": "1572048000", + "volume": "38751.80025476" + }, + { + "close": "9557.08", + "high": "9819.92", + "low": "9092.66", + "open": "9262.72", + "timestamp": "1572134400", + "volume": "17783.02515594" + }, + { + "close": "9216.44", + "high": "9950.00", + "low": "9177.84", + "open": "9547.32", + "timestamp": "1572220800", + "volume": "14722.01859796" + }, + { + "close": "9426.94", + "high": "9573.35", + "low": "9051.48", + "open": "9216.39", + "timestamp": "1572307200", + "volume": "9059.61157854" + }, + { + "close": "9159.94", + "high": "9437.06", + "low": "8985.25", + "open": "9426.94", + "timestamp": "1572393600", + "volume": "8814.43804818" + }, + { + "close": "9150.07", + "high": "9438.61", + "low": "8961.53", + "open": "9169.55", + "timestamp": "1572480000", + "volume": "10113.15940929" + }, + { + "close": "9250.45", + "high": "9303.53", + "low": "9054.60", + "open": "9158.08", + "timestamp": "1572566400", + "volume": "6640.55238456" + }, + { + "close": "9304.75", + "high": "9396.91", + "low": "9201.19", + "open": "9250.70", + "timestamp": "1572652800", + "volume": "2701.13696278" + }, + { + "close": "9207.00", + "high": "9384.32", + "low": "9067.00", + "open": "9304.75", + "timestamp": "1572739200", + "volume": "2539.21833111" + }, + { + "close": "9410.76", + "high": "9586.50", + "low": "9122.33", + "open": "9207.00", + "timestamp": "1572825600", + "volume": "4962.44231548" + }, + { + "close": "9320.14", + "high": "9485.00", + "low": "9165.20", + "open": "9410.76", + "timestamp": "1572912000", + "volume": "4979.57899177" + }, + { + "close": "9344.78", + "high": "9448.19", + "low": "9254.68", + "open": "9319.10", + "timestamp": "1572998400", + "volume": "4670.23465673" + }, + { + "close": "9199.36", + "high": "9373.48", + "low": "9080.00", + "open": "9346.02", + "timestamp": "1573084800", + "volume": "3975.97661681" + }, + { + "close": "8767.37", + "high": "9253.39", + "low": "8661.00", + "open": "9209.30", + "timestamp": "1573171200", + "volume": "9699.74677043" + }, + { + "close": "8812.21", + "high": "8876.94", + "low": "8720.00", + "open": "8760.38", + "timestamp": "1573257600", + "volume": "2271.51792167" + }, + { + "close": "9024.49", + "high": "9142.33", + "low": "8750.85", + "open": "8806.85", + "timestamp": "1573344000", + "volume": "2663.27825012" + }, + { + "close": "8720.36", + "high": "9075.32", + "low": "8593.00", + "open": "9029.88", + "timestamp": "1573430400", + "volume": "6392.97505953" + }, + { + "close": "8813.91", + "high": "8872.47", + "low": "8549.00", + "open": "8720.36", + "timestamp": "1573516800", + "volume": "4721.90610684" + }, + { + "close": "8755.24", + "high": "8839.46", + "low": "8700.00", + "open": "8817.00", + "timestamp": "1573603200", + "volume": "3185.82098874" + }, + { + "close": "8636.90", + "high": "8791.78", + "low": "8555.00", + "open": "8765.53", + "timestamp": "1573689600", + "volume": "3412.80581524" + }, + { + "close": "8463.49", + "high": "8799.03", + "low": "8363.00", + "open": "8632.07", + "timestamp": "1573776000", + "volume": "5213.70141434" + }, + { + "close": "8484.63", + "high": "8539.53", + "low": "8423.00", + "open": "8459.38", + "timestamp": "1573862400", + "volume": "1180.57339029" + }, + { + "close": "8499.31", + "high": "8631.60", + "low": "8375.00", + "open": "8485.61", + "timestamp": "1573948800", + "volume": "2074.00770126" + }, + { + "close": "8170.65", + "high": "8508.40", + "low": "8010.70", + "open": "8499.53", + "timestamp": "1574035200", + "volume": "4825.65562506" + }, + { + "close": "8121.63", + "high": "8197.77", + "low": "7989.15", + "open": "8176.90", + "timestamp": "1574121600", + "volume": "4412.39464174" + }, + { + "close": "8088.44", + "high": "8231.04", + "low": "8027.28", + "open": "8124.08", + "timestamp": "1574208000", + "volume": "2996.00619203" + }, + { + "close": "7611.51", + "high": "8116.92", + "low": "7394.09", + "open": "8085.54", + "timestamp": "1574294400", + "volume": "9374.99957046" + }, + { + "close": "7285.85", + "high": "7714.70", + "low": "6785.00", + "open": "7612.23", + "timestamp": "1574380800", + "volume": "20120.14646602" + }, + { + "close": "7320.39", + "high": "7356.49", + "low": "7102.16", + "open": "7276.21", + "timestamp": "1574467200", + "volume": "5550.47222776" + }, + { + "close": "6908.36", + "high": "7349.68", + "low": "6861.96", + "open": "7330.98", + "timestamp": "1574553600", + "volume": "6047.01776023" + }, + { + "close": "7122.14", + "high": "7380.00", + "low": "6515.00", + "open": "6900.90", + "timestamp": "1574640000", + "volume": "18716.60131311" + }, + { + "close": "7159.22", + "high": "7344.91", + "low": "7018.78", + "open": "7127.12", + "timestamp": "1574726400", + "volume": "7643.84956815" + }, + { + "close": "7527.84", + "high": "7676.27", + "low": "6847.72", + "open": "7168.74", + "timestamp": "1574812800", + "volume": "15156.99193450" + }, + { + "close": "7436.72", + "high": "7659.92", + "low": "7372.19", + "open": "7517.82", + "timestamp": "1574899200", + "volume": "6925.58489749" + }, + { + "close": "7753.69", + "high": "7870.35", + "low": "7411.17", + "open": "7429.32", + "timestamp": "1574985600", + "volume": "7658.87160206" + }, + { + "close": "7550.67", + "high": "7815.00", + "low": "7452.08", + "open": "7753.69", + "timestamp": "1575072000", + "volume": "5446.27351349" + }, + { + "close": "7412.66", + "high": "7560.20", + "low": "7233.87", + "open": "7560.20", + "timestamp": "1575158400", + "volume": "5477.97290774" + }, + { + "close": "7309.64", + "high": "7431.07", + "low": "7140.08", + "open": "7411.75", + "timestamp": "1575244800", + "volume": "4324.30016255" + }, + { + "close": "7300.43", + "high": "7415.00", + "low": "7238.04", + "open": "7317.94", + "timestamp": "1575331200", + "volume": "2552.20229834" + }, + { + "close": "7197.78", + "high": "7772.71", + "low": "7087.09", + "open": "7299.20", + "timestamp": "1575417600", + "volume": "7737.39153487" + }, + { + "close": "7390.42", + "high": "7500.00", + "low": "7150.06", + "open": "7199.58", + "timestamp": "1575504000", + "volume": "4641.75678879" + }, + { + "close": "7541.79", + "high": "7618.99", + "low": "7305.56", + "open": "7397.35", + "timestamp": "1575590400", + "volume": "4167.24016320" + }, + { + "close": "7502.65", + "high": "7638.88", + "low": "7486.70", + "open": "7535.46", + "timestamp": "1575676800", + "volume": "2034.57371900" + }, + { + "close": "7524.26", + "high": "7580.00", + "low": "7382.69", + "open": "7505.86", + "timestamp": "1575763200", + "volume": "1798.77041268" + }, + { + "close": "7340.52", + "high": "7666.00", + "low": "7268.03", + "open": "7516.80", + "timestamp": "1575849600", + "volume": "6582.47031165" + }, + { + "close": "7216.07", + "high": "7400.00", + "low": "7150.23", + "open": "7332.05", + "timestamp": "1575936000", + "volume": "4090.62092926" + }, + { + "close": "7207.42", + "high": "7271.00", + "low": "7122.28", + "open": "7224.50", + "timestamp": "1576022400", + "volume": "3419.93896517" + }, + { + "close": "7188.42", + "high": "7296.19", + "low": "7072.20", + "open": "7208.95", + "timestamp": "1576108800", + "volume": "4376.88899274" + }, + { + "close": "7257.47", + "high": "7302.35", + "low": "7179.65", + "open": "7185.15", + "timestamp": "1576195200", + "volume": "3178.07849595" + }, + { + "close": "7059.03", + "high": "7269.00", + "low": "7007.48", + "open": "7255.94", + "timestamp": "1576281600", + "volume": "2012.34890643" + }, + { + "close": "7115.08", + "high": "7225.23", + "low": "7007.00", + "open": "7066.35", + "timestamp": "1576368000", + "volume": "1848.34572822" + }, + { + "close": "6882.19", + "high": "7147.91", + "low": "6820.00", + "open": "7115.08", + "timestamp": "1576454400", + "volume": "5923.05547919" + }, + { + "close": "6612.30", + "high": "6938.77", + "low": "6550.00", + "open": "6882.08", + "timestamp": "1576540800", + "volume": "7107.25638535" + }, + { + "close": "7286.91", + "high": "7449.68", + "low": "6425.00", + "open": "6619.53", + "timestamp": "1576627200", + "volume": "12873.63439214" + }, + { + "close": "7149.57", + "high": "7372.12", + "low": "7000.00", + "open": "7286.91", + "timestamp": "1576713600", + "volume": "5936.55634536" + }, + { + "close": "7194.11", + "high": "7218.11", + "low": "7072.61", + "open": "7157.53", + "timestamp": "1576800000", + "volume": "3201.66392251" + }, + { + "close": "7147.40", + "high": "7194.13", + "low": "7109.73", + "open": "7194.13", + "timestamp": "1576886400", + "volume": "1689.08199513" + }, + { + "close": "7509.70", + "high": "7530.00", + "low": "7124.52", + "open": "7147.40", + "timestamp": "1576972800", + "volume": "3796.22608082" + }, + { + "close": "7316.17", + "high": "7692.98", + "low": "7247.86", + "open": "7521.88", + "timestamp": "1577059200", + "volume": "6710.76736040" + }, + { + "close": "7251.52", + "high": "7431.10", + "low": "7156.00", + "open": "7317.47", + "timestamp": "1577145600", + "volume": "4194.58980335" + }, + { + "close": "7195.79", + "high": "7266.81", + "low": "7110.73", + "open": "7247.45", + "timestamp": "1577232000", + "volume": "1504.52751296" + }, + { + "close": "7188.30", + "high": "7432.00", + "low": "7150.00", + "open": "7195.80", + "timestamp": "1577318400", + "volume": "3116.74715162" + }, + { + "close": "7246.00", + "high": "7255.37", + "low": "7052.00", + "open": "7195.17", + "timestamp": "1577404800", + "volume": "4024.57086599" + }, + { + "close": "7296.24", + "high": "7349.65", + "low": "7231.00", + "open": "7247.70", + "timestamp": "1577491200", + "volume": "1579.70272647" + }, + { + "close": "7385.54", + "high": "7524.46", + "low": "7274.43", + "open": "7297.43", + "timestamp": "1577577600", + "volume": "2583.85134193" + }, + { + "close": "7220.24", + "high": "7384.90", + "low": "7199.00", + "open": "7372.79", + "timestamp": "1577664000", + "volume": "3722.91334933" + }, + { + "close": "7168.36", + "high": "7302.35", + "low": "7112.55", + "open": "7222.74", + "timestamp": "1577750400", + "volume": "2638.69130899" + } + ], + "pair": "BTC/USD" + } + }, + "queryString": "end=1577836799\u0026limit=1000\u0026start=1546300800\u0026step=86400", + "bodyParams": "", + "headers": { + "Referer": [ + "https://www.bitstamp.net/api/v2/ohlc/btcusd?end=1577836799\u0026limit=1000\u0026start=1546300800\u0026step=86400" + ] + } + } + ] + }, "/api/v2/open_orders/all/": { "POST": [ { diff --git a/testdata/http_mock/poloniex/poloniex.json b/testdata/http_mock/poloniex/poloniex.json index 0d601c66..e9031840 100644 --- a/testdata/http_mock/poloniex/poloniex.json +++ b/testdata/http_mock/poloniex/poloniex.json @@ -2,6373 +2,8394 @@ "routes": { "/public": { "GET": [ + { + "data": [ + { + "close": 0.00518763, + "date": 1588741402, + "high": 0.00518763, + "low": 0.00518763, + "open": 0.00518763, + "quoteVolume": 0, + "volume": 0, + "weightedAverage": 0.00518763 + }, + { + "close": 0.00518401, + "date": 1588741500, + "high": 0.00518818, + "low": 0.00518401, + "open": 0.00518818, + "quoteVolume": 65.00109374, + "volume": 0.33723736, + "weightedAverage": 0.00518817 + }, + { + "close": 0.0051839, + "date": 1588741800, + "high": 0.00518444, + "low": 0.0051839, + "open": 0.00518444, + "quoteVolume": 0.43601529, + "volume": 0.00226025, + "weightedAverage": 0.0051839 + }, + { + "close": 0.00518201, + "date": 1588742100, + "high": 0.00518614, + "low": 0.00518201, + "open": 0.00518401, + "quoteVolume": 90.59918563, + "volume": 0.46972322, + "weightedAverage": 0.00518462 + }, + { + "close": 0.00518373, + "date": 1588742400, + "high": 0.0051847, + "low": 0.00517971, + "open": 0.00517972, + "quoteVolume": 8.6152343, + "volume": 0.04465903, + "weightedAverage": 0.00518372 + }, + { + "close": 0.00519266, + "date": 1588742700, + "high": 0.00519266, + "low": 0.00518553, + "open": 0.00518553, + "quoteVolume": 81.37365353, + "volume": 0.42217513, + "weightedAverage": 0.0051881 + }, + { + "close": 0.00519104, + "date": 1588743000, + "high": 0.00519597, + "low": 0.00519104, + "open": 0.00519597, + "quoteVolume": 1.10021375, + "volume": 0.0057163, + "weightedAverage": 0.00519562 + }, + { + "close": 0.00518988, + "date": 1588743300, + "high": 0.00518988, + "low": 0.00518905, + "open": 0.00518905, + "quoteVolume": 0.00086904, + "volume": 0.0000045, + "weightedAverage": 0.00518961 + }, + { + "close": 0.00519395, + "date": 1588743600, + "high": 0.00519395, + "low": 0.00518901, + "open": 0.00518903, + "quoteVolume": 0.03395903, + "volume": 0.0001763, + "weightedAverage": 0.00519181 + }, + { + "close": 0.00519098, + "date": 1588743900, + "high": 0.00519526, + "low": 0.00519098, + "open": 0.00519126, + "quoteVolume": 209.14700529, + "volume": 1.08631528, + "weightedAverage": 0.00519402 + }, + { + "close": 0.00518534, + "date": 1588744200, + "high": 0.00519198, + "low": 0.00518534, + "open": 0.00519179, + "quoteVolume": 176.01313731, + "volume": 0.91303131, + "weightedAverage": 0.00518729 + }, + { + "close": 0.00518573, + "date": 1588744500, + "high": 0.00518752, + "low": 0.00518572, + "open": 0.00518752, + "quoteVolume": 97.1672869, + "volume": 0.50399966, + "weightedAverage": 0.00518692 + }, + { + "close": 0.00518864, + "date": 1588744800, + "high": 0.00519153, + "low": 0.00518657, + "open": 0.00518826, + "quoteVolume": 74.95742178, + "volume": 0.38903394, + "weightedAverage": 0.00519006 + } + ], + "queryString": "command=returnChartData\u0026currencyPair=BTC_LTC\u0026end=1588745003\u0026period=300\u0026start=1588741402", + "bodyParams": "", + "headers": {} + }, + { + "data": { + "error": "Invalid currency pair." + }, + "queryString": "command=returnChartData\u0026currencyPair=BTC_LTCC\u0026end=1588745003\u0026period=300\u0026start=1588741402", + "bodyParams": "", + "headers": {} + }, + { + "data": { + "BTC_ARDR": { + "baseVolume": "3.03108905", + "high24hr": "0.00001333", + "highestBid": "0.00001248", + "id": 177, + "isFrozen": "0", + "last": "0.00001248", + "low24hr": "0.00001220", + "lowestAsk": "0.00001252", + "percentChange": "-0.01732283", + "quoteVolume": "238083.87187020" + }, + "BTC_ATOM": { + "baseVolume": "39.67100725", + "high24hr": "0.00077303", + "highestBid": "0.00074800", + "id": 253, + "isFrozen": "0", + "last": "0.00074800", + "low24hr": "0.00074568", + "lowestAsk": "0.00074909", + "percentChange": "-0.02023708", + "quoteVolume": "52381.46699854" + }, + "BTC_BAT": { + "baseVolume": "2.13275613", + "high24hr": "0.00004245", + "highestBid": "0.00004088", + "id": 210, + "isFrozen": "0", + "last": "0.00004095", + "low24hr": "0.00004087", + "lowestAsk": "0.00004095", + "percentChange": "-0.02777777", + "quoteVolume": "51122.24173657" + }, + "BTC_BCHABC": { + "baseVolume": "36.20758372", + "high24hr": "0.05032733", + "highestBid": "0.04900933", + "id": 236, + "isFrozen": "0", + "last": "0.04900933", + "low24hr": "0.04900932", + "lowestAsk": "0.04904416", + "percentChange": "-0.00782334", + "quoteVolume": "733.46224700" + }, + "BTC_BCHSV": { + "baseVolume": "107.87823714", + "high24hr": "0.02449024", + "highestBid": "0.02375483", + "id": 238, + "isFrozen": "0", + "last": "0.02387932", + "low24hr": "0.02353105", + "lowestAsk": "0.02389139", + "percentChange": "0.00192628", + "quoteVolume": "4528.05891976" + }, + "BTC_BCN": { + "baseVolume": "2.10597417", + "high24hr": "0.00000012", + "highestBid": "0.00000011", + "id": 7, + "isFrozen": "0", + "last": "0.00000012", + "low24hr": "0.00000011", + "lowestAsk": "0.00000012", + "percentChange": "0.00000000", + "quoteVolume": "18580513.78451419" + }, + "BTC_BNT": { + "baseVolume": "0.06242819", + "high24hr": "0.00009088", + "highestBid": "0.00008793", + "id": 232, + "isFrozen": "0", + "last": "0.00008844", + "low24hr": "0.00008666", + "lowestAsk": "0.00008843", + "percentChange": "-0.02609844", + "quoteVolume": "708.36829451" + }, + "BTC_BTS": { + "baseVolume": "11.31814868", + "high24hr": "0.00000804", + "highestBid": "0.00000770", + "id": 14, + "isFrozen": "0", + "last": "0.00000770", + "low24hr": "0.00000764", + "lowestAsk": "0.00000771", + "percentChange": "-0.00900900", + "quoteVolume": "1422525.76536768" + }, + "BTC_CLAM": { + "baseVolume": "2.91928382", + "high24hr": "0.00060427", + "highestBid": "0.00058663", + "id": 20, + "isFrozen": "0", + "last": "0.00058833", + "low24hr": "0.00056130", + "lowestAsk": "0.00059410", + "percentChange": "0.00896930", + "quoteVolume": "5008.88307610" + }, + "BTC_CVC": { + "baseVolume": "0.75331703", + "high24hr": "0.00001123", + "highestBid": "0.00001074", + "id": 194, + "isFrozen": "0", + "last": "0.00001081", + "low24hr": "0.00001070", + "lowestAsk": "0.00001081", + "percentChange": "0.01217228", + "quoteVolume": "68777.88900435" + }, + "BTC_DASH": { + "baseVolume": "121.56922496", + "high24hr": "0.01901934", + "highestBid": "0.01880000", + "id": 24, + "isFrozen": "0", + "last": "0.01880000", + "low24hr": "0.01830550", + "lowestAsk": "0.01880610", + "percentChange": "-0.00407587", + "quoteVolume": "6476.07273599" + }, + "BTC_DCR": { + "baseVolume": "2.34160137", + "high24hr": "0.00350651", + "highestBid": "0.00343891", + "id": 162, + "isFrozen": "0", + "last": "0.00346266", + "low24hr": "0.00336074", + "lowestAsk": "0.00346266", + "percentChange": "0.00119414", + "quoteVolume": "684.41654989" + }, + "BTC_DGB": { + "baseVolume": "16.15966014", + "high24hr": "0.00000172", + "highestBid": "0.00000162", + "id": 25, + "isFrozen": "0", + "last": "0.00000162", + "low24hr": "0.00000160", + "lowestAsk": "0.00000164", + "percentChange": "-0.04142011", + "quoteVolume": "9761759.50030071" + }, + "BTC_DOGE": { + "baseVolume": "19.98598120", + "high24hr": "0.00000039", + "highestBid": "0.00000038", + "id": 27, + "isFrozen": "0", + "last": "0.00000039", + "low24hr": "0.00000038", + "lowestAsk": "0.00000039", + "percentChange": "0.02631578", + "quoteVolume": "52317925.99866673" + }, + "BTC_EOS": { + "baseVolume": "18.59593565", + "high24hr": "0.00081224", + "highestBid": "0.00080063", + "id": 201, + "isFrozen": "0", + "last": "0.00080185", + "low24hr": "0.00079800", + "lowestAsk": "0.00080171", + "percentChange": "-0.00661554", + "quoteVolume": "23099.92132301" + }, + "BTC_ETC": { + "baseVolume": "10.91386394", + "high24hr": "0.00106777", + "highestBid": "0.00102764", + "id": 171, + "isFrozen": "0", + "last": "0.00102820", + "low24hr": "0.00102551", + "lowestAsk": "0.00103251", + "percentChange": "-0.02908404", + "quoteVolume": "10520.96374951" + }, + "BTC_ETH": { + "baseVolume": "155.94348625", + "high24hr": "0.03119996", + "highestBid": "0.03079004", + "id": 148, + "isFrozen": "0", + "last": "0.03079500", + "low24hr": "0.03042230", + "lowestAsk": "0.03081459", + "percentChange": "0.00818332", + "quoteVolume": "5059.54434879" + }, + "BTC_FCT": { + "baseVolume": "10.36741741", + "high24hr": "0.00078617", + "highestBid": "0.00073982", + "id": 155, + "isFrozen": "0", + "last": "0.00073952", + "low24hr": "0.00072961", + "lowestAsk": "0.00074498", + "percentChange": "-0.02689615", + "quoteVolume": "13773.13207446" + }, + "BTC_FOAM": { + "baseVolume": "0.89731724", + "high24hr": "0.00000555", + "highestBid": "0.00000545", + "id": 246, + "isFrozen": "0", + "last": "0.00000550", + "low24hr": "0.00000515", + "lowestAsk": "0.00000550", + "percentChange": "0.05769230", + "quoteVolume": "166155.79008468" + }, + "BTC_GAME": { + "baseVolume": "3.82370347", + "high24hr": "0.00001391", + "highestBid": "0.00001154", + "id": 38, + "isFrozen": "0", + "last": "0.00001153", + "low24hr": "0.00001128", + "lowestAsk": "0.00001176", + "percentChange": "-0.00945017", + "quoteVolume": "300446.22176630" + }, + "BTC_GAS": { + "baseVolume": "0.77232780", + "high24hr": "0.00041046", + "highestBid": "0.00038985", + "id": 198, + "isFrozen": "0", + "last": "0.00039654", + "low24hr": "0.00038985", + "lowestAsk": "0.00039595", + "percentChange": "-0.00284155", + "quoteVolume": "1916.80182489" + }, + "BTC_GNT": { + "baseVolume": "4.93328876", + "high24hr": "0.00001291", + "highestBid": "0.00001260", + "id": 185, + "isFrozen": "0", + "last": "0.00001257", + "low24hr": "0.00001152", + "lowestAsk": "0.00001266", + "percentChange": "0.06887755", + "quoteVolume": "404745.01492216" + }, + "BTC_GRIN": { + "baseVolume": "24.37429922", + "high24hr": "0.00041400", + "highestBid": "0.00038600", + "id": 251, + "isFrozen": "0", + "last": "0.00038601", + "low24hr": "0.00036639", + "lowestAsk": "0.00038831", + "percentChange": "-0.01686065", + "quoteVolume": "62838.47716938" + }, + "BTC_KNC": { + "baseVolume": "1.07605151", + "high24hr": "0.00003550", + "highestBid": "0.00003333", + "id": 207, + "isFrozen": "0", + "last": "0.00003377", + "low24hr": "0.00003371", + "lowestAsk": "0.00003373", + "percentChange": "-0.00295246", + "quoteVolume": "31066.52899332" + }, + "BTC_LBC": { + "baseVolume": "3.00058286", + "high24hr": "0.00000459", + "highestBid": "0.00000438", + "id": 167, + "isFrozen": "0", + "last": "0.00000437", + "low24hr": "0.00000411", + "lowestAsk": "0.00000445", + "percentChange": "0.01627906", + "quoteVolume": "699495.42159049" + }, + "BTC_LOOM": { + "baseVolume": "5.48711026", + "high24hr": "0.00001100", + "highestBid": "0.00001042", + "id": 213, + "isFrozen": "0", + "last": "0.00001042", + "low24hr": "0.00000982", + "lowestAsk": "0.00001048", + "percentChange": "0.03066271", + "quoteVolume": "522861.14578247" + }, + "BTC_LPT": { + "baseVolume": "2.49829681", + "high24hr": "0.00063805", + "highestBid": "0.00062300", + "id": 250, + "isFrozen": "0", + "last": "0.00062300", + "low24hr": "0.00057190", + "lowestAsk": "0.00062500", + "percentChange": "-0.01954612", + "quoteVolume": "4080.23729692" + }, + "BTC_LSK": { + "baseVolume": "5.21884194", + "high24hr": "0.00026000", + "highestBid": "0.00025678", + "id": 163, + "isFrozen": "0", + "last": "0.00025799", + "low24hr": "0.00024928", + "lowestAsk": "0.00025836", + "percentChange": "0.02907857", + "quoteVolume": "20377.01855963" + }, + "BTC_LTC": { + "baseVolume": "666.94447027", + "high24hr": "0.01630000", + "highestBid": "0.01613601", + "id": 50, + "isFrozen": "0", + "last": "0.01617495", + "low24hr": "0.01497000", + "lowestAsk": "0.01617366", + "percentChange": "0.06261463", + "quoteVolume": "42339.40507638" + }, + "BTC_MAID": { + "baseVolume": "2.56267002", + "high24hr": "0.00002442", + "highestBid": "0.00002362", + "id": 51, + "isFrozen": "0", + "last": "0.00002364", + "low24hr": "0.00002351", + "lowestAsk": "0.00002364", + "percentChange": "-0.03194103", + "quoteVolume": "107646.79242367" + }, + "BTC_MANA": { + "baseVolume": "2.70084416", + "high24hr": "0.00000765", + "highestBid": "0.00000740", + "id": 229, + "isFrozen": "0", + "last": "0.00000745", + "low24hr": "0.00000734", + "lowestAsk": "0.00000743", + "percentChange": "-0.00534045", + "quoteVolume": "362727.87722537" + }, + "BTC_NAV": { + "baseVolume": "0.85599154", + "high24hr": "0.00002880", + "highestBid": "0.00002824", + "id": 61, + "isFrozen": "0", + "last": "0.00002838", + "low24hr": "0.00002736", + "lowestAsk": "0.00002850", + "percentChange": "0.03728070", + "quoteVolume": "30239.29066641" + }, + "BTC_NMR": { + "baseVolume": "1.64609151", + "high24hr": "0.00090549", + "highestBid": "0.00086212", + "id": 248, + "isFrozen": "0", + "last": "0.00086057", + "low24hr": "0.00079044", + "lowestAsk": "0.00089787", + "percentChange": "0.06548385", + "quoteVolume": "1912.03148904" + }, + "BTC_NXT": { + "baseVolume": "1.64399713", + "high24hr": "0.00000466", + "highestBid": "0.00000453", + "id": 69, + "isFrozen": "0", + "last": "0.00000454", + "low24hr": "0.00000450", + "lowestAsk": "0.00000455", + "percentChange": "-0.01731601", + "quoteVolume": "360674.76672284" + }, + "BTC_OMG": { + "baseVolume": "1.25616463", + "high24hr": "0.00026071", + "highestBid": "0.00025135", + "id": 196, + "isFrozen": "0", + "last": "0.00025135", + "low24hr": "0.00024544", + "lowestAsk": "0.00025240", + "percentChange": "0.00741482", + "quoteVolume": "4963.85040878" + }, + "BTC_OMNI": { + "baseVolume": "0.20882002", + "high24hr": "0.00029480", + "highestBid": "0.00027236", + "id": 58, + "isFrozen": "0", + "last": "0.00028837", + "low24hr": "0.00027000", + "lowestAsk": "0.00028798", + "percentChange": "0.00215464", + "quoteVolume": "732.64551893" + }, + "BTC_PASC": { + "baseVolume": "1.25124963", + "high24hr": "0.00002870", + "highestBid": "0.00002814", + "id": 184, + "isFrozen": "0", + "last": "0.00002812", + "low24hr": "0.00002670", + "lowestAsk": "0.00002815", + "percentChange": "-0.01678321", + "quoteVolume": "45122.06215166" + }, + "BTC_POLY": { + "baseVolume": "1.91462892", + "high24hr": "0.00001311", + "highestBid": "0.00001306", + "id": 249, + "isFrozen": "0", + "last": "0.00001306", + "low24hr": "0.00001178", + "lowestAsk": "0.00001311", + "percentChange": "0.08471760", + "quoteVolume": "152996.00496795" + }, + "BTC_QTUM": { + "baseVolume": "9.94417285", + "high24hr": "0.00044164", + "highestBid": "0.00039745", + "id": 221, + "isFrozen": "0", + "last": "0.00039711", + "low24hr": "0.00039430", + "lowestAsk": "0.00039946", + "percentChange": "0.01102398", + "quoteVolume": "23898.37003779" + }, + "BTC_REP": { + "baseVolume": "3.58890958", + "high24hr": "0.00249520", + "highestBid": "0.00236841", + "id": 174, + "isFrozen": "0", + "last": "0.00238110", + "low24hr": "0.00233000", + "lowestAsk": "0.00238013", + "percentChange": "0.00882953", + "quoteVolume": "1490.86836755" + }, + "BTC_SC": { + "baseVolume": "1.87511642", + "high24hr": "0.00000040", + "highestBid": "0.00000039", + "id": 150, + "isFrozen": "0", + "last": "0.00000039", + "low24hr": "0.00000039", + "lowestAsk": "0.00000040", + "percentChange": "0.00000000", + "quoteVolume": "4769865.10799687" + }, + "BTC_SNT": { + "baseVolume": "1.74882337", + "high24hr": "0.00000391", + "highestBid": "0.00000377", + "id": 204, + "isFrozen": "0", + "last": "0.00000380", + "low24hr": "0.00000365", + "lowestAsk": "0.00000381", + "percentChange": "0.01063829", + "quoteVolume": "463292.11309769" + }, + "BTC_STEEM": { + "baseVolume": "4.42639165", + "high24hr": "0.00005363", + "highestBid": "0.00005127", + "id": 168, + "isFrozen": "0", + "last": "0.00005167", + "low24hr": "0.00005040", + "lowestAsk": "0.00005160", + "percentChange": "-0.01449551", + "quoteVolume": "85043.49213557" + }, + "BTC_STORJ": { + "baseVolume": "0.59303686", + "high24hr": "0.00003583", + "highestBid": "0.00003506", + "id": 200, + "isFrozen": "0", + "last": "0.00003506", + "low24hr": "0.00003460", + "lowestAsk": "0.00003515", + "percentChange": "0.00228702", + "quoteVolume": "16796.76970761" + }, + "BTC_STR": { + "baseVolume": "29.15587511", + "high24hr": "0.00001571", + "highestBid": "0.00001533", + "id": 89, + "isFrozen": "0", + "last": "0.00001537", + "low24hr": "0.00001532", + "lowestAsk": "0.00001537", + "percentChange": "-0.00646412", + "quoteVolume": "1887833.72135812" + }, + "BTC_STRAT": { + "baseVolume": "3.69185582", + "high24hr": "0.00012497", + "highestBid": "0.00011869", + "id": 182, + "isFrozen": "0", + "last": "0.00011859", + "low24hr": "0.00011892", + "lowestAsk": "0.00011955", + "percentChange": "-0.04006799", + "quoteVolume": "30477.03971572" + }, + "BTC_VIA": { + "baseVolume": "6.00937608", + "high24hr": "0.00007528", + "highestBid": "0.00007216", + "id": 97, + "isFrozen": "0", + "last": "0.00007259", + "low24hr": "0.00007013", + "lowestAsk": "0.00007261", + "percentChange": "0.02862406", + "quoteVolume": "82838.51366051" + }, + "BTC_VTC": { + "baseVolume": "8.10964192", + "high24hr": "0.00006995", + "highestBid": "0.00006727", + "id": 100, + "isFrozen": "0", + "last": "0.00006767", + "low24hr": "0.00006620", + "lowestAsk": "0.00006769", + "percentChange": "-0.00907892", + "quoteVolume": "118741.18466855" + }, + "BTC_XEM": { + "baseVolume": "11.47584618", + "high24hr": "0.00001091", + "highestBid": "0.00001058", + "id": 112, + "isFrozen": "0", + "last": "0.00001060", + "low24hr": "0.00001049", + "lowestAsk": "0.00001063", + "percentChange": "-0.01303538", + "quoteVolume": "1080591.66263058" + }, + "BTC_XMR": { + "baseVolume": "42.01213244", + "high24hr": "0.01102244", + "highestBid": "0.01088305", + "id": 114, + "isFrozen": "0", + "last": "0.01087441", + "low24hr": "0.01079251", + "lowestAsk": "0.01089415", + "percentChange": "-0.00620981", + "quoteVolume": "3857.26226555" + }, + "BTC_XPM": { + "baseVolume": "0.71263628", + "high24hr": "0.00002962", + "highestBid": "0.00002756", + "id": 116, + "isFrozen": "0", + "last": "0.00002756", + "low24hr": "0.00002756", + "lowestAsk": "0.00002860", + "percentChange": "-0.04735568", + "quoteVolume": "24729.03795341" + }, + "BTC_XRP": { + "baseVolume": "201.36631863", + "high24hr": "0.00005090", + "highestBid": "0.00004960", + "id": 117, + "isFrozen": "0", + "last": "0.00004960", + "low24hr": "0.00004933", + "lowestAsk": "0.00004961", + "percentChange": "-0.02131018", + "quoteVolume": "4023790.64131056" + }, + "BTC_ZEC": { + "baseVolume": "6.83567402", + "high24hr": "0.01024922", + "highestBid": "0.00990500", + "id": 178, + "isFrozen": "0", + "last": "0.00990515", + "low24hr": "0.00990501", + "lowestAsk": "0.00993296", + "percentChange": "-0.02472465", + "quoteVolume": "679.67342401" + }, + "BTC_ZRX": { + "baseVolume": "2.07845804", + "high24hr": "0.00004218", + "highestBid": "0.00004080", + "id": 192, + "isFrozen": "0", + "last": "0.00004091", + "low24hr": "0.00004081", + "lowestAsk": "0.00004091", + "percentChange": "-0.00559066", + "quoteVolume": "49776.28138902" + }, + "ETH_BAT": { + "baseVolume": "15.19774324", + "high24hr": "0.00138539", + "highestBid": "0.00132716", + "id": 211, + "isFrozen": "0", + "last": "0.00133065", + "low24hr": "0.00133065", + "lowestAsk": "0.00133346", + "percentChange": "-0.03673809", + "quoteVolume": "11202.68186565" + }, + "ETH_BNT": { + "baseVolume": "14.29896888", + "high24hr": "0.00288000", + "highestBid": "0.00285346", + "id": 233, + "isFrozen": "0", + "last": "0.00287809", + "low24hr": "0.00284999", + "lowestAsk": "0.00288685", + "percentChange": "0.00985614", + "quoteVolume": "5013.99102334" + }, + "ETH_CVC": { + "baseVolume": "7.76889158", + "high24hr": "0.00036357", + "highestBid": "0.00034931", + "id": 195, + "isFrozen": "0", + "last": "0.00034931", + "low24hr": "0.00034633", + "lowestAsk": "0.00035104", + "percentChange": "-0.00498490", + "quoteVolume": "22217.14581100" + }, + "ETH_EOS": { + "baseVolume": "57.85287084", + "high24hr": "0.02644714", + "highestBid": "0.02596530", + "id": 202, + "isFrozen": "0", + "last": "0.02596528", + "low24hr": "0.02596528", + "lowestAsk": "0.02603759", + "percentChange": "-0.01068667", + "quoteVolume": "2204.63200411" + }, + "ETH_ETC": { + "baseVolume": "50.23223183", + "high24hr": "0.03469387", + "highestBid": "0.03340000", + "id": 172, + "isFrozen": "0", + "last": "0.03342225", + "low24hr": "0.03342225", + "lowestAsk": "0.03345178", + "percentChange": "-0.03665230", + "quoteVolume": "1477.91871918" + }, + "ETH_GAS": { + "baseVolume": "3.04307877", + "high24hr": "0.01390000", + "highestBid": "0.01262073", + "id": 199, + "isFrozen": "0", + "last": "0.01300000", + "low24hr": "0.01271658", + "lowestAsk": "0.01309755", + "percentChange": "-0.01555871", + "quoteVolume": "227.12349806" + }, + "ETH_GNT": { + "baseVolume": "33.26795789", + "high24hr": "0.00041473", + "highestBid": "0.00040681", + "id": 186, + "isFrozen": "0", + "last": "0.00040752", + "low24hr": "0.00037826", + "lowestAsk": "0.00041263", + "percentChange": "0.05777916", + "quoteVolume": "85767.44098332" + }, + "ETH_KNC": { + "baseVolume": "3.97445644", + "high24hr": "0.00115000", + "highestBid": "0.00108615", + "id": 208, + "isFrozen": "0", + "last": "0.00109269", + "low24hr": "0.00108891", + "lowestAsk": "0.00114156", + "percentChange": "-0.02501070", + "quoteVolume": "3526.69313018" + }, + "ETH_LOOM": { + "baseVolume": "65.66658897", + "high24hr": "0.00035769", + "highestBid": "0.00033766", + "id": 214, + "isFrozen": "0", + "last": "0.00033930", + "low24hr": "0.00032567", + "lowestAsk": "0.00034802", + "percentChange": "0.02818181", + "quoteVolume": "193088.49239467" + }, + "ETH_LSK": { + "baseVolume": "0.76656131", + "high24hr": "0.00849344", + "highestBid": "0.00828726", + "id": 166, + "isFrozen": "0", + "last": "0.00836598", + "low24hr": "0.00815000", + "lowestAsk": "0.00841578", + "percentChange": "0.02650061", + "quoteVolume": "93.01338152" + }, + "ETH_MANA": { + "baseVolume": "22.07735950", + "high24hr": "0.00025004", + "highestBid": "0.00024084", + "id": 230, + "isFrozen": "0", + "last": "0.00024138", + "low24hr": "0.00024027", + "lowestAsk": "0.00024135", + "percentChange": "-0.00829909", + "quoteVolume": "90624.84430328" + }, + "ETH_OMG": { + "baseVolume": "8.05512623", + "high24hr": "0.00850000", + "highestBid": "0.00816185", + "id": 197, + "isFrozen": "0", + "last": "0.00823187", + "low24hr": "0.00812951", + "lowestAsk": "0.00820725", + "percentChange": "0.01803604", + "quoteVolume": "971.21438737" + }, + "ETH_QTUM": { + "baseVolume": "19.21848012", + "high24hr": "0.01445578", + "highestBid": "0.01286128", + "id": 222, + "isFrozen": "0", + "last": "0.01279123", + "low24hr": "0.01279123", + "lowestAsk": "0.01292445", + "percentChange": "0.01196680", + "quoteVolume": "1428.71665478" + }, + "ETH_REP": { + "baseVolume": "43.83047186", + "high24hr": "0.08044678", + "highestBid": "0.07691404", + "id": 176, + "isFrozen": "0", + "last": "0.07729862", + "low24hr": "0.07610657", + "lowestAsk": "0.07729862", + "percentChange": "0.00550880", + "quoteVolume": "566.61066154" + }, + "ETH_SNT": { + "baseVolume": "11.98247233", + "high24hr": "0.00012595", + "highestBid": "0.00012281", + "id": 205, + "isFrozen": "0", + "last": "0.00012341", + "low24hr": "0.00011976", + "lowestAsk": "0.00012330", + "percentChange": "-0.00684049", + "quoteVolume": "97344.62846475" + }, + "ETH_STEEM": { + "baseVolume": "6.47349009", + "high24hr": "0.00175423", + "highestBid": "0.00166580", + "id": 169, + "isFrozen": "0", + "last": "0.00167610", + "low24hr": "0.00165255", + "lowestAsk": "0.00168151", + "percentChange": "-0.03115606", + "quoteVolume": "3859.75860945" + }, + "ETH_ZEC": { + "baseVolume": "20.70785072", + "high24hr": "0.33600013", + "highestBid": "0.32237743", + "id": 179, + "isFrozen": "0", + "last": "0.32250027", + "low24hr": "0.32250027", + "lowestAsk": "0.32473808", + "percentChange": "-0.03832020", + "quoteVolume": "63.08405800" + }, + "ETH_ZRX": { + "baseVolume": "22.37346857", + "high24hr": "0.00137937", + "highestBid": "0.00132743", + "id": 193, + "isFrozen": "0", + "last": "0.00132759", + "low24hr": "0.00132759", + "lowestAsk": "0.00132744", + "percentChange": "-0.01595125", + "quoteVolume": "16548.11602204" + }, + "USDC_ATOM": { + "baseVolume": "8589.72151742", + "high24hr": "6.13222707", + "highestBid": "5.91425840", + "id": 254, + "isFrozen": "0", + "last": "5.94846938", + "low24hr": "5.77734693", + "lowestAsk": "5.98266834", + "percentChange": "0.00578678", + "quoteVolume": "1435.15971856" + }, + "USDC_BCHABC": { + "baseVolume": "135429.66946378", + "high24hr": "401.17968999", + "highestBid": "389.35541111", + "id": 237, + "isFrozen": "0", + "last": "389.35423311", + "low24hr": "376.01059082", + "lowestAsk": "393.59958829", + "percentChange": "0.03548741", + "quoteVolume": "345.71602989" + }, + "USDC_BCHSV": { + "baseVolume": "219303.91833302", + "high24hr": "194.44671873", + "highestBid": "188.54624615", + "id": 239, + "isFrozen": "0", + "last": "188.54622778", + "low24hr": "180.49999776", + "lowestAsk": "190.89997204", + "percentChange": "0.03030725", + "quoteVolume": "1158.73869926" + }, + "USDC_BTC": { + "baseVolume": "3482664.85806597", + "high24hr": "8077.47999788", + "highestBid": "7961.71516578", + "id": 224, + "isFrozen": "0", + "last": "7962.50000000", + "low24hr": "7608.58328444", + "lowestAsk": "7977.13341202", + "percentChange": "0.04403385", + "quoteVolume": "441.87385476" + }, + "USDC_DOGE": { + "baseVolume": "2750.23843586", + "high24hr": "0.00310197", + "highestBid": "0.00303215", + "id": 243, + "isFrozen": "0", + "last": "0.00303215", + "low24hr": "0.00297500", + "lowestAsk": "0.00306000", + "percentChange": "0.01921008", + "quoteVolume": "907350.09402904" + }, + "USDC_ETH": { + "baseVolume": "501153.45720283", + "high24hr": "248.44047988", + "highestBid": "245.35955433", + "id": 225, + "isFrozen": "0", + "last": "245.36055774", + "low24hr": "233.31933799", + "lowestAsk": "246.00046378", + "percentChange": "0.05094127", + "quoteVolume": "2047.00238213" + }, + "USDC_FOAM": { + "baseVolume": "722.65429834", + "high24hr": "0.04381000", + "highestBid": "0.04380999", + "id": 247, + "isFrozen": "0", + "last": "0.04380999", + "low24hr": "0.03968067", + "lowestAsk": "0.04381000", + "percentChange": "0.08844695", + "quoteVolume": "16885.98552482" + }, + "USDC_GRIN": { + "baseVolume": "23814.63241472", + "high24hr": "3.16500000", + "highestBid": "3.04000004", + "id": 252, + "isFrozen": "0", + "last": "3.11998999", + "low24hr": "2.89999999", + "lowestAsk": "3.10999999", + "percentChange": "0.02294753", + "quoteVolume": "7937.02292983" + }, + "USDC_LTC": { + "baseVolume": "566449.26199652", + "high24hr": "129.99999999", + "highestBid": "128.27905224", + "id": 244, + "isFrozen": "0", + "last": "128.93961490", + "low24hr": "114.11407952", + "lowestAsk": "128.93961440", + "percentChange": "0.10369106", + "quoteVolume": "4496.10093795" + }, + "USDC_STR": { + "baseVolume": "21935.95722630", + "high24hr": "0.12485687", + "highestBid": "0.12186123", + "id": 242, + "isFrozen": "0", + "last": "0.12152532", + "low24hr": "0.11824094", + "lowestAsk": "0.12344054", + "percentChange": "0.02557729", + "quoteVolume": "178840.89704069" + }, + "USDC_USDT": { + "baseVolume": "57933.50068393", + "high24hr": "1.00849999", + "highestBid": "1.00420002", + "id": 226, + "isFrozen": "0", + "last": "1.00420002", + "low24hr": "1.00048874", + "lowestAsk": "1.00519997", + "percentChange": "0.00170380", + "quoteVolume": "57719.93500183" + }, + "USDC_XMR": { + "baseVolume": "99062.18940901", + "high24hr": "87.99994711", + "highestBid": "86.23864800", + "id": 241, + "isFrozen": "0", + "last": "87.18629626", + "low24hr": "83.40045078", + "lowestAsk": "87.13843846", + "percentChange": "0.04513660", + "quoteVolume": "1147.67641269" + }, + "USDC_XRP": { + "baseVolume": "199920.97825116", + "high24hr": "0.40499909", + "highestBid": "0.39407291", + "id": 240, + "isFrozen": "0", + "last": "0.39275049", + "low24hr": "0.38130058", + "lowestAsk": "0.39644645", + "percentChange": "0.00705997", + "quoteVolume": "501260.01445723" + }, + "USDC_ZEC": { + "baseVolume": "18301.41164199", + "high24hr": "81.51460533", + "highestBid": "78.78616778", + "id": 245, + "isFrozen": "0", + "last": "79.00000000", + "low24hr": "77.79410548", + "lowestAsk": "79.66042211", + "percentChange": "0.00697317", + "quoteVolume": "229.40589669" + }, + "USDT_ATOM": { + "baseVolume": "125149.60868108", + "high24hr": "6.09972825", + "highestBid": "5.91263924", + "id": 255, + "isFrozen": "0", + "last": "5.93000005", + "low24hr": "5.74700000", + "lowestAsk": "5.96804558", + "percentChange": "0.02241380", + "quoteVolume": "21087.06757208" + }, + "USDT_BAT": { + "baseVolume": "19328.23384182", + "high24hr": "0.33689089", + "highestBid": "0.32445561", + "id": 212, + "isFrozen": "0", + "last": "0.32726271", + "low24hr": "0.32026548", + "lowestAsk": "0.32705989", + "percentChange": "0.01806377", + "quoteVolume": "58700.42769184" + }, + "USDT_BNT": { + "baseVolume": "363.53451604", + "high24hr": "0.70982964", + "highestBid": "0.69821937", + "id": 234, + "isFrozen": "0", + "last": "0.69821937", + "low24hr": "0.68340485", + "lowestAsk": "0.70982400", + "percentChange": "0.00089890", + "quoteVolume": "514.58745683" + }, + "USDT_BTC": { + "baseVolume": "4421897.17330826", + "high24hr": "8010.00000000", + "highestBid": "7934.30612610", + "id": 121, + "isFrozen": "0", + "last": "7938.84630781", + "low24hr": "7594.72485562", + "lowestAsk": "7939.11267940", + "percentChange": "0.04175843", + "quoteVolume": "561.77921782" + }, + "USDT_DASH": { + "baseVolume": "163148.07688044", + "high24hr": "151.49790691", + "highestBid": "148.18792540", + "id": 122, + "isFrozen": "0", + "last": "149.00000000", + "low24hr": "141.36289327", + "lowestAsk": "149.49998944", + "percentChange": "0.03081761", + "quoteVolume": "1097.22131727" + }, + "USDT_DOGE": { + "baseVolume": "30256.35268923", + "high24hr": "0.00305492", + "highestBid": "0.00303372", + "id": 216, + "isFrozen": "0", + "last": "0.00303376", + "low24hr": "0.00294256", + "lowestAsk": "0.00304854", + "percentChange": "0.02803427", + "quoteVolume": "10052886.96556405" + }, + "USDT_EOS": { + "baseVolume": "278043.19290915", + "high24hr": "6.49451490", + "highestBid": "6.33676472", + "id": 203, + "isFrozen": "0", + "last": "6.33455816", + "low24hr": "6.06318315", + "lowestAsk": "6.38358433", + "percentChange": "0.01939777", + "quoteVolume": "43736.05905905" + }, + "USDT_ETC": { + "baseVolume": "143484.54569522", + "high24hr": "8.38997233", + "highestBid": "8.15001491", + "id": 173, + "isFrozen": "0", + "last": "8.15001414", + "low24hr": "7.88066582", + "lowestAsk": "8.17000000", + "percentChange": "0.01628235", + "quoteVolume": "17511.35515526" + }, + "USDT_ETH": { + "baseVolume": "883511.34773111", + "high24hr": "247.86593850", + "highestBid": "243.60640010", + "id": 149, + "isFrozen": "0", + "last": "243.56443038", + "low24hr": "232.63838377", + "lowestAsk": "244.56399997", + "percentChange": "0.04452331", + "quoteVolume": "3668.33116661" + }, + "USDT_GNT": { + "baseVolume": "13022.42294546", + "high24hr": "0.10259935", + "highestBid": "0.09879707", + "id": 217, + "isFrozen": "0", + "last": "0.09841380", + "low24hr": "0.08921015", + "lowestAsk": "0.10132826", + "percentChange": "0.09122782", + "quoteVolume": "136510.36772013" + }, + "USDT_KNC": { + "baseVolume": "3460.19386639", + "high24hr": "0.27487268", + "highestBid": "0.26681722", + "id": 209, + "isFrozen": "0", + "last": "0.26815800", + "low24hr": "0.24150034", + "lowestAsk": "0.27081578", + "percentChange": "0.04138446", + "quoteVolume": "12879.73674180" + }, + "USDT_LOOM": { + "baseVolume": "7884.22722657", + "high24hr": "0.08800000", + "highestBid": "0.08138381", + "id": 215, + "isFrozen": "0", + "last": "0.08366370", + "low24hr": "0.07699900", + "lowestAsk": "0.08582526", + "percentChange": "0.10209527", + "quoteVolume": "94061.17501115" + }, + "USDT_LSK": { + "baseVolume": "13223.12589230", + "high24hr": "2.07878065", + "highestBid": "2.02319825", + "id": 218, + "isFrozen": "0", + "last": "2.04000000", + "low24hr": "1.90125984", + "lowestAsk": "2.04000000", + "percentChange": "0.05997011", + "quoteVolume": "6568.77436503" + }, + "USDT_LTC": { + "baseVolume": "1316866.42418109", + "high24hr": "129.80000000", + "highestBid": "127.31927721", + "id": 123, + "isFrozen": "0", + "last": "128.29999999", + "low24hr": "114.19423572", + "lowestAsk": "128.29999899", + "percentChange": "0.10600510", + "quoteVolume": "10573.16167640" + }, + "USDT_MANA": { + "baseVolume": "3529.09794786", + "high24hr": "0.06000000", + "highestBid": "0.05875324", + "id": 231, + "isFrozen": "0", + "last": "0.05874674", + "low24hr": "0.05685000", + "lowestAsk": "0.06023530", + "percentChange": "0.02910433", + "quoteVolume": "59699.03615938" + }, + "USDT_NXT": { + "baseVolume": "10352.62135341", + "high24hr": "0.03725000", + "highestBid": "0.03565562", + "id": 124, + "isFrozen": "0", + "last": "0.03564433", + "low24hr": "0.03465000", + "lowestAsk": "0.03661779", + "percentChange": "0.01783769", + "quoteVolume": "287419.90703917" + }, + "USDT_QTUM": { + "baseVolume": "39682.13887751", + "high24hr": "3.38228600", + "highestBid": "3.15135845", + "id": 223, + "isFrozen": "0", + "last": "3.15643449", + "low24hr": "3.01724000", + "lowestAsk": "3.19643113", + "percentChange": "0.04613305", + "quoteVolume": "12370.15246589" + }, + "USDT_REP": { + "baseVolume": "21917.80239715", + "high24hr": "19.50000000", + "highestBid": "18.73413490", + "id": 175, + "isFrozen": "0", + "last": "18.81359647", + "low24hr": "18.07435000", + "lowestAsk": "18.81359647", + "percentChange": "0.04529910", + "quoteVolume": "1157.81116881" + }, + "USDT_SC": { + "baseVolume": "25558.80796699", + "high24hr": "0.00315902", + "highestBid": "0.00310953", + "id": 219, + "isFrozen": "0", + "last": "0.00310875", + "low24hr": "0.00301287", + "lowestAsk": "0.00315390", + "percentChange": "0.02377361", + "quoteVolume": "8307626.97734275" + }, + "USDT_SNT": { + "baseVolume": "3314.06637263", + "high24hr": "0.03099999", + "highestBid": "0.02965894", + "id": 206, + "isFrozen": "0", + "last": "0.03002016", + "low24hr": "0.02852000", + "lowestAsk": "0.03099489", + "percentChange": "0.05260397", + "quoteVolume": "111527.99375151" + }, + "USDT_STR": { + "baseVolume": "119159.96377689", + "high24hr": "0.12367652", + "highestBid": "0.12155670", + "id": 125, + "isFrozen": "0", + "last": "0.12153229", + "low24hr": "0.11783976", + "lowestAsk": "0.12192981", + "percentChange": "0.02869133", + "quoteVolume": "975973.89241271" + }, + "USDT_XMR": { + "baseVolume": "44311.82773756", + "high24hr": "87.30000000", + "highestBid": "86.01288637", + "id": 126, + "isFrozen": "0", + "last": "86.80322950", + "low24hr": "83.20226300", + "lowestAsk": "86.63121390", + "percentChange": "0.03842924", + "quoteVolume": "513.51239329" + }, + "USDT_XRP": { + "baseVolume": "628653.50566678", + "high24hr": "0.40300000", + "highestBid": "0.39152696", + "id": 127, + "isFrozen": "0", + "last": "0.39377688", + "low24hr": "0.38130000", + "lowestAsk": "0.39377649", + "percentChange": "0.01987867", + "quoteVolume": "1590094.01666263" + }, + "USDT_ZEC": { + "baseVolume": "22621.88453883", + "high24hr": "81.19999999", + "highestBid": "78.59493102", + "id": 180, + "isFrozen": "0", + "last": "78.59493101", + "low24hr": "77.53260899", + "lowestAsk": "79.24350590", + "percentChange": "0.01370161", + "quoteVolume": "285.13456697" + }, + "USDT_ZRX": { + "baseVolume": "25505.45281006", + "high24hr": "0.33012685", + "highestBid": "0.32372112", + "id": 220, + "isFrozen": "0", + "last": "0.32372110", + "low24hr": "0.31581054", + "lowestAsk": "0.32556376", + "percentChange": "0.02641624", + "quoteVolume": "78505.36961414" + }, + "XMR_BCN": { + "baseVolume": "0.16285090", + "high24hr": "0.00001086", + "highestBid": "0.00001077", + "id": 129, + "isFrozen": "0", + "last": "0.00001085", + "low24hr": "0.00001076", + "lowestAsk": "0.00001085", + "percentChange": "0.00370027", + "quoteVolume": "15121.34000573" + }, + "XMR_DASH": { + "baseVolume": "199.20221390", + "high24hr": "1.74792000", + "highestBid": "1.70985983", + "id": 132, + "isFrozen": "0", + "last": "1.71734933", + "low24hr": "1.69000000", + "lowestAsk": "1.72597923", + "percentChange": "-0.00135971", + "quoteVolume": "116.70250730" + }, + "XMR_LTC": { + "baseVolume": "170.93153487", + "high24hr": "1.49999000", + "highestBid": "1.47456588", + "id": 137, + "isFrozen": "0", + "last": "1.47455980", + "low24hr": "1.37511020", + "lowestAsk": "1.48934226", + "percentChange": "0.06048168", + "quoteVolume": "118.22421521" + }, + "XMR_MAID": { + "baseVolume": "11.27396401", + "high24hr": "0.00219909", + "highestBid": "0.00215074", + "id": 138, + "isFrozen": "0", + "last": "0.00215539", + "low24hr": "0.00215539", + "lowestAsk": "0.00218535", + "percentChange": "-0.01503907", + "quoteVolume": "5131.12258542" + }, + "XMR_NXT": { + "baseVolume": "1.90717544", + "high24hr": "0.00042734", + "highestBid": "0.00040892", + "id": 140, + "isFrozen": "0", + "last": "0.00040927", + "low24hr": "0.00040123", + "lowestAsk": "0.00041471", + "percentChange": "-0.02296545", + "quoteVolume": "4664.12738280" + }, + "XMR_ZEC": { + "baseVolume": "18.27667017", + "high24hr": "0.93682194", + "highestBid": "0.90478668", + "id": 181, + "isFrozen": "0", + "last": "0.91217810", + "low24hr": "0.90298672", + "lowestAsk": "0.91363635", + "percentChange": "-0.01510586", + "quoteVolume": "19.92803337" + } + }, + "queryString": "command=returnTicker", + "bodyParams": "", + "headers": {} + }, { "data": { - "offers": [ - { - "rate": "0.00001000", - "amount": "0.01106802", - "rangeMin": 2, - "rangeMax": 2 - }, - { - "rate": "0.00005000", - "amount": "0.01421371", - "rangeMin": 2, - "rangeMax": 2 - }, - { - "rate": "0.00051121", - "amount": "0.01194792", - "rangeMin": 2, - "rangeMax": 2 - }, - { - "rate": "0.00051180", - "amount": "0.20407105", - "rangeMin": 10, - "rangeMax": 10 - }, - { - "rate": "0.00051200", - "amount": "1.39196698", - "rangeMin": 2, - "rangeMax": 2 - }, - { - "rate": "0.00051221", - "amount": "0.01251915", - "rangeMin": 2, - "rangeMax": 2 - }, - { - "rate": "0.00051259", - "amount": "0.13936621", - "rangeMin": 2, - "rangeMax": 7 - }, - { - "rate": "0.00051261", - "amount": "0.08577806", - "rangeMin": 2, - "rangeMax": 2 - }, - { - "rate": "0.00051300", - "amount": "30.62159808", - "rangeMin": 2, - "rangeMax": 3 - }, - { - "rate": "0.00051307", - "amount": "0.11240023", - "rangeMin": 2, - "rangeMax": 15 - }, - { - "rate": "0.00051321", - "amount": "0.04123649", - "rangeMin": 2, - "rangeMax": 2 - }, - { - "rate": "0.00051359", - "amount": "0.01000000", - "rangeMin": 2, - "rangeMax": 2 - }, - { - "rate": "0.00051361", - "amount": "0.01222452", - "rangeMin": 2, - "rangeMax": 2 - }, - { - "rate": "0.00051383", - "amount": "0.04123649", - "rangeMin": 2, - "rangeMax": 2 - }, - { - "rate": "0.00051400", - "amount": "11.86021806", - "rangeMin": 2, - "rangeMax": 60 - }, - { - "rate": "0.00051407", - "amount": "0.01156721", - "rangeMin": 2, - "rangeMax": 2 - }, - { - "rate": "0.00051445", - "amount": "0.04123649", - "rangeMin": 2, - "rangeMax": 2 - }, - { - "rate": "0.00051461", - "amount": "0.01000000", - "rangeMin": 2, - "rangeMax": 2 - }, - { - "rate": "0.00051472", - "amount": "0.01139563", - "rangeMin": 7, - "rangeMax": 7 - }, - { - "rate": "0.00051490", - "amount": "0.17328314", - "rangeMin": 30, - "rangeMax": 30 - }, - { - "rate": "0.00051500", - "amount": "1.58067150", - "rangeMin": 2, - "rangeMax": 2 - }, - { - "rate": "0.00051507", - "amount": "0.31612314", - "rangeMin": 2, - "rangeMax": 2 - }, - { - "rate": "0.00051509", - "amount": "0.02767539", - "rangeMin": 2, - "rangeMax": 2 - }, - { - "rate": "0.00051599", - "amount": "0.02591969", - "rangeMin": 7, - "rangeMax": 7 - }, - { - "rate": "0.00051600", - "amount": "7.56304844", - "rangeMin": 2, - "rangeMax": 2 - }, - { - "rate": "0.00051607", - "amount": "0.31683506", - "rangeMin": 2, - "rangeMax": 2 - }, - { - "rate": "0.00051686", - "amount": "0.01139563", - "rangeMin": 7, - "rangeMax": 7 - }, - { - "rate": "0.00051700", - "amount": "1.68550042", - "rangeMin": 2, - "rangeMax": 2 - }, - { - "rate": "0.00051707", - "amount": "0.00574744", - "rangeMin": 2, - "rangeMax": 2 - }, - { - "rate": "0.00051709", - "amount": "0.02867412", - "rangeMin": 60, - "rangeMax": 60 - }, - { - "rate": "0.00051729", - "amount": "0.01219097", - "rangeMin": 2, - "rangeMax": 2 - }, - { - "rate": "0.00051730", - "amount": "0.01264114", - "rangeMin": 2, - "rangeMax": 2 - }, - { - "rate": "0.00051799", - "amount": "0.01043269", - "rangeMin": 2, - "rangeMax": 2 - }, - { - "rate": "0.00051800", - "amount": "4.58136320", - "rangeMin": 2, - "rangeMax": 2 - }, - { - "rate": "0.00051829", - "amount": "0.06309791", - "rangeMin": 2, - "rangeMax": 2 - }, - { - "rate": "0.00051859", - "amount": "0.01079156", - "rangeMin": 2, - "rangeMax": 2 - }, - { - "rate": "0.00051899", - "amount": "0.24673262", - "rangeMin": 2, - "rangeMax": 2 - }, - { - "rate": "0.00051900", - "amount": "1.75619162", - "rangeMin": 7, - "rangeMax": 60 - }, - { - "rate": "0.00052000", - "amount": "0.01905141", - "rangeMin": 2, - "rangeMax": 2 - }, - { - "rate": "0.00052100", - "amount": "0.05404361", - "rangeMin": 2, - "rangeMax": 30 - }, - { - "rate": "0.00052189", - "amount": "0.08045529", - "rangeMin": 60, - "rangeMax": 60 - }, - { - "rate": "0.00052200", - "amount": "0.30165715", - "rangeMin": 2, - "rangeMax": 2 - }, - { - "rate": "0.00052299", - "amount": "0.00521692", - "rangeMin": 19, - "rangeMax": 19 - }, - { - "rate": "0.00052300", - "amount": "1.34778650", - "rangeMin": 2, - "rangeMax": 60 - }, - { - "rate": "0.00052389", - "amount": "0.07713974", - "rangeMin": 10, - "rangeMax": 20 - }, - { - "rate": "0.00052400", - "amount": "1.28093787", - "rangeMin": 2, - "rangeMax": 2 - }, - { - "rate": "0.00052500", - "amount": "0.38279138", - "rangeMin": 2, - "rangeMax": 60 - }, - { - "rate": "0.00052550", - "amount": "0.01065640", - "rangeMin": 2, - "rangeMax": 2 - }, - { - "rate": "0.00052600", - "amount": "3.20808196", - "rangeMin": 2, - "rangeMax": 2 - }, - { - "rate": "0.00052800", - "amount": "3.21858925", - "rangeMin": 2, - "rangeMax": 2 - } - ], "demands": [ { - "rate": "0.00000100", "amount": "0.07730000", + "rangeMax": 2, "rangeMin": 2, - "rangeMax": 2 + "rate": "0.00000100" + } + ], + "offers": [ + { + "amount": "0.01106802", + "rangeMax": 2, + "rangeMin": 2, + "rate": "0.00001000" + }, + { + "amount": "0.01421371", + "rangeMax": 2, + "rangeMin": 2, + "rate": "0.00005000" + }, + { + "amount": "0.01194792", + "rangeMax": 2, + "rangeMin": 2, + "rate": "0.00051121" + }, + { + "amount": "0.20407105", + "rangeMax": 10, + "rangeMin": 10, + "rate": "0.00051180" + }, + { + "amount": "1.39196698", + "rangeMax": 2, + "rangeMin": 2, + "rate": "0.00051200" + }, + { + "amount": "0.01251915", + "rangeMax": 2, + "rangeMin": 2, + "rate": "0.00051221" + }, + { + "amount": "0.13936621", + "rangeMax": 7, + "rangeMin": 2, + "rate": "0.00051259" + }, + { + "amount": "0.08577806", + "rangeMax": 2, + "rangeMin": 2, + "rate": "0.00051261" + }, + { + "amount": "30.62159808", + "rangeMax": 3, + "rangeMin": 2, + "rate": "0.00051300" + }, + { + "amount": "0.11240023", + "rangeMax": 15, + "rangeMin": 2, + "rate": "0.00051307" + }, + { + "amount": "0.04123649", + "rangeMax": 2, + "rangeMin": 2, + "rate": "0.00051321" + }, + { + "amount": "0.01000000", + "rangeMax": 2, + "rangeMin": 2, + "rate": "0.00051359" + }, + { + "amount": "0.01222452", + "rangeMax": 2, + "rangeMin": 2, + "rate": "0.00051361" + }, + { + "amount": "0.04123649", + "rangeMax": 2, + "rangeMin": 2, + "rate": "0.00051383" + }, + { + "amount": "11.86021806", + "rangeMax": 60, + "rangeMin": 2, + "rate": "0.00051400" + }, + { + "amount": "0.01156721", + "rangeMax": 2, + "rangeMin": 2, + "rate": "0.00051407" + }, + { + "amount": "0.04123649", + "rangeMax": 2, + "rangeMin": 2, + "rate": "0.00051445" + }, + { + "amount": "0.01000000", + "rangeMax": 2, + "rangeMin": 2, + "rate": "0.00051461" + }, + { + "amount": "0.01139563", + "rangeMax": 7, + "rangeMin": 7, + "rate": "0.00051472" + }, + { + "amount": "0.17328314", + "rangeMax": 30, + "rangeMin": 30, + "rate": "0.00051490" + }, + { + "amount": "1.58067150", + "rangeMax": 2, + "rangeMin": 2, + "rate": "0.00051500" + }, + { + "amount": "0.31612314", + "rangeMax": 2, + "rangeMin": 2, + "rate": "0.00051507" + }, + { + "amount": "0.02767539", + "rangeMax": 2, + "rangeMin": 2, + "rate": "0.00051509" + }, + { + "amount": "0.02591969", + "rangeMax": 7, + "rangeMin": 7, + "rate": "0.00051599" + }, + { + "amount": "7.56304844", + "rangeMax": 2, + "rangeMin": 2, + "rate": "0.00051600" + }, + { + "amount": "0.31683506", + "rangeMax": 2, + "rangeMin": 2, + "rate": "0.00051607" + }, + { + "amount": "0.01139563", + "rangeMax": 7, + "rangeMin": 7, + "rate": "0.00051686" + }, + { + "amount": "1.68550042", + "rangeMax": 2, + "rangeMin": 2, + "rate": "0.00051700" + }, + { + "amount": "0.00574744", + "rangeMax": 2, + "rangeMin": 2, + "rate": "0.00051707" + }, + { + "amount": "0.02867412", + "rangeMax": 60, + "rangeMin": 60, + "rate": "0.00051709" + }, + { + "amount": "0.01219097", + "rangeMax": 2, + "rangeMin": 2, + "rate": "0.00051729" + }, + { + "amount": "0.01264114", + "rangeMax": 2, + "rangeMin": 2, + "rate": "0.00051730" + }, + { + "amount": "0.01043269", + "rangeMax": 2, + "rangeMin": 2, + "rate": "0.00051799" + }, + { + "amount": "4.58136320", + "rangeMax": 2, + "rangeMin": 2, + "rate": "0.00051800" + }, + { + "amount": "0.06309791", + "rangeMax": 2, + "rangeMin": 2, + "rate": "0.00051829" + }, + { + "amount": "0.01079156", + "rangeMax": 2, + "rangeMin": 2, + "rate": "0.00051859" + }, + { + "amount": "0.24673262", + "rangeMax": 2, + "rangeMin": 2, + "rate": "0.00051899" + }, + { + "amount": "1.75619162", + "rangeMax": 60, + "rangeMin": 7, + "rate": "0.00051900" + }, + { + "amount": "0.01905141", + "rangeMax": 2, + "rangeMin": 2, + "rate": "0.00052000" + }, + { + "amount": "0.05404361", + "rangeMax": 30, + "rangeMin": 2, + "rate": "0.00052100" + }, + { + "amount": "0.08045529", + "rangeMax": 60, + "rangeMin": 60, + "rate": "0.00052189" + }, + { + "amount": "0.30165715", + "rangeMax": 2, + "rangeMin": 2, + "rate": "0.00052200" + }, + { + "amount": "0.00521692", + "rangeMax": 19, + "rangeMin": 19, + "rate": "0.00052299" + }, + { + "amount": "1.34778650", + "rangeMax": 60, + "rangeMin": 2, + "rate": "0.00052300" + }, + { + "amount": "0.07713974", + "rangeMax": 20, + "rangeMin": 10, + "rate": "0.00052389" + }, + { + "amount": "1.28093787", + "rangeMax": 2, + "rangeMin": 2, + "rate": "0.00052400" + }, + { + "amount": "0.38279138", + "rangeMax": 60, + "rangeMin": 2, + "rate": "0.00052500" + }, + { + "amount": "0.01065640", + "rangeMax": 2, + "rangeMin": 2, + "rate": "0.00052550" + }, + { + "amount": "3.20808196", + "rangeMax": 2, + "rangeMin": 2, + "rate": "0.00052600" + }, + { + "amount": "3.21858925", + "rangeMax": 2, + "rangeMin": 2, + "rate": "0.00052800" } ] }, "queryString": "command=returnLoanOrders\u0026currency=BTC", - "bodyParams": "\u003cnil\u003e", - "headers": { - "Key": [ - "" - ] - } + "bodyParams": "", + "headers": {} + }, + { + "data": { + "BTC_ARDR": { + "ARDR": "238083.87187020", + "BTC": "3.03108905" + }, + "BTC_ATOM": { + "ATOM": "52381.46699854", + "BTC": "39.67100725" + }, + "BTC_BAT": { + "BAT": "51122.24173657", + "BTC": "2.13275613" + }, + "BTC_BCHABC": { + "BCHABC": "733.46224700", + "BTC": "36.20758372" + }, + "BTC_BCHSV": { + "BCHSV": "4528.05891976", + "BTC": "107.87823714" + }, + "BTC_BCN": { + "BCN": "18580513.78451419", + "BTC": "2.10597417" + }, + "BTC_BNT": { + "BNT": "708.36829451", + "BTC": "0.06242819" + }, + "BTC_BTS": { + "BTC": "11.31814868", + "BTS": "1422525.76536768" + }, + "BTC_CLAM": { + "BTC": "2.91928382", + "CLAM": "5008.88307610" + }, + "BTC_CVC": { + "BTC": "0.75331703", + "CVC": "68777.88900435" + }, + "BTC_DASH": { + "BTC": "121.56922496", + "DASH": "6476.07273599" + }, + "BTC_DCR": { + "BTC": "2.34160137", + "DCR": "684.41654989" + }, + "BTC_DGB": { + "BTC": "16.15966014", + "DGB": "9761759.50030071" + }, + "BTC_DOGE": { + "BTC": "19.98598120", + "DOGE": "52317925.99866673" + }, + "BTC_EOS": { + "BTC": "18.59593565", + "EOS": "23099.92132301" + }, + "BTC_ETC": { + "BTC": "10.91386394", + "ETC": "10520.96374951" + }, + "BTC_ETH": { + "BTC": "155.94348625", + "ETH": "5059.54434879" + }, + "BTC_FCT": { + "BTC": "10.36741741", + "FCT": "13773.13207446" + }, + "BTC_FOAM": { + "BTC": "0.89731724", + "FOAM": "166155.79008468" + }, + "BTC_GAME": { + "BTC": "3.82370347", + "GAME": "300446.22176630" + }, + "BTC_GAS": { + "BTC": "0.77232780", + "GAS": "1916.80182489" + }, + "BTC_GNT": { + "BTC": "4.93328876", + "GNT": "404745.01492216" + }, + "BTC_GRIN": { + "BTC": "24.37429922", + "GRIN": "62838.47716938" + }, + "BTC_KNC": { + "BTC": "1.07605151", + "KNC": "31066.52899332" + }, + "BTC_LBC": { + "BTC": "3.00058286", + "LBC": "699495.42159049" + }, + "BTC_LOOM": { + "BTC": "5.48711026", + "LOOM": "522861.14578247" + }, + "BTC_LPT": { + "BTC": "2.49829681", + "LPT": "4080.23729692" + }, + "BTC_LSK": { + "BTC": "5.21884194", + "LSK": "20377.01855963" + }, + "BTC_LTC": { + "BTC": "666.94447027", + "LTC": "42339.40507638" + }, + "BTC_MAID": { + "BTC": "2.56267002", + "MAID": "107646.79242367" + }, + "BTC_MANA": { + "BTC": "2.70084416", + "MANA": "362727.87722537" + }, + "BTC_NAV": { + "BTC": "0.85599154", + "NAV": "30239.29066641" + }, + "BTC_NMR": { + "BTC": "1.64609151", + "NMR": "1912.03148904" + }, + "BTC_NXT": { + "BTC": "1.64399713", + "NXT": "360674.76672284" + }, + "BTC_OMG": { + "BTC": "1.25616463", + "OMG": "4963.85040878" + }, + "BTC_OMNI": { + "BTC": "0.20882002", + "OMNI": "732.64551893" + }, + "BTC_PASC": { + "BTC": "1.25124963", + "PASC": "45122.06215166" + }, + "BTC_POLY": { + "BTC": "1.91462892", + "POLY": "152996.00496795" + }, + "BTC_QTUM": { + "BTC": "9.94417285", + "QTUM": "23898.37003779" + }, + "BTC_REP": { + "BTC": "3.58890958", + "REP": "1490.86836755" + }, + "BTC_SC": { + "BTC": "1.87511642", + "SC": "4769865.10799687" + }, + "BTC_SNT": { + "BTC": "1.74882337", + "SNT": "463292.11309769" + }, + "BTC_STEEM": { + "BTC": "4.42639165", + "STEEM": "85043.49213557" + }, + "BTC_STORJ": { + "BTC": "0.59303686", + "STORJ": "16796.76970761" + }, + "BTC_STR": { + "BTC": "29.15587511", + "STR": "1887833.72135812" + }, + "BTC_STRAT": { + "BTC": "3.69185582", + "STRAT": "30477.03971572" + }, + "BTC_VIA": { + "BTC": "6.00937608", + "VIA": "82838.51366051" + }, + "BTC_VTC": { + "BTC": "8.10964192", + "VTC": "118741.18466855" + }, + "BTC_XEM": { + "BTC": "11.47584618", + "XEM": "1080591.66263058" + }, + "BTC_XMR": { + "BTC": "42.01213244", + "XMR": "3857.26226555" + }, + "BTC_XPM": { + "BTC": "0.71263628", + "XPM": "24729.03795341" + }, + "BTC_XRP": { + "BTC": "201.36631863", + "XRP": "4023790.64131056" + }, + "BTC_ZEC": { + "BTC": "6.83567402", + "ZEC": "679.67342401" + }, + "BTC_ZRX": { + "BTC": "2.07845804", + "ZRX": "49776.28138902" + }, + "ETH_BAT": { + "BAT": "11202.68186565", + "ETH": "15.19774324" + }, + "ETH_BNT": { + "BNT": "5013.99102334", + "ETH": "14.29896888" + }, + "ETH_CVC": { + "CVC": "22217.14581100", + "ETH": "7.76889158" + }, + "ETH_EOS": { + "EOS": "2204.63200411", + "ETH": "57.85287084" + }, + "ETH_ETC": { + "ETC": "1477.91871918", + "ETH": "50.23223183" + }, + "ETH_GAS": { + "ETH": "3.04307877", + "GAS": "227.12349806" + }, + "ETH_GNT": { + "ETH": "33.26795789", + "GNT": "85767.44098332" + }, + "ETH_KNC": { + "ETH": "3.97445644", + "KNC": "3526.69313018" + }, + "ETH_LOOM": { + "ETH": "65.66658897", + "LOOM": "193088.49239467" + }, + "ETH_LSK": { + "ETH": "0.76656131", + "LSK": "93.01338152" + }, + "ETH_MANA": { + "ETH": "22.07735950", + "MANA": "90624.84430328" + }, + "ETH_OMG": { + "ETH": "8.05512623", + "OMG": "971.21438737" + }, + "ETH_QTUM": { + "ETH": "19.21848012", + "QTUM": "1428.71665478" + }, + "ETH_REP": { + "ETH": "43.83047186", + "REP": "566.61066154" + }, + "ETH_SNT": { + "ETH": "11.98247233", + "SNT": "97344.62846475" + }, + "ETH_STEEM": { + "ETH": "6.47349009", + "STEEM": "3859.75860945" + }, + "ETH_ZEC": { + "ETH": "20.70785072", + "ZEC": "63.08405800" + }, + "ETH_ZRX": { + "ETH": "22.37346857", + "ZRX": "16548.11602204" + }, + "USDC_ATOM": { + "ATOM": "1435.15971856", + "USDC": "8589.72151742" + }, + "USDC_BCHABC": { + "BCHABC": "345.71602989", + "USDC": "135429.66946378" + }, + "USDC_BCHSV": { + "BCHSV": "1158.73869926", + "USDC": "219303.91833302" + }, + "USDC_BTC": { + "BTC": "441.87385476", + "USDC": "3482664.85806597" + }, + "USDC_DOGE": { + "DOGE": "907350.09402904", + "USDC": "2750.23843586" + }, + "USDC_ETH": { + "ETH": "2047.00238213", + "USDC": "501153.45720283" + }, + "USDC_FOAM": { + "FOAM": "16885.98552482", + "USDC": "722.65429834" + }, + "USDC_GRIN": { + "GRIN": "7937.02292983", + "USDC": "23814.63241472" + }, + "USDC_LTC": { + "LTC": "4496.10093795", + "USDC": "566449.26199652" + }, + "USDC_STR": { + "STR": "178840.89704069", + "USDC": "21935.95722630" + }, + "USDC_USDT": { + "USDC": "57933.50068393", + "USDT": "57719.93500183" + }, + "USDC_XMR": { + "USDC": "99062.18940901", + "XMR": "1147.67641269" + }, + "USDC_XRP": { + "USDC": "199920.97825116", + "XRP": "501260.01445723" + }, + "USDC_ZEC": { + "USDC": "18301.41164199", + "ZEC": "229.40589669" + }, + "USDT_ATOM": { + "ATOM": "21087.06757208", + "USDT": "125149.60868108" + }, + "USDT_BAT": { + "BAT": "58700.42769184", + "USDT": "19328.23384182" + }, + "USDT_BNT": { + "BNT": "514.58745683", + "USDT": "363.53451604" + }, + "USDT_BTC": { + "BTC": "561.77921782", + "USDT": "4421897.17330826" + }, + "USDT_DASH": { + "DASH": "1097.22131727", + "USDT": "163148.07688044" + }, + "USDT_DOGE": { + "DOGE": "10052886.96556405", + "USDT": "30256.35268923" + }, + "USDT_EOS": { + "EOS": "43736.05905905", + "USDT": "278043.19290915" + }, + "USDT_ETC": { + "ETC": "17511.35515526", + "USDT": "143484.54569522" + }, + "USDT_ETH": { + "ETH": "3668.33116661", + "USDT": "883511.34773111" + }, + "USDT_GNT": { + "GNT": "136510.36772013", + "USDT": "13022.42294546" + }, + "USDT_KNC": { + "KNC": "12879.73674180", + "USDT": "3460.19386639" + }, + "USDT_LOOM": { + "LOOM": "94061.17501115", + "USDT": "7884.22722657" + }, + "USDT_LSK": { + "LSK": "6568.77436503", + "USDT": "13223.12589230" + }, + "USDT_LTC": { + "LTC": "10573.16167640", + "USDT": "1316866.42418109" + }, + "USDT_MANA": { + "MANA": "59699.03615938", + "USDT": "3529.09794786" + }, + "USDT_NXT": { + "NXT": "287419.90703917", + "USDT": "10352.62135341" + }, + "USDT_QTUM": { + "QTUM": "12370.15246589", + "USDT": "39682.13887751" + }, + "USDT_REP": { + "REP": "1157.81116881", + "USDT": "21917.80239715" + }, + "USDT_SC": { + "SC": "8307626.97734275", + "USDT": "25558.80796699" + }, + "USDT_SNT": { + "SNT": "111527.99375151", + "USDT": "3314.06637263" + }, + "USDT_STR": { + "STR": "975973.89241271", + "USDT": "119159.96377689" + }, + "USDT_XMR": { + "USDT": "44311.82773756", + "XMR": "513.51239329" + }, + "USDT_XRP": { + "USDT": "628653.50566678", + "XRP": "1590094.01666263" + }, + "USDT_ZEC": { + "USDT": "22621.88453883", + "ZEC": "285.13456697" + }, + "USDT_ZRX": { + "USDT": "25505.45281006", + "ZRX": "78505.36961414" + }, + "XMR_BCN": { + "BCN": "15121.34000573", + "XMR": "0.16285090" + }, + "XMR_DASH": { + "DASH": "116.70250730", + "XMR": "199.20221390" + }, + "XMR_LTC": { + "LTC": "118.22421521", + "XMR": "170.93153487" + }, + "XMR_MAID": { + "MAID": "5131.12258542", + "XMR": "11.27396401" + }, + "XMR_NXT": { + "NXT": "4664.12738280", + "XMR": "1.90717544" + }, + "XMR_ZEC": { + "XMR": "18.27667017", + "ZEC": "19.92803337" + }, + "totalBTC": "1628.64800905", + "totalETH": "406.78806917", + "totalUSDC": "5338032.44894085", + "totalUSDT": "8364245.62980983", + "totalXMR": "401.75440929", + "totalXUSD": "0.00000000" + }, + "queryString": "command=return24hVolume", + "bodyParams": "", + "headers": {} + }, + { + "data": [ + { + "amount": "3.67796814", + "date": "2019-06-11 04:31:22", + "globalTradeID": 419660422, + "orderNumber": 378714356664, + "rate": "0.01087441", + "total": "0.03999573", + "tradeID": 19495952, + "type": "buy" + }, + { + "amount": "0.00571394", + "date": "2019-06-11 04:30:31", + "globalTradeID": 419660404, + "orderNumber": 378714099921, + "rate": "0.01086990", + "total": "0.00006210", + "tradeID": 19495951, + "type": "sell" + }, + { + "amount": "0.00230268", + "date": "2019-06-11 04:30:26", + "globalTradeID": 419660400, + "orderNumber": 378714088932, + "rate": "0.01086990", + "total": "0.00002502", + "tradeID": 19495950, + "type": "sell" + }, + { + "amount": "0.09199674", + "date": "2019-06-11 04:30:07", + "globalTradeID": 419660390, + "orderNumber": 378714018003, + "rate": "0.01086995", + "total": "0.00099999", + "tradeID": 19495949, + "type": "buy" + }, + { + "amount": "0.18399348", + "date": "2019-06-11 04:29:44", + "globalTradeID": 419660384, + "orderNumber": 378713958063, + "rate": "0.01086995", + "total": "0.00199999", + "tradeID": 19495948, + "type": "buy" + }, + { + "amount": "0.00921345", + "date": "2019-06-11 04:27:43", + "globalTradeID": 419660320, + "orderNumber": 378713556465, + "rate": "0.01086995", + "total": "0.00010014", + "tradeID": 19495947, + "type": "buy" + }, + { + "amount": "0.00977015", + "date": "2019-06-11 04:27:16", + "globalTradeID": 419660311, + "orderNumber": 378713374647, + "rate": "0.01087360", + "total": "0.00010623", + "tradeID": 19495946, + "type": "sell" + }, + { + "amount": "0.00059317", + "date": "2019-06-11 04:27:08", + "globalTradeID": 419660294, + "orderNumber": 378713343678, + "rate": "0.01087361", + "total": "0.00000644", + "tradeID": 19495945, + "type": "sell" + }, + { + "amount": "0.09193288", + "date": "2019-06-11 04:25:46", + "globalTradeID": 419660267, + "orderNumber": 378713085936, + "rate": "0.01087743", + "total": "0.00099999", + "tradeID": 19495944, + "type": "buy" + }, + { + "amount": "0.00391038", + "date": "2019-06-11 04:25:30", + "globalTradeID": 419660245, + "orderNumber": 378712987035, + "rate": "0.01087360", + "total": "0.00004251", + "tradeID": 19495943, + "type": "sell" + }, + { + "amount": "0.18386391", + "date": "2019-06-11 04:25:30", + "globalTradeID": 419660244, + "orderNumber": 378712985037, + "rate": "0.01087756", + "total": "0.00199999", + "tradeID": 19495942, + "type": "buy" + }, + { + "amount": "0.01369197", + "date": "2019-06-11 04:25:00", + "globalTradeID": 419660236, + "orderNumber": 378712820202, + "rate": "0.01088420", + "total": "0.00014902", + "tradeID": 19495941, + "type": "sell" + }, + { + "amount": "0.01427388", + "date": "2019-06-11 04:24:35", + "globalTradeID": 419660229, + "orderNumber": 378712682340, + "rate": "0.01088519", + "total": "0.00015537", + "tradeID": 19495940, + "type": "sell" + }, + { + "amount": "0.00097304", + "date": "2019-06-11 04:24:34", + "globalTradeID": 419660226, + "orderNumber": 378712674348, + "rate": "0.01088768", + "total": "0.00001059", + "tradeID": 19495939, + "type": "sell" + }, + { + "amount": "1.48700000", + "date": "2019-06-11 04:22:05", + "globalTradeID": 419660173, + "orderNumber": 378711816207, + "rate": "0.01088769", + "total": "0.01618999", + "tradeID": 19495938, + "type": "sell" + }, + { + "amount": "1.31174004", + "date": "2019-06-11 04:22:02", + "globalTradeID": 419660171, + "orderNumber": 378711803220, + "rate": "0.01088768", + "total": "0.01428180", + "tradeID": 19495937, + "type": "sell" + }, + { + "amount": "0.01425996", + "date": "2019-06-11 04:22:02", + "globalTradeID": 419660170, + "orderNumber": 378711803220, + "rate": "0.01089626", + "total": "0.00015538", + "tradeID": 19495936, + "type": "sell" + }, + { + "amount": "5.95100000", + "date": "2019-06-11 04:20:05", + "globalTradeID": 419660132, + "orderNumber": 378711129894, + "rate": "0.01089627", + "total": "0.06484370", + "tradeID": 19495935, + "type": "sell" + }, + { + "amount": "3.65950000", + "date": "2019-06-11 04:20:05", + "globalTradeID": 419660131, + "orderNumber": 378711122901, + "rate": "0.01089627", + "total": "0.03987490", + "tradeID": 19495934, + "type": "sell" + }, + { + "amount": "0.16900000", + "date": "2019-06-11 04:20:01", + "globalTradeID": 419660129, + "orderNumber": 378711079944, + "rate": "0.01091500", + "total": "0.00184463", + "tradeID": 19495933, + "type": "sell" + }, + { + "amount": "21.93500000", + "date": "2019-06-11 04:20:01", + "globalTradeID": 419660126, + "orderNumber": 378711075948, + "rate": "0.01091935", + "total": "0.23951594", + "tradeID": 19495932, + "type": "sell" + }, + { + "amount": "11.44500000", + "date": "2019-06-11 04:20:01", + "globalTradeID": 419660124, + "orderNumber": 378711073950, + "rate": "0.01091935", + "total": "0.12497196", + "tradeID": 19495931, + "type": "sell" + }, + { + "amount": "37.87000000", + "date": "2019-06-11 04:20:00", + "globalTradeID": 419660123, + "orderNumber": 378711071952, + "rate": "0.01091935", + "total": "0.41351578", + "tradeID": 19495930, + "type": "sell" + }, + { + "amount": "0.11441976", + "date": "2019-06-11 04:20:00", + "globalTradeID": 419660122, + "orderNumber": 378711070953, + "rate": "0.01091937", + "total": "0.00124939", + "tradeID": 19495929, + "type": "sell" + }, + { + "amount": "0.00001589", + "date": "2019-06-11 04:19:08", + "globalTradeID": 419660106, + "orderNumber": 378710872152, + "rate": "0.01092168", + "total": "0.00000017", + "tradeID": 19495928, + "type": "buy" + }, + { + "amount": "0.00000361", + "date": "2019-06-11 04:17:33", + "globalTradeID": 419660079, + "orderNumber": 378710442582, + "rate": "0.01094157", + "total": "0.00000003", + "tradeID": 19495927, + "type": "buy" + }, + { + "amount": "0.10771685", + "date": "2019-06-11 04:17:25", + "globalTradeID": 419660064, + "orderNumber": 378710362662, + "rate": "0.01094825", + "total": "0.00117931", + "tradeID": 19495926, + "type": "buy" + }, + { + "amount": "0.00038186", + "date": "2019-06-11 04:17:17", + "globalTradeID": 419660041, + "orderNumber": 378710310714, + "rate": "0.01092001", + "total": "0.00000416", + "tradeID": 19495925, + "type": "buy" + }, + { + "amount": "0.00020349", + "date": "2019-06-11 04:17:17", + "globalTradeID": 419660040, + "orderNumber": 378710310714, + "rate": "0.01092000", + "total": "0.00000222", + "tradeID": 19495924, + "type": "buy" + }, + { + "amount": "0.05500000", + "date": "2019-06-11 04:17:15", + "globalTradeID": 419660037, + "orderNumber": 378710295729, + "rate": "0.01092000", + "total": "0.00060060", + "tradeID": 19495923, + "type": "buy" + }, + { + "amount": "13.40208261", + "date": "2019-06-11 04:15:16", + "globalTradeID": 419659984, + "orderNumber": 378709791234, + "rate": "0.01091912", + "total": "0.14633894", + "tradeID": 19495922, + "type": "sell" + }, + { + "amount": "0.00003551", + "date": "2019-06-11 04:14:24", + "globalTradeID": 419659967, + "orderNumber": 378709500525, + "rate": "0.01092001", + "total": "0.00000038", + "tradeID": 19495921, + "type": "buy" + }, + { + "amount": "0.05223877", + "date": "2019-06-11 04:12:52", + "globalTradeID": 419659939, + "orderNumber": 378709035990, + "rate": "0.01091700", + "total": "0.00057029", + "tradeID": 19495920, + "type": "sell" + }, + { + "amount": "0.11400000", + "date": "2019-06-11 04:11:42", + "globalTradeID": 419659917, + "orderNumber": 378708709317, + "rate": "0.01092001", + "total": "0.00124488", + "tradeID": 19495919, + "type": "buy" + }, + { + "amount": "0.59200000", + "date": "2019-06-11 04:10:11", + "globalTradeID": 419659887, + "orderNumber": 378708191835, + "rate": "0.01092641", + "total": "0.00646843", + "tradeID": 19495918, + "type": "buy" + }, + { + "amount": "8.04867515", + "date": "2019-06-11 04:09:36", + "globalTradeID": 419659868, + "orderNumber": 378707979048, + "rate": "0.01090201", + "total": "0.08774673", + "tradeID": 19495917, + "type": "sell" + }, + { + "amount": "0.11441976", + "date": "2019-06-11 04:09:36", + "globalTradeID": 419659867, + "orderNumber": 378707979048, + "rate": "0.01090202", + "total": "0.00124740", + "tradeID": 19495916, + "type": "sell" + }, + { + "amount": "2.31990509", + "date": "2019-06-11 04:09:36", + "globalTradeID": 419659866, + "orderNumber": 378707979048, + "rate": "0.01090310", + "total": "0.02529415", + "tradeID": 19495915, + "type": "sell" + }, + { + "amount": "0.01700000", + "date": "2019-06-11 04:09:36", + "globalTradeID": 419659865, + "orderNumber": 378707979048, + "rate": "0.01092004", + "total": "0.00018564", + "tradeID": 19495914, + "type": "sell" + }, + { + "amount": "0.01418870", + "date": "2019-06-11 04:07:31", + "globalTradeID": 419659807, + "orderNumber": 378707249778, + "rate": "0.01095075", + "total": "0.00015537", + "tradeID": 19495913, + "type": "sell" + }, + { + "amount": "0.04206385", + "date": "2019-06-11 04:05:05", + "globalTradeID": 419659769, + "orderNumber": 378706749279, + "rate": "0.01096500", + "total": "0.00046123", + "tradeID": 19495912, + "type": "sell" + }, + { + "amount": "0.00000182", + "date": "2019-06-11 04:00:04", + "globalTradeID": 419659591, + "orderNumber": 378705401628, + "rate": "0.01096866", + "total": "0.00000001", + "tradeID": 19495911, + "type": "buy" + }, + { + "amount": "0.00131691", + "date": "2019-06-11 03:58:27", + "globalTradeID": 419659509, + "orderNumber": 378705024006, + "rate": "0.01096500", + "total": "0.00001443", + "tradeID": 19495910, + "type": "sell" + }, + { + "amount": "0.00000503", + "date": "2019-06-11 03:56:54", + "globalTradeID": 419659489, + "orderNumber": 378704656374, + "rate": "0.01096874", + "total": "0.00000005", + "tradeID": 19495909, + "type": "buy" + }, + { + "amount": "0.00095029", + "date": "2019-06-11 03:56:52", + "globalTradeID": 419659483, + "orderNumber": 378704634396, + "rate": "0.01096500", + "total": "0.00001041", + "tradeID": 19495908, + "type": "sell" + }, + { + "amount": "0.77346138", + "date": "2019-06-11 03:55:53", + "globalTradeID": 419659466, + "orderNumber": 378704373657, + "rate": "0.01096886", + "total": "0.00848398", + "tradeID": 19495907, + "type": "buy" + }, + { + "amount": "0.13853132", + "date": "2019-06-11 03:55:53", + "globalTradeID": 419659465, + "orderNumber": 378704373657, + "rate": "0.01096885", + "total": "0.00151952", + "tradeID": 19495906, + "type": "buy" + }, + { + "amount": "0.00000182", + "date": "2019-06-11 03:55:18", + "globalTradeID": 419659451, + "orderNumber": 378704154876, + "rate": "0.01097328", + "total": "0.00000001", + "tradeID": 19495905, + "type": "buy" + }, + { + "amount": "0.00323397", + "date": "2019-06-11 03:53:35", + "globalTradeID": 419659388, + "orderNumber": 378703612419, + "rate": "0.01097102", + "total": "0.00003547", + "tradeID": 19495904, + "type": "sell" + }, + { + "amount": "0.01121592", + "date": "2019-06-11 03:53:35", + "globalTradeID": 419659387, + "orderNumber": 378703612419, + "rate": "0.01097102", + "total": "0.00012305", + "tradeID": 19495903, + "type": "sell" + }, + { + "amount": "0.00000551", + "date": "2019-06-11 03:51:59", + "globalTradeID": 419659361, + "orderNumber": 378703243788, + "rate": "0.01097329", + "total": "0.00000006", + "tradeID": 19495902, + "type": "buy" + }, + { + "amount": "0.00000302", + "date": "2019-06-11 03:50:22", + "globalTradeID": 419659311, + "orderNumber": 378702896136, + "rate": "0.01097337", + "total": "0.00000003", + "tradeID": 19495901, + "type": "buy" + }, + { + "amount": "0.00001640", + "date": "2019-06-11 03:50:19", + "globalTradeID": 419659308, + "orderNumber": 378702885147, + "rate": "0.01097102", + "total": "0.00000017", + "tradeID": 19495900, + "type": "sell" + }, + { + "amount": "0.02814583", + "date": "2019-06-11 03:49:39", + "globalTradeID": 419659273, + "orderNumber": 378702765267, + "rate": "0.01097341", + "total": "0.00030885", + "tradeID": 19495899, + "type": "buy" + }, + { + "amount": "0.00000202", + "date": "2019-06-11 03:48:46", + "globalTradeID": 419659247, + "orderNumber": 378702529503, + "rate": "0.01097347", + "total": "0.00000002", + "tradeID": 19495898, + "type": "buy" + }, + { + "amount": "0.00000903", + "date": "2019-06-11 03:47:11", + "globalTradeID": 419659206, + "orderNumber": 378702105927, + "rate": "0.01098449", + "total": "0.00000009", + "tradeID": 19495897, + "type": "buy" + }, + { + "amount": "0.00114936", + "date": "2019-06-11 03:47:06", + "globalTradeID": 419659201, + "orderNumber": 378702095937, + "rate": "0.01097123", + "total": "0.00001260", + "tradeID": 19495896, + "type": "sell" + }, + { + "amount": "0.00000607", + "date": "2019-06-11 03:45:33", + "globalTradeID": 419659162, + "orderNumber": 378701612421, + "rate": "0.01098220", + "total": "0.00000006", + "tradeID": 19495895, + "type": "buy" + }, + { + "amount": "0.00001116", + "date": "2019-06-11 03:43:57", + "globalTradeID": 419659121, + "orderNumber": 378701091942, + "rate": "0.01098466", + "total": "0.00000012", + "tradeID": 19495894, + "type": "buy" + }, + { + "amount": "0.00000381", + "date": "2019-06-11 03:42:20", + "globalTradeID": 419659098, + "orderNumber": 378700626408, + "rate": "0.01098497", + "total": "0.00000004", + "tradeID": 19495893, + "type": "buy" + }, + { + "amount": "0.00000521", + "date": "2019-06-11 03:39:06", + "globalTradeID": 419659053, + "orderNumber": 378699644391, + "rate": "0.01098849", + "total": "0.00000005", + "tradeID": 19495892, + "type": "buy" + }, + { + "amount": "1.56192145", + "date": "2019-06-11 03:37:49", + "globalTradeID": 419659027, + "orderNumber": 378699299736, + "rate": "0.01098390", + "total": "0.01715598", + "tradeID": 19495891, + "type": "buy" + }, + { + "amount": "0.00000203", + "date": "2019-06-11 03:37:30", + "globalTradeID": 419659020, + "orderNumber": 378699228807, + "rate": "0.01098390", + "total": "0.00000002", + "tradeID": 19495890, + "type": "buy" + }, + { + "amount": "1.82224405", + "date": "2019-06-11 03:37:09", + "globalTradeID": 419659010, + "orderNumber": 378699142893, + "rate": "0.01098499", + "total": "0.02001733", + "tradeID": 19495889, + "type": "buy" + }, + { + "amount": "0.63389687", + "date": "2019-06-11 03:37:09", + "globalTradeID": 419659009, + "orderNumber": 378699142893, + "rate": "0.01097301", + "total": "0.00695575", + "tradeID": 19495888, + "type": "buy" + }, + { + "amount": "0.00000313", + "date": "2019-06-11 03:35:52", + "globalTradeID": 419658982, + "orderNumber": 378698852184, + "rate": "0.01097301", + "total": "0.00000003", + "tradeID": 19495887, + "type": "buy" + }, + { + "amount": "0.00000343", + "date": "2019-06-11 03:34:14", + "globalTradeID": 419658951, + "orderNumber": 378698676360, + "rate": "0.01097401", + "total": "0.00000003", + "tradeID": 19495886, + "type": "buy" + }, + { + "amount": "0.00003856", + "date": "2019-06-11 03:32:36", + "globalTradeID": 419658906, + "orderNumber": 378698162874, + "rate": "0.01098544", + "total": "0.00000042", + "tradeID": 19495885, + "type": "buy" + }, + { + "amount": "0.00000822", + "date": "2019-06-11 03:30:54", + "globalTradeID": 419658856, + "orderNumber": 378697679358, + "rate": "0.01100470", + "total": "0.00000009", + "tradeID": 19495884, + "type": "buy" + }, + { + "amount": "0.00005336", + "date": "2019-06-11 03:27:44", + "globalTradeID": 419658782, + "orderNumber": 378696543495, + "rate": "0.01099742", + "total": "0.00000058", + "tradeID": 19495883, + "type": "buy" + }, + { + "amount": "1.59326119", + "date": "2019-06-11 03:25:32", + "globalTradeID": 419658690, + "orderNumber": 378696202836, + "rate": "0.01099155", + "total": "0.01751241", + "tradeID": 19495882, + "type": "buy" + }, + { + "amount": "0.00000776", + "date": "2019-06-11 03:22:57", + "globalTradeID": 419658624, + "orderNumber": 378695513526, + "rate": "0.01100279", + "total": "0.00000008", + "tradeID": 19495881, + "type": "buy" + }, + { + "amount": "0.00181536", + "date": "2019-06-11 03:21:18", + "globalTradeID": 419658597, + "orderNumber": 378694987053, + "rate": "0.01099501", + "total": "0.00001995", + "tradeID": 19495880, + "type": "sell" + }, + { + "amount": "0.00000823", + "date": "2019-06-11 03:18:10", + "globalTradeID": 419658524, + "orderNumber": 378694251789, + "rate": "0.01102096", + "total": "0.00000009", + "tradeID": 19495879, + "type": "buy" + }, + { + "amount": "0.04754874", + "date": "2019-06-11 03:16:43", + "globalTradeID": 419658405, + "orderNumber": 378693959082, + "rate": "0.01100509", + "total": "0.00052327", + "tradeID": 19495878, + "type": "sell" + }, + { + "amount": "0.63690866", + "date": "2019-06-11 03:15:56", + "globalTradeID": 419658370, + "orderNumber": 378693752289, + "rate": "0.01099326", + "total": "0.00700170", + "tradeID": 19495877, + "type": "sell" + }, + { + "amount": "0.11409631", + "date": "2019-06-11 03:15:56", + "globalTradeID": 419658369, + "orderNumber": 378693752289, + "rate": "0.01099501", + "total": "0.00125449", + "tradeID": 19495876, + "type": "sell" + }, + { + "amount": "0.01688839", + "date": "2019-06-11 03:15:56", + "globalTradeID": 419658368, + "orderNumber": 378693752289, + "rate": "0.01099826", + "total": "0.00018574", + "tradeID": 19495875, + "type": "sell" + }, + { + "amount": "0.15215954", + "date": "2019-06-11 03:15:56", + "globalTradeID": 419658367, + "orderNumber": 378693752289, + "rate": "0.01102244", + "total": "0.00167716", + "tradeID": 19495874, + "type": "sell" + }, + { + "amount": "0.21255099", + "date": "2019-06-11 03:15:10", + "globalTradeID": 419658294, + "orderNumber": 378693585456, + "rate": "0.01102244", + "total": "0.00234283", + "tradeID": 19495873, + "type": "buy" + }, + { + "amount": "0.00019436", + "date": "2019-06-11 03:14:56", + "globalTradeID": 419658268, + "orderNumber": 378693515526, + "rate": "0.01101010", + "total": "0.00000213", + "tradeID": 19495872, + "type": "sell" + }, + { + "amount": "0.00000181", + "date": "2019-06-11 03:08:32", + "globalTradeID": 419658029, + "orderNumber": 378691456587, + "rate": "0.01100114", + "total": "0.00000001", + "tradeID": 19495871, + "type": "sell" + }, + { + "amount": "0.00101626", + "date": "2019-06-11 03:08:29", + "globalTradeID": 419658023, + "orderNumber": 378691443600, + "rate": "0.01100112", + "total": "0.00001117", + "tradeID": 19495870, + "type": "sell" + }, + { + "amount": "0.00026088", + "date": "2019-06-11 03:08:23", + "globalTradeID": 419658017, + "orderNumber": 378691431612, + "rate": "0.01100110", + "total": "0.00000286", + "tradeID": 19495869, + "type": "sell" + }, + { + "amount": "0.00016545", + "date": "2019-06-11 03:06:50", + "globalTradeID": 419657999, + "orderNumber": 378691103940, + "rate": "0.01100023", + "total": "0.00000181", + "tradeID": 19495868, + "type": "sell" + }, + { + "amount": "0.00023999", + "date": "2019-06-11 03:06:49", + "globalTradeID": 419657996, + "orderNumber": 378691102941, + "rate": "0.01100023", + "total": "0.00000263", + "tradeID": 19495867, + "type": "sell" + }, + { + "amount": "0.00011456", + "date": "2019-06-11 02:58:48", + "globalTradeID": 419657740, + "orderNumber": 378689243802, + "rate": "0.01099843", + "total": "0.00000125", + "tradeID": 19495866, + "type": "sell" + }, + { + "amount": "0.03917163", + "date": "2019-06-11 02:56:40", + "globalTradeID": 419657701, + "orderNumber": 378688729317, + "rate": "0.01101556", + "total": "0.00043149", + "tradeID": 19495865, + "type": "buy" + }, + { + "amount": "0.13679308", + "date": "2019-06-11 02:53:35", + "globalTradeID": 419657601, + "orderNumber": 378687637410, + "rate": "0.01101519", + "total": "0.00150680", + "tradeID": 19495864, + "type": "sell" + }, + { + "amount": "0.01058570", + "date": "2019-06-11 02:50:54", + "globalTradeID": 419657476, + "orderNumber": 378686860188, + "rate": "0.01101013", + "total": "0.00011654", + "tradeID": 19495863, + "type": "sell" + }, + { + "amount": "0.04280000", + "date": "2019-06-11 02:50:18", + "globalTradeID": 419657453, + "orderNumber": 378686618430, + "rate": "0.01101828", + "total": "0.00047158", + "tradeID": 19495862, + "type": "buy" + }, + { + "amount": "0.01398753", + "date": "2019-06-11 02:50:18", + "globalTradeID": 419657452, + "orderNumber": 378686618430, + "rate": "0.01101780", + "total": "0.00015411", + "tradeID": 19495861, + "type": "buy" + }, + { + "amount": "2.39150539", + "date": "2019-06-11 02:50:18", + "globalTradeID": 419657451, + "orderNumber": 378686618430, + "rate": "0.01101629", + "total": "0.02634551", + "tradeID": 19495860, + "type": "buy" + }, + { + "amount": "0.01340400", + "date": "2019-06-11 02:50:18", + "globalTradeID": 419657450, + "orderNumber": 378686618430, + "rate": "0.01101230", + "total": "0.00014760", + "tradeID": 19495859, + "type": "buy" + }, + { + "amount": "0.16756661", + "date": "2019-06-11 02:50:18", + "globalTradeID": 419657449, + "orderNumber": 378686618430, + "rate": "0.01100868", + "total": "0.00184468", + "tradeID": 19495858, + "type": "buy" + }, + { + "amount": "0.01390076", + "date": "2019-06-11 02:50:18", + "globalTradeID": 419657448, + "orderNumber": 378686618430, + "rate": "0.01100810", + "total": "0.00015302", + "tradeID": 19495857, + "type": "buy" + }, + { + "amount": "0.01411744", + "date": "2019-06-11 02:50:18", + "globalTradeID": 419657447, + "orderNumber": 378686618430, + "rate": "0.01100551", + "total": "0.00015536", + "tradeID": 19495856, + "type": "buy" + }, + { + "amount": "0.04273596", + "date": "2019-06-11 02:50:18", + "globalTradeID": 419657445, + "orderNumber": 378686615433, + "rate": "0.01100543", + "total": "0.00047032", + "tradeID": 19495855, + "type": "buy" + }, + { + "amount": "0.01515621", + "date": "2019-06-11 02:45:31", + "globalTradeID": 419657298, + "orderNumber": 378685060989, + "rate": "0.01100142", + "total": "0.00016673", + "tradeID": 19495854, + "type": "buy" + }, + { + "amount": "0.01395757", + "date": "2019-06-11 02:44:56", + "globalTradeID": 419657290, + "orderNumber": 378684828222, + "rate": "0.01100060", + "total": "0.00015354", + "tradeID": 19495853, + "type": "buy" + }, + { + "amount": "0.07110823", + "date": "2019-06-11 02:39:35", + "globalTradeID": 419657119, + "orderNumber": 378683079972, + "rate": "0.01099521", + "total": "0.00078184", + "tradeID": 19495852, + "type": "sell" + }, + { + "amount": "0.00017289", + "date": "2019-06-11 02:38:00", + "globalTradeID": 419657062, + "orderNumber": 378682556496, + "rate": "0.01098911", + "total": "0.00000189", + "tradeID": 19495851, + "type": "sell" + }, + { + "amount": "0.28712708", + "date": "2019-06-11 02:37:35", + "globalTradeID": 419657049, + "orderNumber": 378682396656, + "rate": "0.01100000", + "total": "0.00315839", + "tradeID": 19495850, + "type": "buy" + }, + { + "amount": "11.98089159", + "date": "2019-06-11 02:37:35", + "globalTradeID": 419657048, + "orderNumber": 378682396656, + "rate": "0.01100000", + "total": "0.13178980", + "tradeID": 19495849, + "type": "buy" + }, + { + "amount": "20.28670000", + "date": "2019-06-11 02:37:35", + "globalTradeID": 419657047, + "orderNumber": 378682391661, + "rate": "0.01100000", + "total": "0.22315370", + "tradeID": 19495848, + "type": "buy" + }, + { + "amount": "19.58857431", + "date": "2019-06-11 02:37:23", + "globalTradeID": 419657037, + "orderNumber": 378682329723, + "rate": "0.01100000", + "total": "0.21547431", + "tradeID": 19495847, + "type": "buy" + }, + { + "amount": "0.10000400", + "date": "2019-06-11 02:37:23", + "globalTradeID": 419657036, + "orderNumber": 378682329723, + "rate": "0.01100000", + "total": "0.00110004", + "tradeID": 19495846, + "type": "buy" + }, + { + "amount": "0.10000000", + "date": "2019-06-11 02:37:23", + "globalTradeID": 419657035, + "orderNumber": 378682329723, + "rate": "0.01099996", + "total": "0.00109999", + "tradeID": 19495845, + "type": "buy" + }, + { + "amount": "0.09091165", + "date": "2019-06-11 02:37:23", + "globalTradeID": 419657034, + "orderNumber": 378682329723, + "rate": "0.01099969", + "total": "0.00099999", + "tradeID": 19495844, + "type": "buy" + }, + { + "amount": "2.39651004", + "date": "2019-06-11 02:37:23", + "globalTradeID": 419657033, + "orderNumber": 378682329723, + "rate": "0.01099922", + "total": "0.02635974", + "tradeID": 19495843, + "type": "buy" + }, + { + "amount": "1.02574734", + "date": "2019-06-11 02:37:02", + "globalTradeID": 419657007, + "orderNumber": 378682212840, + "rate": "0.01099588", + "total": "0.01127899", + "tradeID": 19495842, + "type": "buy" + }, + { + "amount": "0.27600000", + "date": "2019-06-11 02:36:41", + "globalTradeID": 419656977, + "orderNumber": 378682057995, + "rate": "0.01099588", + "total": "0.00303486", + "tradeID": 19495841, + "type": "buy" + }, + { + "amount": "2.76229338", + "date": "2019-06-11 02:36:09", + "globalTradeID": 419656960, + "orderNumber": 378681860193, + "rate": "0.01098950", + "total": "0.03035622", + "tradeID": 19495840, + "type": "buy" + }, + { + "amount": "0.00085253", + "date": "2019-06-11 02:34:47", + "globalTradeID": 419656926, + "orderNumber": 378681331722, + "rate": "0.01097903", + "total": "0.00000935", + "tradeID": 19495839, + "type": "sell" + }, + { + "amount": "0.00263502", + "date": "2019-06-11 02:34:44", + "globalTradeID": 419656922, + "orderNumber": 378681311742, + "rate": "0.01097902", + "total": "0.00002892", + "tradeID": 19495838, + "type": "sell" + }, + { + "amount": "0.00072603", + "date": "2019-06-11 02:33:09", + "globalTradeID": 419656903, + "orderNumber": 378680730324, + "rate": "0.01097738", + "total": "0.00000796", + "tradeID": 19495837, + "type": "sell" + }, + { + "amount": "3.81362404", + "date": "2019-06-11 02:31:53", + "globalTradeID": 419656875, + "orderNumber": 378680249805, + "rate": "0.01098999", + "total": "0.04191169", + "tradeID": 19495836, + "type": "buy" + }, + { + "amount": "3.51884830", + "date": "2019-06-11 02:31:36", + "globalTradeID": 419656867, + "orderNumber": 378680109945, + "rate": "0.01099140", + "total": "0.03867706", + "tradeID": 19495835, + "type": "sell" + }, + { + "amount": "0.00000181", + "date": "2019-06-11 02:31:32", + "globalTradeID": 419656866, + "orderNumber": 378680107947, + "rate": "0.01099141", + "total": "0.00000001", + "tradeID": 19495834, + "type": "buy" + }, + { + "amount": "1.19047895", + "date": "2019-06-11 02:31:13", + "globalTradeID": 419656858, + "orderNumber": 378680036019, + "rate": "0.01099140", + "total": "0.01308503", + "tradeID": 19495833, + "type": "sell" + }, + { + "amount": "0.09067275", + "date": "2019-06-11 02:31:11", + "globalTradeID": 419656857, + "orderNumber": 378680020035, + "rate": "0.01099140", + "total": "0.00099662", + "tradeID": 19495832, + "type": "sell" + }, + { + "amount": "0.20000000", + "date": "2019-06-11 02:30:30", + "globalTradeID": 419656847, + "orderNumber": 378679878177, + "rate": "0.01099140", + "total": "0.00219828", + "tradeID": 19495831, + "type": "buy" + }, + { + "amount": "0.00028223", + "date": "2019-06-11 02:29:54", + "globalTradeID": 419656831, + "orderNumber": 378679691364, + "rate": "0.01098366", + "total": "0.00000309", + "tradeID": 19495830, + "type": "sell" + }, + { + "amount": "14.18000000", + "date": "2019-06-11 02:26:56", + "globalTradeID": 419656743, + "orderNumber": 378678498558, + "rate": "0.01099141", + "total": "0.15585819", + "tradeID": 19495829, + "type": "buy" + }, + { + "amount": "6.67800000", + "date": "2019-06-11 02:26:55", + "globalTradeID": 419656741, + "orderNumber": 378678496560, + "rate": "0.01099141", + "total": "0.07340063", + "tradeID": 19495828, + "type": "buy" + }, + { + "amount": "9.80754099", + "date": "2019-06-11 02:26:55", + "globalTradeID": 419656738, + "orderNumber": 378678492564, + "rate": "0.01099141", + "total": "0.10779870", + "tradeID": 19495827, + "type": "buy" + }, + { + "amount": "0.10000000", + "date": "2019-06-11 02:26:55", + "globalTradeID": 419656737, + "orderNumber": 378678492564, + "rate": "0.01099100", + "total": "0.00109910", + "tradeID": 19495826, + "type": "buy" + }, + { + "amount": "0.58045901", + "date": "2019-06-11 02:26:55", + "globalTradeID": 419656736, + "orderNumber": 378678492564, + "rate": "0.01099100", + "total": "0.00637982", + "tradeID": 19495825, + "type": "buy" + }, + { + "amount": "0.97118176", + "date": "2019-06-11 02:25:28", + "globalTradeID": 419656692, + "orderNumber": 378677876181, + "rate": "0.01099141", + "total": "0.01067465", + "tradeID": 19495824, + "type": "buy" + }, + { + "amount": "1.21323848", + "date": "2019-06-11 02:25:22", + "globalTradeID": 419656686, + "orderNumber": 378677830227, + "rate": "0.01099141", + "total": "0.01333520", + "tradeID": 19495823, + "type": "buy" + }, + { + "amount": "0.61200000", + "date": "2019-06-11 02:25:10", + "globalTradeID": 419656674, + "orderNumber": 378677745312, + "rate": "0.01099141", + "total": "0.00672674", + "tradeID": 19495822, + "type": "buy" + }, + { + "amount": "4.42298415", + "date": "2019-06-11 02:25:10", + "globalTradeID": 419656673, + "orderNumber": 378677743314, + "rate": "0.01099141", + "total": "0.04861483", + "tradeID": 19495821, + "type": "buy" + }, + { + "amount": "0.32001585", + "date": "2019-06-11 02:25:10", + "globalTradeID": 419656672, + "orderNumber": 378677743314, + "rate": "0.01099140", + "total": "0.00351742", + "tradeID": 19495820, + "type": "buy" + }, + { + "amount": "0.09194560", + "date": "2019-06-11 02:23:58", + "globalTradeID": 419656622, + "orderNumber": 378677170887, + "rate": "0.01099139", + "total": "0.00101060", + "tradeID": 19495819, + "type": "buy" + }, + { + "amount": "0.89333991", + "date": "2019-06-11 02:22:33", + "globalTradeID": 419656536, + "orderNumber": 378676565493, + "rate": "0.01098805", + "total": "0.00981606", + "tradeID": 19495818, + "type": "buy" + }, + { + "amount": "3.46666009", + "date": "2019-06-11 02:22:33", + "globalTradeID": 419656535, + "orderNumber": 378676565493, + "rate": "0.01098804", + "total": "0.03809179", + "tradeID": 19495817, + "type": "buy" + }, + { + "amount": "2.83098726", + "date": "2019-06-11 02:21:53", + "globalTradeID": 419656510, + "orderNumber": 378676284774, + "rate": "0.01098616", + "total": "0.03110167", + "tradeID": 19495816, + "type": "buy" + }, + { + "amount": "9.88401274", + "date": "2019-06-11 02:21:53", + "globalTradeID": 419656509, + "orderNumber": 378676284774, + "rate": "0.01098615", + "total": "0.10858724", + "tradeID": 19495815, + "type": "buy" + }, + { + "amount": "2.51900000", + "date": "2019-06-11 02:21:52", + "globalTradeID": 419656507, + "orderNumber": 378676279779, + "rate": "0.01098615", + "total": "0.02767411", + "tradeID": 19495814, + "type": "buy" + }, + { + "amount": "6.19100000", + "date": "2019-06-11 02:21:52", + "globalTradeID": 419656505, + "orderNumber": 378676271787, + "rate": "0.01098615", + "total": "0.06801525", + "tradeID": 19495813, + "type": "buy" + }, + { + "amount": "1.80100000", + "date": "2019-06-11 02:21:52", + "globalTradeID": 419656504, + "orderNumber": 378676269789, + "rate": "0.01098615", + "total": "0.01978605", + "tradeID": 19495812, + "type": "buy" + }, + { + "amount": "10.26000000", + "date": "2019-06-11 02:21:52", + "globalTradeID": 419656503, + "orderNumber": 378676268790, + "rate": "0.01098615", + "total": "0.11271789", + "tradeID": 19495811, + "type": "buy" + }, + { + "amount": "1.98492975", + "date": "2019-06-11 02:21:51", + "globalTradeID": 419656502, + "orderNumber": 378676266792, + "rate": "0.01098615", + "total": "0.02180673", + "tradeID": 19495810, + "type": "buy" + }, + { + "amount": "0.22807025", + "date": "2019-06-11 02:21:51", + "globalTradeID": 419656501, + "orderNumber": 378676266792, + "rate": "0.01098614", + "total": "0.00250561", + "tradeID": 19495809, + "type": "buy" + }, + { + "amount": "8.26400000", + "date": "2019-06-11 02:21:51", + "globalTradeID": 419656499, + "orderNumber": 378676262796, + "rate": "0.01098615", + "total": "0.09078954", + "tradeID": 19495808, + "type": "buy" + }, + { + "amount": "3.63000000", + "date": "2019-06-11 02:21:51", + "globalTradeID": 419656496, + "orderNumber": 378676261797, + "rate": "0.01098615", + "total": "0.03987972", + "tradeID": 19495807, + "type": "buy" + }, + { + "amount": "5.82605751", + "date": "2019-06-11 02:21:46", + "globalTradeID": 419656491, + "orderNumber": 378676256802, + "rate": "0.01098615", + "total": "0.06400594", + "tradeID": 19495806, + "type": "buy" + }, + { + "amount": "5.82459583", + "date": "2019-06-11 02:21:46", + "globalTradeID": 419656488, + "orderNumber": 378676251807, + "rate": "0.01098616", + "total": "0.06398994", + "tradeID": 19495805, + "type": "buy" + }, + { + "amount": "5.82323047", + "date": "2019-06-11 02:21:46", + "globalTradeID": 419656478, + "orderNumber": 378676247811, + "rate": "0.01098617", + "total": "0.06397499", + "tradeID": 19495804, + "type": "buy" + }, + { + "amount": "0.00011303", + "date": "2019-06-11 02:17:12", + "globalTradeID": 419656401, + "orderNumber": 378674915145, + "rate": "0.01097003", + "total": "0.00000123", + "tradeID": 19495803, + "type": "sell" + }, + { + "amount": "0.00622868", + "date": "2019-06-11 02:15:35", + "globalTradeID": 419656344, + "orderNumber": 378674362698, + "rate": "0.01096700", + "total": "0.00006830", + "tradeID": 19495802, + "type": "sell" + }, + { + "amount": "6.44556753", + "date": "2019-06-11 02:14:58", + "globalTradeID": 419656335, + "orderNumber": 378674125935, + "rate": "0.01096644", + "total": "0.07068492", + "tradeID": 19495801, + "type": "sell" + }, + { + "amount": "0.00881642", + "date": "2019-06-11 02:13:59", + "globalTradeID": 419656229, + "orderNumber": 378673796265, + "rate": "0.01097611", + "total": "0.00009676", + "tradeID": 19495800, + "type": "sell" + }, + { + "amount": "4.34874974", + "date": "2019-06-11 02:11:11", + "globalTradeID": 419656134, + "orderNumber": 378672998064, + "rate": "0.01097600", + "total": "0.04773187", + "tradeID": 19495799, + "type": "sell" + }, + { + "amount": "0.12865121", + "date": "2019-06-11 02:11:11", + "globalTradeID": 419656133, + "orderNumber": 378672998064, + "rate": "0.01097601", + "total": "0.00141207", + "tradeID": 19495798, + "type": "sell" + }, + { + "amount": "1.32690213", + "date": "2019-06-11 02:11:11", + "globalTradeID": 419656132, + "orderNumber": 378672998064, + "rate": "0.01097601", + "total": "0.01456409", + "tradeID": 19495797, + "type": "sell" + }, + { + "amount": "4.08748000", + "date": "2019-06-11 02:11:11", + "globalTradeID": 419656131, + "orderNumber": 378672998064, + "rate": "0.01097632", + "total": "0.04486548", + "tradeID": 19495796, + "type": "sell" + }, + { + "amount": "0.00268670", + "date": "2019-06-11 02:10:51", + "globalTradeID": 419656071, + "orderNumber": 378672914148, + "rate": "0.01097629", + "total": "0.00002948", + "tradeID": 19495795, + "type": "sell" + }, + { + "amount": "0.00828786", + "date": "2019-06-11 02:10:50", + "globalTradeID": 419656068, + "orderNumber": 378672908154, + "rate": "0.01097629", + "total": "0.00009096", + "tradeID": 19495794, + "type": "sell" + }, + { + "amount": "0.00062589", + "date": "2019-06-11 02:09:13", + "globalTradeID": 419655987, + "orderNumber": 378672486576, + "rate": "0.01097625", + "total": "0.00000686", + "tradeID": 19495793, + "type": "sell" + }, + { + "amount": "0.08730618", + "date": "2019-06-11 02:07:30", + "globalTradeID": 419655936, + "orderNumber": 378671928135, + "rate": "0.01099588", + "total": "0.00096000", + "tradeID": 19495792, + "type": "buy" + }, + { + "amount": "2.94600000", + "date": "2019-06-11 02:07:27", + "globalTradeID": 419655935, + "orderNumber": 378671914149, + "rate": "0.01099590", + "total": "0.03239392", + "tradeID": 19495791, + "type": "buy" + }, + { + "amount": "18.99819158", + "date": "2019-06-11 02:07:23", + "globalTradeID": 419655932, + "orderNumber": 378671909154, + "rate": "0.01099590", + "total": "0.20890221", + "tradeID": 19495790, + "type": "buy" + }, + { + "amount": "8.49186817", + "date": "2019-06-11 02:07:23", + "globalTradeID": 419655931, + "orderNumber": 378671909154, + "rate": "0.01098289", + "total": "0.09326525", + "tradeID": 19495789, + "type": "buy" + }, + { + "amount": "0.92516246", + "date": "2019-06-11 02:07:23", + "globalTradeID": 419655930, + "orderNumber": 378671909154, + "rate": "0.01098289", + "total": "0.01016095", + "tradeID": 19495788, + "type": "buy" + }, + { + "amount": "40.55104177", + "date": "2019-06-11 02:05:51", + "globalTradeID": 419655888, + "orderNumber": 378671584479, + "rate": "0.01098982", + "total": "0.44564864", + "tradeID": 19495787, + "type": "buy" + }, + { + "amount": "0.00059948", + "date": "2019-06-11 02:04:30", + "globalTradeID": 419655839, + "orderNumber": 378671231832, + "rate": "0.01097601", + "total": "0.00000657", + "tradeID": 19495786, + "type": "sell" + }, + { + "amount": "0.00230684", + "date": "2019-06-11 02:04:29", + "globalTradeID": 419655835, + "orderNumber": 378671224839, + "rate": "0.01097601", + "total": "0.00002531", + "tradeID": 19495785, + "type": "sell" + }, + { + "amount": "0.00004919", + "date": "2019-06-11 02:02:52", + "globalTradeID": 419655760, + "orderNumber": 378670836228, + "rate": "0.01097624", + "total": "0.00000053", + "tradeID": 19495784, + "type": "sell" + }, + { + "amount": "0.00080537", + "date": "2019-06-11 02:02:50", + "globalTradeID": 419655755, + "orderNumber": 378670822242, + "rate": "0.01097624", + "total": "0.00000883", + "tradeID": 19495783, + "type": "sell" + }, + { + "amount": "0.14937440", + "date": "2019-06-11 02:01:24", + "globalTradeID": 419655714, + "orderNumber": 378670531533, + "rate": "0.01097609", + "total": "0.00163954", + "tradeID": 19495782, + "type": "sell" + }, + { + "amount": "0.11135441", + "date": "2019-06-11 02:01:18", + "globalTradeID": 419655711, + "orderNumber": 378670504560, + "rate": "0.01097610", + "total": "0.00122223", + "tradeID": 19495781, + "type": "sell" + }, + { + "amount": "0.00214374", + "date": "2019-06-11 02:01:12", + "globalTradeID": 419655698, + "orderNumber": 378670483581, + "rate": "0.01097610", + "total": "0.00002352", + "tradeID": 19495780, + "type": "sell" + }, + { + "amount": "0.00071883", + "date": "2019-06-11 02:01:11", + "globalTradeID": 419655693, + "orderNumber": 378670480584, + "rate": "0.01097610", + "total": "0.00000788", + "tradeID": 19495779, + "type": "sell" + }, + { + "amount": "0.09090000", + "date": "2019-06-11 02:01:10", + "globalTradeID": 419655690, + "orderNumber": 378670475589, + "rate": "0.01098999", + "total": "0.00099899", + "tradeID": 19495778, + "type": "buy" + }, + { + "amount": "0.10000000", + "date": "2019-06-11 02:00:41", + "globalTradeID": 419655677, + "orderNumber": 378670377687, + "rate": "0.01098998", + "total": "0.00109899", + "tradeID": 19495777, + "type": "buy" + }, + { + "amount": "22.47015128", + "date": "2019-06-11 01:59:51", + "globalTradeID": 419655660, + "orderNumber": 378670228836, + "rate": "0.01098999", + "total": "0.24694673", + "tradeID": 19495776, + "type": "buy" + }, + { + "amount": "0.15373084", + "date": "2019-06-11 01:59:51", + "globalTradeID": 419655659, + "orderNumber": 378670228836, + "rate": "0.01098642", + "total": "0.00168895", + "tradeID": 19495775, + "type": "buy" + }, + { + "amount": "0.00928634", + "date": "2019-06-11 01:59:51", + "globalTradeID": 419655658, + "orderNumber": 378670228836, + "rate": "0.01098400", + "total": "0.00010200", + "tradeID": 19495774, + "type": "buy" + }, + { + "amount": "0.05936375", + "date": "2019-06-11 01:59:51", + "globalTradeID": 419655657, + "orderNumber": 378670228836, + "rate": "0.01098025", + "total": "0.00065182", + "tradeID": 19495773, + "type": "buy" + }, + { + "amount": "0.02000000", + "date": "2019-06-11 01:59:51", + "globalTradeID": 419655656, + "orderNumber": 378670228836, + "rate": "0.01098000", + "total": "0.00021960", + "tradeID": 19495772, + "type": "buy" + }, + { + "amount": "0.00981951", + "date": "2019-06-11 01:59:51", + "globalTradeID": 419655655, + "orderNumber": 378670228836, + "rate": "0.01098000", + "total": "0.00010781", + "tradeID": 19495771, + "type": "buy" + }, + { + "amount": "0.00912443", + "date": "2019-06-11 01:59:51", + "globalTradeID": 419655652, + "orderNumber": 378670225839, + "rate": "0.01097603", + "total": "0.00010015", + "tradeID": 19495770, + "type": "sell" + }, + { + "amount": "0.00028061", + "date": "2019-06-11 01:59:35", + "globalTradeID": 419655640, + "orderNumber": 378670189875, + "rate": "0.01097606", + "total": "0.00000307", + "tradeID": 19495769, + "type": "sell" + }, + { + "amount": "1.29702296", + "date": "2019-06-11 01:59:23", + "globalTradeID": 419655633, + "orderNumber": 378670155909, + "rate": "0.01098000", + "total": "0.01424131", + "tradeID": 19495768, + "type": "buy" + }, + { + "amount": "1.18408220", + "date": "2019-06-11 01:59:05", + "globalTradeID": 419655630, + "orderNumber": 378670101963, + "rate": "0.01098000", + "total": "0.01300122", + "tradeID": 19495767, + "type": "buy" + }, + { + "amount": "0.02045548", + "date": "2019-06-11 01:58:00", + "globalTradeID": 419655590, + "orderNumber": 378669894171, + "rate": "0.01097603", + "total": "0.00022451", + "tradeID": 19495766, + "type": "sell" + }, + { + "amount": "0.01740344", + "date": "2019-06-11 01:58:00", + "globalTradeID": 419655589, + "orderNumber": 378669894171, + "rate": "0.01097605", + "total": "0.00019102", + "tradeID": 19495765, + "type": "sell" + }, + { + "amount": "0.00259656", + "date": "2019-06-11 01:58:00", + "globalTradeID": 419655588, + "orderNumber": 378669890175, + "rate": "0.01097605", + "total": "0.00002849", + "tradeID": 19495764, + "type": "sell" + }, + { + "amount": "2.29560855", + "date": "2019-06-11 01:57:42", + "globalTradeID": 419655571, + "orderNumber": 378669825240, + "rate": "0.01097605", + "total": "0.02519671", + "tradeID": 19495763, + "type": "sell" + }, + { + "amount": "8.67379891", + "date": "2019-06-11 01:57:06", + "globalTradeID": 419655547, + "orderNumber": 378669717348, + "rate": "0.01098000", + "total": "0.09523831", + "tradeID": 19495762, + "type": "buy" + }, + { + "amount": "0.00017674", + "date": "2019-06-11 01:56:19", + "globalTradeID": 419655520, + "orderNumber": 378669567498, + "rate": "0.01097606", + "total": "0.00000193", + "tradeID": 19495761, + "type": "sell" + }, + { + "amount": "0.00047831", + "date": "2019-06-11 01:53:01", + "globalTradeID": 419655454, + "orderNumber": 378668865201, + "rate": "0.01097600", + "total": "0.00000524", + "tradeID": 19495760, + "type": "sell" + }, + { + "amount": "0.00133017", + "date": "2019-06-11 01:52:57", + "globalTradeID": 419655453, + "orderNumber": 378668862204, + "rate": "0.01097600", + "total": "0.00001459", + "tradeID": 19495759, + "type": "sell" + }, + { + "amount": "0.01109161", + "date": "2019-06-11 01:50:44", + "globalTradeID": 419655381, + "orderNumber": 378668335731, + "rate": "0.01097600", + "total": "0.00012174", + "tradeID": 19495758, + "type": "sell" + }, + { + "amount": "0.01028779", + "date": "2019-06-11 01:50:41", + "globalTradeID": 419655380, + "orderNumber": 378668318748, + "rate": "0.01098000", + "total": "0.00011295", + "tradeID": 19495757, + "type": "buy" + }, + { + "amount": "0.00912435", + "date": "2019-06-11 01:49:39", + "globalTradeID": 419655343, + "orderNumber": 378668097969, + "rate": "0.01097613", + "total": "0.00010015", + "tradeID": 19495756, + "type": "sell" + }, + { + "amount": "17.58144635", + "date": "2019-06-11 01:49:38", + "globalTradeID": 419655339, + "orderNumber": 378668091975, + "rate": "0.01098000", + "total": "0.19304428", + "tradeID": 19495755, + "type": "buy" + }, + { + "amount": "0.06014124", + "date": "2019-06-11 01:48:21", + "globalTradeID": 419655307, + "orderNumber": 378667813254, + "rate": "0.01097631", + "total": "0.00066012", + "tradeID": 19495754, + "type": "sell" + }, + { + "amount": "0.00205442", + "date": "2019-06-11 01:48:15", + "globalTradeID": 419655303, + "orderNumber": 378667800267, + "rate": "0.01097631", + "total": "0.00002254", + "tradeID": 19495753, + "type": "sell" + } + ], + "queryString": "command=returnTradeHistory\u0026currencyPair=BTC_XMR", + "bodyParams": "", + "headers": {} }, { "data": { "1CR": { - "id": 1, - "name": "1CRedit", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 1, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "ABY": { - "id": 2, - "name": "ArtByte", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 2, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "AC": { - "id": 3, - "name": "AsiaCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 3, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "ACH": { - "id": 4, - "name": "Altcoin Herald", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "0.00000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 4, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.00000000" }, "ADN": { - "id": 5, - "name": "Aiden", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 5, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "AEON": { - "id": 6, - "name": "AEON Coin", - "humanType": "Payment ID", "currencyType": "address-payment-id", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": "WmrzAb4yy6i4otzaTZznsmaeBn8UKoBqS14XdW2DDzXr3DQnwz4o1XPJAJuo7QTqSoD9WVrdEQfn15udzhsJWmNR1jAEETQ2N", "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "Payment ID", + "id": 6, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "AERO": { - "id": 7, - "name": "Aerocoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 7, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "AIR": { - "id": 8, - "name": "AIRcoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 8, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "AMP": { - "id": 275, - "name": "Synereo AMP", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "5.00000000", - "minConf": 1000000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 275, + "isGeofenced": 0, + "minConf": 1000000, + "name": "", + "txFee": "5.00000000" }, "APH": { - "id": 9, - "name": "AphroditeCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 9, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "ARCH": { - "id": 258, - "name": "ARCHcoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 258, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "ARDR": { - "id": 285, - "name": "Ardor", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "2.00000000", - "minConf": 20, + "delisted": 0, "depositAddress": null, "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 285, + "isGeofenced": 0, + "minConf": 20, + "name": "", + "txFee": "2.00000000" }, "ATOM": { - "id": 313, - "name": "Cosmos", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "0.00500000", - "minConf": 0, + "delisted": 0, "depositAddress": null, "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 313, + "isGeofenced": 0, + "minConf": 0, + "name": "", + "txFee": "0.00500000" }, "AUR": { - "id": 10, - "name": "Auroracoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 10, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "AXIS": { - "id": 11, - "name": "Axis", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 11, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "BALLS": { - "id": 12, - "name": "Snowballs", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "6.40000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 12, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "6.40000000" }, "BANK": { - "id": 13, - "name": "BankCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 13, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "BAT": { - "id": 302, - "name": "Basic Attention Token", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "9.00000000", - "minConf": 30, + "delisted": 0, "depositAddress": null, "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 302, + "isGeofenced": 0, + "minConf": 30, + "name": "", + "txFee": "9.00000000" }, "BBL": { - "id": 14, - "name": "BitBlock", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 14, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "BBR": { - "id": 15, - "name": "Boolberry", - "humanType": "Payment ID", "currencyType": "address-payment-id", - "txFee": "0.00500000", - "minConf": 10000, + "delisted": 1, "depositAddress": "1D9hJ1nEjwuhxZMk6fupoTjKLtS2KzkfCQ7kF25k5B6Sc4UJjt9FrvDNYomVd4ZVHv36FskVRJGZa1JZAnZ35GiuAHf7gBy", "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "Payment ID", + "id": 15, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.00500000" }, "BCC": { - "id": 16, - "name": "BTCtalkcoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 16, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "BCH": { - "id": 292, - "name": "Bitcoin Cash (FROZEN)", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.00010000", - "minConf": 1000000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 1, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 292, + "isGeofenced": 0, + "minConf": 1000000, + "name": "", + "txFee": "0.00010000" }, "BCHABC": { - "id": 308, - "name": "Bitcoin Cash", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.00100000", - "minConf": 11, + "delisted": 0, "depositAddress": null, "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 308, + "isGeofenced": 0, + "minConf": 11, + "name": "", + "txFee": "0.00100000" }, "BCHSV": { - "id": 309, - "name": "Bitcoin SV", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.00100000", - "minConf": 36, + "delisted": 0, "depositAddress": null, "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 309, + "isGeofenced": 0, + "minConf": 36, + "name": "", + "txFee": "0.00100000" }, "BCN": { - "id": 17, - "name": "Bytecoin", - "humanType": "Payment ID", "currencyType": "address-payment-id", - "txFee": "1.00000000", - "minConf": 1000, + "delisted": 0, "depositAddress": "25cZNQYVAi3issDCoa6fWA2Aogd4FgPhYdpX3p8KLfhKC6sN8s6Q9WpcW4778TPwcUS5jEM25JrQvjD3XjsvXuNHSWhYUsu", "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "Payment ID", + "id": 17, + "isGeofenced": 0, + "minConf": 1000, + "name": "", + "txFee": "1.00000000" }, "BCY": { - "id": 269, - "name": "BitCrystals", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "4.00000000", - "minConf": 1000000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 269, + "isGeofenced": 0, + "minConf": 1000000, + "name": "", + "txFee": "4.00000000" }, "BDC": { - "id": 18, - "name": "Black Dragon Coin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 18, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "BDG": { - "id": 19, - "name": "Badgercoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 19, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "BELA": { - "id": 20, - "name": "Bela Legacy", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 1000000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 20, + "isGeofenced": 0, + "minConf": 1000000, + "name": "", + "txFee": "0.01000000" }, "BITCNY": { - "id": 273, - "name": "BitCNY", - "humanType": "Payment ID", "currencyType": "address-payment-id", - "txFee": "1.00000000", - "minConf": 10000, + "delisted": 1, "depositAddress": "poloniexwallet", "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "Payment ID", + "id": 273, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "1.00000000" }, "BITS": { - "id": 21, - "name": "Bitstar", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 21, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "BITUSD": { - "id": 272, - "name": "BitUSD", - "humanType": "Payment ID", "currencyType": "address-payment-id", - "txFee": "0.15000000", - "minConf": 10000, + "delisted": 1, "depositAddress": "poloniexwallet", "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "Payment ID", + "id": 272, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.15000000" }, "BLK": { - "id": 22, - "name": "BlackCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 1000000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 22, + "isGeofenced": 0, + "minConf": 1000000, + "name": "", + "txFee": "0.01000000" }, "BLOCK": { - "id": 23, - "name": "Blocknet", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 100000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 1, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 23, + "isGeofenced": 0, + "minConf": 100000, + "name": "", + "txFee": "0.01000000" }, "BLU": { - "id": 24, - "name": "BlueCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 24, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "BNS": { - "id": 25, - "name": "BonusCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 25, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "BNT": { - "id": 305, - "name": "Bancor", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "1.10000000", - "minConf": 30, + "delisted": 0, "depositAddress": null, "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 305, + "isGeofenced": 0, + "minConf": 30, + "name": "", + "txFee": "1.10000000" }, "BONES": { - "id": 26, - "name": "Bones", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 26, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "BOST": { - "id": 27, - "name": "BoostCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 27, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "BTC": { - "id": 28, - "name": "Bitcoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.00050000", - "minConf": 1, + "delisted": 0, "depositAddress": null, "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 28, + "isGeofenced": 0, + "minConf": 1, + "name": "", + "txFee": "0.00050000" }, "BTCD": { - "id": 29, - "name": "BitcoinDark", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 1000000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 29, + "isGeofenced": 0, + "minConf": 1000000, + "name": "", + "txFee": "0.01000000" }, "BTCS": { - "id": 30, - "name": "Bitcoin-sCrypt", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 30, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "BTM": { - "id": 31, - "name": "Bitmark", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 1000000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 31, + "isGeofenced": 0, + "minConf": 1000000, + "name": "", + "txFee": "0.01000000" }, "BTS": { - "id": 32, - "name": "BitShares", - "humanType": "Payment ID", "currencyType": "address-payment-id", - "txFee": "5.00000000", - "minConf": 50, + "delisted": 0, "depositAddress": "poloniexwallet", "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "Payment ID", + "id": 32, + "isGeofenced": 0, + "minConf": 50, + "name": "", + "txFee": "5.00000000" }, "BURN": { - "id": 33, - "name": "BurnerCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 33, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "BURST": { - "id": 34, - "name": "Burst", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "1.00000000", - "minConf": 1000000, + "delisted": 1, "depositAddress": null, "disabled": 0, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 34, + "isGeofenced": 0, + "minConf": 1000000, + "name": "", + "txFee": "1.00000000" }, "C2": { - "id": 35, - "name": "Coin2.0", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 35, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "CACH": { - "id": 36, - "name": "CACHeCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 36, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "CAI": { - "id": 37, - "name": "CaiShen", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 37, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "CC": { - "id": 38, - "name": "Colbert Coin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 38, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "CCN": { - "id": 39, - "name": "Cannacoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 39, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "CGA": { - "id": 40, - "name": "Cryptographic Anomaly", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.00100000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 40, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.00100000" }, "CHA": { - "id": 41, - "name": "Chancecoin", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 41, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "CINNI": { - "id": 42, - "name": "CinniCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 42, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "CLAM": { - "id": 43, - "name": "CLAMS", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.00100000", - "minConf": 6, + "delisted": 0, "depositAddress": null, "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 43, + "isGeofenced": 0, + "minConf": 6, + "name": "", + "txFee": "0.00100000" }, "CNL": { - "id": 44, - "name": "ConcealCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 44, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "CNMT": { - "id": 45, - "name": "Coinomat1", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "0.00000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 45, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.00000000" }, "CNOTE": { - "id": 46, - "name": "C-Note", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 46, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "COMM": { - "id": 47, - "name": "CommunityCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 47, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "CON": { - "id": 48, - "name": "Coino", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.10000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 48, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.10000000" }, "CORG": { - "id": 49, - "name": "CorgiCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 49, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "CRYPT": { - "id": 50, - "name": "CryptCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 50, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "CURE": { - "id": 51, - "name": "Curecoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 51, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "CVC": { - "id": 294, - "name": "Civic", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "1.00000000", - "minConf": 30, + "delisted": 0, "depositAddress": null, "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 294, + "isGeofenced": 0, + "minConf": 30, + "name": "", + "txFee": "1.00000000" }, "CYC": { - "id": 52, - "name": "Conspiracy Coin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 52, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "DAO": { - "id": 279, - "name": "The DAO", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 279, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "DASH": { - "id": 60, - "name": "Dash", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 50, + "delisted": 0, "depositAddress": null, "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 60, + "isGeofenced": 0, + "minConf": 50, + "name": "", + "txFee": "0.01000000" }, "DCR": { - "id": 277, - "name": "Decred", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.10000000", - "minConf": 4, + "delisted": 0, "depositAddress": null, "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 277, + "isGeofenced": 0, + "minConf": 4, + "name": "", + "txFee": "0.10000000" }, "DGB": { - "id": 53, - "name": "DigiByte", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.10000000", - "minConf": 40, + "delisted": 0, "depositAddress": null, "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 53, + "isGeofenced": 0, + "minConf": 40, + "name": "", + "txFee": "0.10000000" }, "DICE": { - "id": 54, - "name": "NeoDICE", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "0.00000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 54, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.00000000" }, "DIEM": { - "id": 55, - "name": "Diem", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 55, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "DIME": { - "id": 56, - "name": "Dimecoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 56, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "DIS": { - "id": 57, - "name": "DistroCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 57, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "DNS": { - "id": 58, - "name": "BitShares DNS", - "humanType": "Payment ID", "currencyType": "address-payment-id", - "txFee": "0.50000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "Payment ID", + "id": 58, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.50000000" }, "DOGE": { - "id": 59, - "name": "Dogecoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "100.00000000", - "minConf": 6, + "delisted": 0, "depositAddress": null, "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 59, + "isGeofenced": 0, + "minConf": 6, + "name": "", + "txFee": "100.00000000" }, "DRKC": { - "id": 61, - "name": "DarkCash", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 61, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "DRM": { - "id": 62, - "name": "Dreamcoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 62, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "DSH": { - "id": 63, - "name": "Dashcoin", - "humanType": "Payment ID", "currencyType": "address-payment-id", - "txFee": "1.00000000", - "minConf": 10000, + "delisted": 1, "depositAddress": "D8PDwmpq4KMhTy6u8RvWt5PLTMwEayGN3jeYoS3pkJQJMULNt2CyYKXG7KhqSahe9DPppRKqzkWGoMjf8C4L2mzFAgsJZXs", "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "Payment ID", + "id": 63, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "1.00000000" }, "DVK": { - "id": 64, - "name": "DvoraKoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 64, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "EAC": { - "id": 65, - "name": "EarthCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 65, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "EBT": { - "id": 66, - "name": "EBTcoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 66, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "ECC": { - "id": 67, - "name": "ECCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 67, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "EFL": { - "id": 68, - "name": "Electronic Gulden", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 68, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "EMC2": { - "id": 69, - "name": "Einsteinium", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 1000000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 69, + "isGeofenced": 0, + "minConf": 1000000, + "name": "", + "txFee": "0.01000000" }, "EMO": { - "id": 70, - "name": "EmotiCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 70, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "ENC": { - "id": 71, - "name": "Entropycoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 71, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "EOS": { - "id": 298, - "name": "EOS", - "humanType": "Payment ID", "currencyType": "address-payment-id", - "txFee": "0.00000000", - "minConf": 600, + "delisted": 0, "depositAddress": "poloniexeos1", "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "Payment ID", + "id": 298, + "isGeofenced": 0, + "minConf": 600, + "name": "", + "txFee": "0.00000000" }, "ETC": { - "id": 283, - "name": "Ethereum Classic", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 600, + "delisted": 0, "depositAddress": null, "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 283, + "isGeofenced": 0, + "minConf": 600, + "name": "", + "txFee": "0.01000000" }, "ETH": { - "id": 267, - "name": "Ethereum", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 30, + "delisted": 0, "depositAddress": null, "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 - }, - "eTOK": { - "id": 72, - "name": "eToken", - "humanType": "BTC Clone", - "currencyType": "address", - "txFee": "0.00100000", - "minConf": 10000, - "depositAddress": null, - "disabled": 1, - "delisted": 1, - "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 267, + "isGeofenced": 0, + "minConf": 30, + "name": "", + "txFee": "0.01000000" }, "EXE": { - "id": 73, - "name": "Execoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 73, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "EXP": { - "id": 270, - "name": "Expanse", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 8000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 270, + "isGeofenced": 0, + "minConf": 8000, + "name": "", + "txFee": "0.01000000" }, "FAC": { - "id": 74, - "name": "Faircoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 74, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "FCN": { - "id": 75, - "name": "Fantomcoin", - "humanType": "Payment ID", "currencyType": "address-payment-id", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": "6mkbrPdSAjeaQKCCx8Nus1JiKb4HdeTDXC4bEWunDzTMXMPESd7aFNYPAG1U4MUpnhHfJfzVyTqnRFRW2REKN6efBVRMoSY", "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "Payment ID", + "id": 75, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "FCT": { - "id": 271, - "name": "Factom", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 3, + "delisted": 0, "depositAddress": null, "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 271, + "isGeofenced": 0, + "minConf": 3, + "name": "", + "txFee": "0.01000000" }, "FIBRE": { - "id": 76, - "name": "Fibrecoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 76, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "FLAP": { - "id": 77, - "name": "FlappyCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 77, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "FLDC": { - "id": 78, - "name": "FoldingCoin", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "750.00000000", - "minConf": 1000000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 78, + "isGeofenced": 0, + "minConf": 1000000, + "name": "", + "txFee": "750.00000000" }, "FLO": { - "id": 254, - "name": "Florincoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 1000000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 254, + "isGeofenced": 0, + "minConf": 1000000, + "name": "", + "txFee": "0.01000000" }, "FLT": { - "id": 79, - "name": "FlutterCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 79, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "FOAM": { - "id": 307, - "name": "Foam", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "1.00000000", - "minConf": 30, + "delisted": 0, "depositAddress": null, "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 307, + "isGeofenced": 0, + "minConf": 30, + "name": "", + "txFee": "1.00000000" }, "FOX": { - "id": 80, - "name": "FoxCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 80, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "FRAC": { - "id": 81, - "name": "Fractalcoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 81, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "FRK": { - "id": 82, - "name": "Franko", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 82, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "FRQ": { - "id": 83, - "name": "FairQuark", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 83, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "FVZ": { - "id": 84, - "name": "FVZCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 84, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "FZ": { - "id": 85, - "name": "Frozen", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.00000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 85, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.00000000" }, "FZN": { - "id": 86, - "name": "Fuzon", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "0.00000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 86, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.00000000" }, "GAME": { - "id": 93, - "name": "GameCredits", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 80, + "delisted": 0, "depositAddress": null, "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 93, + "isGeofenced": 0, + "minConf": 80, + "name": "", + "txFee": "0.01000000" }, "GAP": { - "id": 87, - "name": "Gapcoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 87, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "GAS": { - "id": 296, - "name": "Gas", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.00000000", - "minConf": 18, + "delisted": 0, "depositAddress": null, "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 296, + "isGeofenced": 0, + "minConf": 18, + "name": "", + "txFee": "0.00000000" }, "GDN": { - "id": 88, - "name": "Global Denomination", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 88, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "GEMZ": { - "id": 89, - "name": "GetGems", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "500.00000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 89, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "500.00000000" }, "GEO": { - "id": 90, - "name": "GeoCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 90, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "GIAR": { - "id": 91, - "name": "Giarcoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 91, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "GLB": { - "id": 92, - "name": "Globe", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 92, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "GML": { - "id": 94, - "name": "GameleagueCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 1, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 94, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "GNO": { - "id": 291, - "name": "Gnosis", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "0.01500000", - "minConf": 1000000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 291, + "isGeofenced": 0, + "minConf": 1000000, + "name": "", + "txFee": "0.01500000" }, "GNS": { - "id": 95, - "name": "GenesisCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 95, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "GNT": { - "id": 290, - "name": "Golem", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "1.00000000", - "minConf": 30, + "delisted": 0, "depositAddress": null, "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 290, + "isGeofenced": 0, + "minConf": 30, + "name": "", + "txFee": "1.00000000" }, "GOLD": { - "id": 96, - "name": "GoldEagles", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 96, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "GPC": { - "id": 97, - "name": "GROUPCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 97, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "GPUC": { - "id": 98, - "name": "GPU Coin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 98, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "GRC": { - "id": 261, - "name": "Gridcoin Research", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 1000000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 261, + "isGeofenced": 0, + "minConf": 1000000, + "name": "", + "txFee": "0.01000000" }, "GRCX": { - "id": 99, - "name": "Gridcoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 99, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "GRIN": { - "id": 314, - "name": "Grin", - "humanType": "MimbleWimble", "currencyType": "mimblewimble", - "txFee": "0.10000000", - "minConf": 15, + "delisted": 0, "depositAddress": null, "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "MimbleWimble", + "id": 314, + "isGeofenced": 0, + "minConf": 15, + "name": "", + "txFee": "0.10000000" }, "GRS": { - "id": 100, - "name": "Groestlcoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 100000, + "delisted": 1, "depositAddress": null, "disabled": 0, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 100, + "isGeofenced": 0, + "minConf": 100000, + "name": "", + "txFee": "0.01000000" }, "GUE": { - "id": 101, - "name": "Guerillacoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 101, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "H2O": { - "id": 102, - "name": "H2O Coin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 102, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "HIRO": { - "id": 103, - "name": "Hirocoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 103, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "HOT": { - "id": 104, - "name": "Hotcoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 104, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "HUC": { - "id": 105, - "name": "Huntercoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 1000000, + "delisted": 1, "depositAddress": null, "disabled": 0, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 105, + "isGeofenced": 0, + "minConf": 1000000, + "name": "", + "txFee": "0.01000000" }, "HUGE": { - "id": 260, - "name": "BIGcoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 1, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 260, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "HVC": { - "id": 106, - "name": "Heavycoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 106, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "HYP": { - "id": 107, - "name": "HyperStake", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 107, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "HZ": { - "id": 108, - "name": "Horizon", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "1.00000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 108, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "1.00000000" }, "IFC": { - "id": 109, - "name": "Infinitecoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "2000.00000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 109, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "2000.00000000" }, "INDEX": { - "id": 265, - "name": "CoinoIndex", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "0.00000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 265, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.00000000" }, "IOC": { - "id": 263, - "name": "IO Digital Currency", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 263, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "ITC": { - "id": 110, - "name": "Information Coin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 110, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "IXC": { - "id": 111, - "name": "iXcoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 111, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "JLH": { - "id": 112, - "name": "jl777hodl", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "0.00000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 112, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.00000000" }, "JPC": { - "id": 113, - "name": "JackpotCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 113, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "JUG": { - "id": 114, - "name": "JuggaloCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 114, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "KDC": { - "id": 115, - "name": "KlondikeCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 115, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "KEY": { - "id": 116, - "name": "KeyCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 116, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "KNC": { - "id": 301, - "name": "Kyber", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "1.50000000", - "minConf": 30, + "delisted": 0, "depositAddress": null, "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 301, + "isGeofenced": 0, + "minConf": 30, + "name": "", + "txFee": "1.50000000" }, "LBC": { - "id": 280, - "name": "LBRY Credits", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.05000000", - "minConf": 11, + "delisted": 0, "depositAddress": null, "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 280, + "isGeofenced": 0, + "minConf": 11, + "name": "", + "txFee": "0.05000000" }, "LC": { - "id": 117, - "name": "Limecoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 117, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "LCL": { - "id": 118, - "name": "Limecoin Lite", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 118, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "LEAF": { - "id": 119, - "name": "Leafcoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.10000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 119, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.10000000" }, "LGC": { - "id": 120, - "name": "Logicoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 120, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "LOL": { - "id": 121, - "name": "LeagueCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 121, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "LOOM": { - "id": 303, - "name": "LOOM Network", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "19.00000000", - "minConf": 30, + "delisted": 0, "depositAddress": null, "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 303, + "isGeofenced": 0, + "minConf": 30, + "name": "", + "txFee": "19.00000000" }, "LOVE": { - "id": 122, - "name": "LOVEcoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 122, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "LPT": { - "id": 312, - "name": "Livepeer", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "0.05000000", - "minConf": 30, + "delisted": 0, "depositAddress": null, "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 312, + "isGeofenced": 0, + "minConf": 30, + "name": "", + "txFee": "0.05000000" }, "LQD": { - "id": 123, - "name": "LIQUID", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "0.00000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 123, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.00000000" }, "LSK": { - "id": 278, - "name": "Lisk", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "0.10000000", - "minConf": 303, + "delisted": 0, "depositAddress": null, "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 278, + "isGeofenced": 0, + "minConf": 303, + "name": "", + "txFee": "0.10000000" }, "LTBC": { - "id": 124, - "name": "LTBCoin", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "15000.00000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 124, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "15000.00000000" }, "LTC": { - "id": 125, - "name": "Litecoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.00100000", - "minConf": 4, + "delisted": 0, "depositAddress": null, "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 125, + "isGeofenced": 0, + "minConf": 4, + "name": "", + "txFee": "0.00100000" }, "LTCX": { - "id": 126, - "name": "LiteCoinX", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 126, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "MAID": { - "id": 127, - "name": "MaidSafeCoin", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "80.00000000", - "minConf": 1, + "delisted": 0, "depositAddress": null, "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 127, + "isGeofenced": 0, + "minConf": 1, + "name": "", + "txFee": "80.00000000" }, "MANA": { - "id": 306, - "name": "Decentraland", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "22.00000000", - "minConf": 30, + "delisted": 0, "depositAddress": null, "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 306, + "isGeofenced": 0, + "minConf": 30, + "name": "", + "txFee": "22.00000000" }, "MAST": { - "id": 128, - "name": "MastiffCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 128, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "MAX": { - "id": 129, - "name": "MaxCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 129, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "MCN": { - "id": 130, - "name": "Moneta Verde", - "humanType": "Payment ID", "currencyType": "address-payment-id", - "txFee": "1.00000000", - "minConf": 10000, + "delisted": 1, "depositAddress": "VdttvavdPJNGD4NzPQf8Hn4tWUGyy9mQ58ScwXxKbx9ve4Kp8xXZ1kD1KmXUMp5qtX8GmRgMk16aNVBhENEHNQAb3488Ha7Vv", "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "Payment ID", + "id": 130, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "1.00000000" }, "MEC": { - "id": 131, - "name": "Megacoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 131, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "METH": { - "id": 132, - "name": "CryptoMETH", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 132, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "MIL": { - "id": 133, - "name": "Millennium Coin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 133, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "MIN": { - "id": 134, - "name": "Minerals", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 134, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "MINT": { - "id": 135, - "name": "Mintcoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.10000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 0, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 135, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.10000000" }, "MMC": { - "id": 136, - "name": "MemoryCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 136, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "MMNXT": { - "id": 137, - "name": "MMNXT", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "0.00000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 137, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.00000000" }, "MMXIV": { - "id": 138, - "name": "Maieuticoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.00100000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 138, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.00100000" }, "MNTA": { - "id": 139, - "name": "Moneta", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 139, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "MON": { - "id": 140, - "name": "Monocle", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 140, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "MRC": { - "id": 141, - "name": "microCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 141, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "MRS": { - "id": 142, - "name": "Marscoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 142, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "MTS": { - "id": 144, - "name": "Metiscoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 144, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "MUN": { - "id": 145, - "name": "Muniti", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 145, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "MYR": { - "id": 146, - "name": "Myriadcoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 0, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 146, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "MZC": { - "id": 147, - "name": "MazaCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 147, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "N5X": { - "id": 148, - "name": "N5coin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 148, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "NAS": { - "id": 149, - "name": "NAS", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "1.00000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 149, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "1.00000000" }, "NAUT": { - "id": 150, - "name": "Nautiluscoin", - "humanType": "Sweep to Main Account", "currencyType": "address-payment-id", - "txFee": "0.00000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 150, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.00000000" }, "NAV": { - "id": 151, - "name": "NAVCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 480, + "delisted": 0, "depositAddress": null, "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 151, + "isGeofenced": 0, + "minConf": 480, + "name": "", + "txFee": "0.01000000" }, "NBT": { - "id": 152, - "name": "NuBits", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 152, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "NEOS": { - "id": 153, - "name": "Neoscoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.00010000", - "minConf": 1000000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 153, + "isGeofenced": 0, + "minConf": 1000000, + "name": "", + "txFee": "0.00010000" }, "NL": { - "id": 154, - "name": "Nanolite", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 154, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "NMC": { - "id": 155, - "name": "Namecoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 1000000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 155, + "isGeofenced": 0, + "minConf": 1000000, + "name": "", + "txFee": "0.01000000" }, "NMR": { - "id": 310, - "name": "Numeraire", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "0.05000000", - "minConf": 30, + "delisted": 0, "depositAddress": null, "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 310, + "isGeofenced": 0, + "minConf": 30, + "name": "", + "txFee": "0.05000000" }, "NOBL": { - "id": 156, - "name": "NobleCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 156, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "NOTE": { - "id": 157, - "name": "DNotes", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 157, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "NOXT": { - "id": 158, - "name": "NobleNXT", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "0.00000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 158, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.00000000" }, "NRS": { - "id": 159, - "name": "NoirShares", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 159, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "NSR": { - "id": 160, - "name": "NuShares", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "2.00000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 160, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "2.00000000" }, "NTX": { - "id": 161, - "name": "NTX", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "1.00000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 161, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "1.00000000" }, "NXC": { - "id": 288, - "name": "Nexium", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "10.00000000", - "minConf": 1000000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 288, + "isGeofenced": 0, + "minConf": 1000000, + "name": "", + "txFee": "10.00000000" }, "NXT": { - "id": 162, - "name": "NXT", - "humanType": "Sweep to Main Account", "currencyType": "address-payment-id", - "txFee": "1.00000000", - "minConf": 24, + "delisted": 0, "depositAddress": null, "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 162, + "isGeofenced": 0, + "minConf": 24, + "name": "", + "txFee": "1.00000000" }, "NXTI": { - "id": 163, - "name": "NXTInspect", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "0.00000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 163, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.00000000" }, "OMG": { - "id": 295, - "name": "OmiseGO", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "0.30000000", - "minConf": 30, + "delisted": 0, "depositAddress": null, "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 295, + "isGeofenced": 0, + "minConf": 30, + "name": "", + "txFee": "0.30000000" }, "OMNI": { - "id": 143, - "name": "Omni", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "4.00000000", - "minConf": 1, + "delisted": 0, "depositAddress": null, "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 143, + "isGeofenced": 0, + "minConf": 1, + "name": "", + "txFee": "4.00000000" }, "OPAL": { - "id": 164, - "name": "Opal", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 164, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "PAND": { - "id": 165, - "name": "PandaCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 165, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "PASC": { - "id": 289, - "name": "PascalCoin", - "humanType": "Payment ID", "currencyType": "address-payment-id", - "txFee": "0.01000000", - "minConf": 300, + "delisted": 0, "depositAddress": "86646-64", "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "Payment ID", + "id": 289, + "isGeofenced": 0, + "minConf": 300, + "name": "", + "txFee": "0.01000000" }, "PAWN": { - "id": 166, - "name": "Pawncoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 166, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "PIGGY": { - "id": 167, - "name": "New Piggycoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 167, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "PINK": { - "id": 168, - "name": "Pinkcoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 1000000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 168, + "isGeofenced": 0, + "minConf": 1000000, + "name": "", + "txFee": "0.01000000" }, "PLX": { - "id": 169, - "name": "ParallaxCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 169, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "PMC": { - "id": 170, - "name": "Premine", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 170, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "POLY": { - "id": 311, - "name": "Polymath", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "0.25000000", - "minConf": 30, + "delisted": 0, "depositAddress": null, "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 311, + "isGeofenced": 0, + "minConf": 30, + "name": "", + "txFee": "0.25000000" }, "POT": { - "id": 171, - "name": "PotCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 1000000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 171, + "isGeofenced": 0, + "minConf": 1000000, + "name": "", + "txFee": "0.01000000" }, "PPC": { - "id": 172, - "name": "Peercoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 1000000, + "delisted": 1, "depositAddress": null, "disabled": 0, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 172, + "isGeofenced": 0, + "minConf": 1000000, + "name": "", + "txFee": "0.01000000" }, "PRC": { - "id": 173, - "name": "ProsperCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 173, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "PRT": { - "id": 174, - "name": "Particle", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 174, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "PTS": { - "id": 175, - "name": "BitShares PTS", - "humanType": "Payment ID", "currencyType": "address-payment-id", - "txFee": "25.00000000", - "minConf": 10000, + "delisted": 1, "depositAddress": "poloniexwallet", "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "Payment ID", + "id": 175, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "25.00000000" }, "Q2C": { - "id": 176, - "name": "QubitCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 176, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "QBK": { - "id": 177, - "name": "Qibuck", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 177, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "QCN": { - "id": 178, - "name": "QuazarCoin", - "humanType": "Payment ID", "currencyType": "address-payment-id", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": "1VQpANF1pcKHPRAsZpeyG4jLDd1kbPn32YMeXkr9n8jNFvf8aaJdecB3FyAvo7X1DWJDQt3nii9eUTP5kJSfRpL5AwT72FM", "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "Payment ID", + "id": 178, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "QORA": { - "id": 179, - "name": "Qora", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "1.00000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 179, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "1.00000000" }, "QTL": { - "id": 180, - "name": "Quatloo", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 0, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 180, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "QTUM": { - "id": 304, - "name": "Qtum", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 6, + "delisted": 0, "depositAddress": null, "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 304, + "isGeofenced": 0, + "minConf": 6, + "name": "", + "txFee": "0.01000000" }, "RADS": { - "id": 274, - "name": "Radium", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 1000000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 274, + "isGeofenced": 0, + "minConf": 1000000, + "name": "", + "txFee": "0.01000000" }, "RBY": { - "id": 181, - "name": "Rubycoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 181, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "RDD": { - "id": 182, - "name": "Reddcoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 0, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 182, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "REP": { - "id": 284, - "name": "Augur", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "0.10000000", - "minConf": 30, + "delisted": 0, "depositAddress": null, "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 284, + "isGeofenced": 0, + "minConf": 30, + "name": "", + "txFee": "0.10000000" }, "RIC": { - "id": 183, - "name": "Riecoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 1000000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 183, + "isGeofenced": 0, + "minConf": 1000000, + "name": "", + "txFee": "0.01000000" }, "RZR": { - "id": 184, - "name": "Razor", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 184, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "SBD": { - "id": 282, - "name": "Steem Dollars", - "humanType": "Payment ID", "currencyType": "address-payment-id", - "txFee": "0.01000000", - "minConf": 1000000, + "delisted": 1, "depositAddress": "poloniex", "disabled": 0, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "Payment ID", + "id": 282, + "isGeofenced": 0, + "minConf": 1000000, + "name": "", + "txFee": "0.01000000" }, "SC": { - "id": 268, - "name": "Siacoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "10.00000000", - "minConf": 6, + "delisted": 0, "depositAddress": null, "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 268, + "isGeofenced": 0, + "minConf": 6, + "name": "", + "txFee": "10.00000000" }, "SDC": { - "id": 185, - "name": "Shadow", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 185, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "SHIBE": { - "id": 186, - "name": "ShibeCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 186, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "SHOPX": { - "id": 187, - "name": "ShopX", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 187, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "SILK": { - "id": 188, - "name": "Silkcoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 188, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "SJCX": { - "id": 189, - "name": "Storjcoin X", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "3.00000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 189, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "3.00000000" }, "SLR": { - "id": 190, - "name": "SolarCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 190, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "SMC": { - "id": 191, - "name": "SmartCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 191, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "SNT": { - "id": 300, - "name": "Status", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "200.00000000", - "minConf": 30, + "delisted": 0, "depositAddress": null, "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 300, + "isGeofenced": 0, + "minConf": 30, + "name": "", + "txFee": "200.00000000" }, "SOC": { - "id": 192, - "name": "SocialCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 192, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "SPA": { - "id": 193, - "name": "Spaincoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 193, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "SQL": { - "id": 194, - "name": "Squallcoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 194, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "SRCC": { - "id": 195, - "name": "SourceCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 195, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "SRG": { - "id": 196, - "name": "Surge", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 196, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "SSD": { - "id": 197, - "name": "Sonic", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 197, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "STEEM": { - "id": 281, - "name": "STEEM", - "humanType": "Payment ID", "currencyType": "address-payment-id", - "txFee": "0.01000000", - "minConf": 50, + "delisted": 0, "depositAddress": "poloniex", "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "Payment ID", + "id": 281, + "isGeofenced": 0, + "minConf": 50, + "name": "", + "txFee": "0.01000000" }, "STORJ": { - "id": 297, - "name": "Storj", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "1.00000000", - "minConf": 30, + "delisted": 0, "depositAddress": null, "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 297, + "isGeofenced": 0, + "minConf": 30, + "name": "", + "txFee": "1.00000000" }, "STR": { - "id": 198, - "name": "Stellar", - "humanType": "Payment ID", "currencyType": "address-payment-id", - "txFee": "0.00001000", - "minConf": 2, + "delisted": 0, "depositAddress": "GCF7F72LNF3ODSJIIWPJWEVWX33VT2SVZSUQ5NMDKDLK3N2NFCUAUHPT", "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "Payment ID", + "id": 198, + "isGeofenced": 0, + "minConf": 2, + "name": "", + "txFee": "0.00001000" }, "STRAT": { - "id": 287, - "name": "Stratis", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 24, + "delisted": 0, "depositAddress": null, "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 287, + "isGeofenced": 0, + "minConf": 24, + "name": "", + "txFee": "0.01000000" }, "SUM": { - "id": 199, - "name": "SummerCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 199, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "SUN": { - "id": 200, - "name": "Suncoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 200, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "SWARM": { - "id": 201, - "name": "SWARM", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "1000.00000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 201, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "1000.00000000" }, "SXC": { - "id": 202, - "name": "Sexcoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 202, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "SYNC": { - "id": 203, - "name": "Sync", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.00010000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 203, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.00010000" }, "SYS": { - "id": 204, - "name": "Syscoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 1000000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 204, + "isGeofenced": 0, + "minConf": 1000000, + "name": "", + "txFee": "0.01000000" }, "TAC": { - "id": 205, - "name": "Talkcoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 205, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "TOR": { - "id": 206, - "name": "TorCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 206, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "TRUST": { - "id": 207, - "name": "TrustPlus", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 207, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "TWE": { - "id": 208, - "name": "Twecoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 208, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "UIS": { - "id": 209, - "name": "Unitus", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 209, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "ULTC": { - "id": 210, - "name": "Umbrella-LTC", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 210, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "UNITY": { - "id": 211, - "name": "SuperNET", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "0.00000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 211, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.00000000" }, "URO": { - "id": 212, - "name": "Uro", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.00100000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 212, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.00100000" }, "USDC": { - "id": 299, - "name": "USD Coin", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "0.02000000", - "minConf": 30, + "delisted": 0, "depositAddress": null, "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 299, + "isGeofenced": 0, + "minConf": 30, + "name": "", + "txFee": "0.02000000" }, "USDE": { - "id": 213, - "name": "USDE", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 213, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "USDT": { - "id": 214, - "name": "Tether USD", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "10.00000000", - "minConf": 2, + "delisted": 0, "depositAddress": null, "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 214, + "isGeofenced": 0, + "minConf": 2, + "name": "", + "txFee": "10.00000000" }, "UTC": { - "id": 215, - "name": "UltraCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 215, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "UTIL": { - "id": 216, - "name": "UtilityCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 216, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "UVC": { - "id": 217, - "name": "UniversityCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 217, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "VIA": { - "id": 218, - "name": "Viacoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 60, + "delisted": 0, "depositAddress": null, "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 218, + "isGeofenced": 0, + "minConf": 60, + "name": "", + "txFee": "0.01000000" }, "VOOT": { - "id": 219, - "name": "VootCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 219, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "VOX": { - "id": 276, - "name": "Voxels", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 276, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "VRC": { - "id": 220, - "name": "VeriCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 1000000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 220, + "isGeofenced": 0, + "minConf": 1000000, + "name": "", + "txFee": "0.01000000" }, "VTC": { - "id": 221, - "name": "Vertcoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.00100000", - "minConf": 600, + "delisted": 0, "depositAddress": null, "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 221, + "isGeofenced": 0, + "minConf": 600, + "name": "", + "txFee": "0.00100000" }, "WC": { - "id": 222, - "name": "WhiteCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 222, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "WDC": { - "id": 223, - "name": "Worldcoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 223, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "WIKI": { - "id": 224, - "name": "Wikicoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.10000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 224, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.10000000" }, "WOLF": { - "id": 225, - "name": "InsanityCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.02000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 225, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.02000000" }, "X13": { - "id": 226, - "name": "X13Coin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 226, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "XAI": { - "id": 227, - "name": "Sapience AIFX", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 227, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "XAP": { - "id": 228, - "name": "API Coin", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "100.00000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 228, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "100.00000000" }, "XBC": { - "id": 229, - "name": "BitcoinPlus", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.00010000", - "minConf": 1000000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 229, + "isGeofenced": 0, + "minConf": 1000000, + "name": "", + "txFee": "0.00010000" }, "XC": { - "id": 230, - "name": "XCurrency", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 230, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "XCH": { - "id": 231, - "name": "ClearingHouse", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "0.00000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 231, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.00000000" }, "XCN": { - "id": 232, - "name": "Cryptonite", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.02000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 232, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.02000000" }, "XCP": { - "id": 233, - "name": "Counterparty", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "16.00000000", - "minConf": 1000000, + "delisted": 1, "depositAddress": null, "disabled": 0, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 233, + "isGeofenced": 0, + "minConf": 1000000, + "name": "", + "txFee": "16.00000000" }, "XCR": { - "id": 234, - "name": "Crypti", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "0.00017818", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 234, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.00017818" }, "XDN": { - "id": 235, - "name": "DigitalNote", - "humanType": "Payment ID", "currencyType": "address-payment-id", - "txFee": "1.00000000", - "minConf": 10000, + "delisted": 1, "depositAddress": "ddddecTXF5B9PDwqZXP4Bs1FwttZbhF2YTRstruKctMoFJTE3VgD5uKd4RzmTHdzkv52wWWK2NYmfJeaiTuut2Pe2RVimGCvZ", "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "Payment ID", + "id": 235, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "1.00000000" }, "XDP": { - "id": 236, - "name": "Dogeparty", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "0.00000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 236, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.00000000" }, "XEM": { - "id": 256, - "name": "NEM", - "humanType": "Payment ID", "currencyType": "address-payment-id", - "txFee": "15.00000000", - "minConf": 18, + "delisted": 0, "depositAddress": "NBZMQO7ZPBYNBDUR7F75MAKA2S3DHDCIFG775N3D", "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "Payment ID", + "id": 256, + "isGeofenced": 0, + "minConf": 18, + "name": "", + "txFee": "15.00000000" }, "XHC": { - "id": 237, - "name": "Honorcoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 237, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "XLB": { - "id": 238, - "name": "Libertycoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 238, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "XMG": { - "id": 239, - "name": "Magi", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 239, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "XMR": { - "id": 240, - "name": "Monero", - "humanType": "BTC Clone", "currencyType": "address-payment-id", - "txFee": "0.00010000", - "minConf": 8, + "delisted": 0, "depositAddress": null, "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 240, + "isGeofenced": 0, + "minConf": 8, + "name": "", + "txFee": "0.00010000" }, "XPB": { - "id": 241, - "name": "Pebblecoin", - "humanType": "Payment ID", "currencyType": "address-payment-id", - "txFee": "0.10000000", - "minConf": 10000, + "delisted": 1, "depositAddress": "PByFtxkMuoFRwrhXU19PBXLgHssTtcvTDSGzNf7Rvt5uKEf5PnRL4ccK4pWN4dpwvGhggGq12gH4bMqbxLyQGhkf3RLfzurMdK", "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "Payment ID", + "id": 241, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.10000000" }, "XPM": { - "id": 242, - "name": "Primecoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 2880, + "delisted": 0, "depositAddress": null, "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 242, + "isGeofenced": 0, + "minConf": 2880, + "name": "", + "txFee": "0.01000000" }, "XRP": { - "id": 243, - "name": "Ripple", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "0.15000000", - "minConf": 12, + "delisted": 0, "depositAddress": null, "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 243, + "isGeofenced": 0, + "minConf": 12, + "name": "", + "txFee": "0.15000000" }, "XSI": { - "id": 244, - "name": "Stability Shares", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 244, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "XST": { - "id": 245, - "name": "StealthCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 245, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "XSV": { - "id": 246, - "name": "Silicon Valley Coin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 246, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "XUSD": { - "id": 247, - "name": "CoinoUSD", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "0.00000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 247, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.00000000" }, "XVC": { - "id": 253, - "name": "Vcash", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 1000000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 253, + "isGeofenced": 0, + "minConf": 1000000, + "name": "", + "txFee": "0.01000000" }, "XXC": { - "id": 248, - "name": "CREDS", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 248, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "YACC": { - "id": 249, - "name": "YACCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 249, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "YANG": { - "id": 250, - "name": "Yangcoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 250, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "YC": { - "id": 251, - "name": "YellowCoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 251, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "YIN": { - "id": 252, - "name": "Yincoin", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.01000000", - "minConf": 10000, + "delisted": 1, "depositAddress": null, "disabled": 1, - "delisted": 1, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 252, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.01000000" }, "ZEC": { - "id": 286, - "name": "Zcash", - "humanType": "BTC Clone", "currencyType": "address", - "txFee": "0.00100000", - "minConf": 8, + "delisted": 0, "depositAddress": null, "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "BTC Clone", + "id": 286, + "isGeofenced": 0, + "minConf": 8, + "name": "", + "txFee": "0.00100000" }, "ZRX": { - "id": 293, - "name": "0x", - "humanType": "Sweep to Main Account", "currencyType": "address", - "txFee": "5.00000000", - "minConf": 30, + "delisted": 0, "depositAddress": null, "disabled": 0, - "delisted": 0, "frozen": 0, - "isGeofenced": 0 + "humanType": "Sweep to Main Account", + "id": 293, + "isGeofenced": 0, + "minConf": 30, + "name": "", + "txFee": "5.00000000" + }, + "eTOK": { + "currencyType": "address", + "delisted": 1, + "depositAddress": null, + "disabled": 1, + "frozen": 0, + "humanType": "BTC Clone", + "id": 72, + "isGeofenced": 0, + "minConf": 10000, + "name": "", + "txFee": "0.00100000" } }, "queryString": "command=returnCurrencies", - "bodyParams": "\u003cnil\u003e", - "headers": { - "Key": [ - "" - ] - } + "bodyParams": "", + "headers": {} }, { "data": [ { + "close": 0.00403997, "date": 1405699200, "high": 0.00413615, "low": 0.00403986, "open": 0.00404545, - "close": 0.00403997, - "volume": 4.95713239, "quoteVolume": 1205.10503896, + "volume": 4.95713239, "weightedAverage": 0.00411344 } ], "queryString": "command=returnChartData\u0026currencyPair=BTC_XMR\u0026end=1405699400\u0026period=300\u0026start=1405699200", - "bodyParams": "\u003cnil\u003e", - "headers": { - "Key": [ - "" - ] - } - }, - { - "data": [ - { - "globalTradeID": 419660422, - "tradeID": 19495952, - "date": "2019-06-11 04:31:22", - "type": "buy", - "rate": "0.01087441", - "amount": "3.67796814", - "total": "0.03999573", - "orderNumber": 378714356664 - }, - { - "globalTradeID": 419660404, - "tradeID": 19495951, - "date": "2019-06-11 04:30:31", - "type": "sell", - "rate": "0.01086990", - "amount": "0.00571394", - "total": "0.00006210", - "orderNumber": 378714099921 - }, - { - "globalTradeID": 419660400, - "tradeID": 19495950, - "date": "2019-06-11 04:30:26", - "type": "sell", - "rate": "0.01086990", - "amount": "0.00230268", - "total": "0.00002502", - "orderNumber": 378714088932 - }, - { - "globalTradeID": 419660390, - "tradeID": 19495949, - "date": "2019-06-11 04:30:07", - "type": "buy", - "rate": "0.01086995", - "amount": "0.09199674", - "total": "0.00099999", - "orderNumber": 378714018003 - }, - { - "globalTradeID": 419660384, - "tradeID": 19495948, - "date": "2019-06-11 04:29:44", - "type": "buy", - "rate": "0.01086995", - "amount": "0.18399348", - "total": "0.00199999", - "orderNumber": 378713958063 - }, - { - "globalTradeID": 419660320, - "tradeID": 19495947, - "date": "2019-06-11 04:27:43", - "type": "buy", - "rate": "0.01086995", - "amount": "0.00921345", - "total": "0.00010014", - "orderNumber": 378713556465 - }, - { - "globalTradeID": 419660311, - "tradeID": 19495946, - "date": "2019-06-11 04:27:16", - "type": "sell", - "rate": "0.01087360", - "amount": "0.00977015", - "total": "0.00010623", - "orderNumber": 378713374647 - }, - { - "globalTradeID": 419660294, - "tradeID": 19495945, - "date": "2019-06-11 04:27:08", - "type": "sell", - "rate": "0.01087361", - "amount": "0.00059317", - "total": "0.00000644", - "orderNumber": 378713343678 - }, - { - "globalTradeID": 419660267, - "tradeID": 19495944, - "date": "2019-06-11 04:25:46", - "type": "buy", - "rate": "0.01087743", - "amount": "0.09193288", - "total": "0.00099999", - "orderNumber": 378713085936 - }, - { - "globalTradeID": 419660245, - "tradeID": 19495943, - "date": "2019-06-11 04:25:30", - "type": "sell", - "rate": "0.01087360", - "amount": "0.00391038", - "total": "0.00004251", - "orderNumber": 378712987035 - }, - { - "globalTradeID": 419660244, - "tradeID": 19495942, - "date": "2019-06-11 04:25:30", - "type": "buy", - "rate": "0.01087756", - "amount": "0.18386391", - "total": "0.00199999", - "orderNumber": 378712985037 - }, - { - "globalTradeID": 419660236, - "tradeID": 19495941, - "date": "2019-06-11 04:25:00", - "type": "sell", - "rate": "0.01088420", - "amount": "0.01369197", - "total": "0.00014902", - "orderNumber": 378712820202 - }, - { - "globalTradeID": 419660229, - "tradeID": 19495940, - "date": "2019-06-11 04:24:35", - "type": "sell", - "rate": "0.01088519", - "amount": "0.01427388", - "total": "0.00015537", - "orderNumber": 378712682340 - }, - { - "globalTradeID": 419660226, - "tradeID": 19495939, - "date": "2019-06-11 04:24:34", - "type": "sell", - "rate": "0.01088768", - "amount": "0.00097304", - "total": "0.00001059", - "orderNumber": 378712674348 - }, - { - "globalTradeID": 419660173, - "tradeID": 19495938, - "date": "2019-06-11 04:22:05", - "type": "sell", - "rate": "0.01088769", - "amount": "1.48700000", - "total": "0.01618999", - "orderNumber": 378711816207 - }, - { - "globalTradeID": 419660171, - "tradeID": 19495937, - "date": "2019-06-11 04:22:02", - "type": "sell", - "rate": "0.01088768", - "amount": "1.31174004", - "total": "0.01428180", - "orderNumber": 378711803220 - }, - { - "globalTradeID": 419660170, - "tradeID": 19495936, - "date": "2019-06-11 04:22:02", - "type": "sell", - "rate": "0.01089626", - "amount": "0.01425996", - "total": "0.00015538", - "orderNumber": 378711803220 - }, - { - "globalTradeID": 419660132, - "tradeID": 19495935, - "date": "2019-06-11 04:20:05", - "type": "sell", - "rate": "0.01089627", - "amount": "5.95100000", - "total": "0.06484370", - "orderNumber": 378711129894 - }, - { - "globalTradeID": 419660131, - "tradeID": 19495934, - "date": "2019-06-11 04:20:05", - "type": "sell", - "rate": "0.01089627", - "amount": "3.65950000", - "total": "0.03987490", - "orderNumber": 378711122901 - }, - { - "globalTradeID": 419660129, - "tradeID": 19495933, - "date": "2019-06-11 04:20:01", - "type": "sell", - "rate": "0.01091500", - "amount": "0.16900000", - "total": "0.00184463", - "orderNumber": 378711079944 - }, - { - "globalTradeID": 419660126, - "tradeID": 19495932, - "date": "2019-06-11 04:20:01", - "type": "sell", - "rate": "0.01091935", - "amount": "21.93500000", - "total": "0.23951594", - "orderNumber": 378711075948 - }, - { - "globalTradeID": 419660124, - "tradeID": 19495931, - "date": "2019-06-11 04:20:01", - "type": "sell", - "rate": "0.01091935", - "amount": "11.44500000", - "total": "0.12497196", - "orderNumber": 378711073950 - }, - { - "globalTradeID": 419660123, - "tradeID": 19495930, - "date": "2019-06-11 04:20:00", - "type": "sell", - "rate": "0.01091935", - "amount": "37.87000000", - "total": "0.41351578", - "orderNumber": 378711071952 - }, - { - "globalTradeID": 419660122, - "tradeID": 19495929, - "date": "2019-06-11 04:20:00", - "type": "sell", - "rate": "0.01091937", - "amount": "0.11441976", - "total": "0.00124939", - "orderNumber": 378711070953 - }, - { - "globalTradeID": 419660106, - "tradeID": 19495928, - "date": "2019-06-11 04:19:08", - "type": "buy", - "rate": "0.01092168", - "amount": "0.00001589", - "total": "0.00000017", - "orderNumber": 378710872152 - }, - { - "globalTradeID": 419660079, - "tradeID": 19495927, - "date": "2019-06-11 04:17:33", - "type": "buy", - "rate": "0.01094157", - "amount": "0.00000361", - "total": "0.00000003", - "orderNumber": 378710442582 - }, - { - "globalTradeID": 419660064, - "tradeID": 19495926, - "date": "2019-06-11 04:17:25", - "type": "buy", - "rate": "0.01094825", - "amount": "0.10771685", - "total": "0.00117931", - "orderNumber": 378710362662 - }, - { - "globalTradeID": 419660041, - "tradeID": 19495925, - "date": "2019-06-11 04:17:17", - "type": "buy", - "rate": "0.01092001", - "amount": "0.00038186", - "total": "0.00000416", - "orderNumber": 378710310714 - }, - { - "globalTradeID": 419660040, - "tradeID": 19495924, - "date": "2019-06-11 04:17:17", - "type": "buy", - "rate": "0.01092000", - "amount": "0.00020349", - "total": "0.00000222", - "orderNumber": 378710310714 - }, - { - "globalTradeID": 419660037, - "tradeID": 19495923, - "date": "2019-06-11 04:17:15", - "type": "buy", - "rate": "0.01092000", - "amount": "0.05500000", - "total": "0.00060060", - "orderNumber": 378710295729 - }, - { - "globalTradeID": 419659984, - "tradeID": 19495922, - "date": "2019-06-11 04:15:16", - "type": "sell", - "rate": "0.01091912", - "amount": "13.40208261", - "total": "0.14633894", - "orderNumber": 378709791234 - }, - { - "globalTradeID": 419659967, - "tradeID": 19495921, - "date": "2019-06-11 04:14:24", - "type": "buy", - "rate": "0.01092001", - "amount": "0.00003551", - "total": "0.00000038", - "orderNumber": 378709500525 - }, - { - "globalTradeID": 419659939, - "tradeID": 19495920, - "date": "2019-06-11 04:12:52", - "type": "sell", - "rate": "0.01091700", - "amount": "0.05223877", - "total": "0.00057029", - "orderNumber": 378709035990 - }, - { - "globalTradeID": 419659917, - "tradeID": 19495919, - "date": "2019-06-11 04:11:42", - "type": "buy", - "rate": "0.01092001", - "amount": "0.11400000", - "total": "0.00124488", - "orderNumber": 378708709317 - }, - { - "globalTradeID": 419659887, - "tradeID": 19495918, - "date": "2019-06-11 04:10:11", - "type": "buy", - "rate": "0.01092641", - "amount": "0.59200000", - "total": "0.00646843", - "orderNumber": 378708191835 - }, - { - "globalTradeID": 419659868, - "tradeID": 19495917, - "date": "2019-06-11 04:09:36", - "type": "sell", - "rate": "0.01090201", - "amount": "8.04867515", - "total": "0.08774673", - "orderNumber": 378707979048 - }, - { - "globalTradeID": 419659867, - "tradeID": 19495916, - "date": "2019-06-11 04:09:36", - "type": "sell", - "rate": "0.01090202", - "amount": "0.11441976", - "total": "0.00124740", - "orderNumber": 378707979048 - }, - { - "globalTradeID": 419659866, - "tradeID": 19495915, - "date": "2019-06-11 04:09:36", - "type": "sell", - "rate": "0.01090310", - "amount": "2.31990509", - "total": "0.02529415", - "orderNumber": 378707979048 - }, - { - "globalTradeID": 419659865, - "tradeID": 19495914, - "date": "2019-06-11 04:09:36", - "type": "sell", - "rate": "0.01092004", - "amount": "0.01700000", - "total": "0.00018564", - "orderNumber": 378707979048 - }, - { - "globalTradeID": 419659807, - "tradeID": 19495913, - "date": "2019-06-11 04:07:31", - "type": "sell", - "rate": "0.01095075", - "amount": "0.01418870", - "total": "0.00015537", - "orderNumber": 378707249778 - }, - { - "globalTradeID": 419659769, - "tradeID": 19495912, - "date": "2019-06-11 04:05:05", - "type": "sell", - "rate": "0.01096500", - "amount": "0.04206385", - "total": "0.00046123", - "orderNumber": 378706749279 - }, - { - "globalTradeID": 419659591, - "tradeID": 19495911, - "date": "2019-06-11 04:00:04", - "type": "buy", - "rate": "0.01096866", - "amount": "0.00000182", - "total": "0.00000001", - "orderNumber": 378705401628 - }, - { - "globalTradeID": 419659509, - "tradeID": 19495910, - "date": "2019-06-11 03:58:27", - "type": "sell", - "rate": "0.01096500", - "amount": "0.00131691", - "total": "0.00001443", - "orderNumber": 378705024006 - }, - { - "globalTradeID": 419659489, - "tradeID": 19495909, - "date": "2019-06-11 03:56:54", - "type": "buy", - "rate": "0.01096874", - "amount": "0.00000503", - "total": "0.00000005", - "orderNumber": 378704656374 - }, - { - "globalTradeID": 419659483, - "tradeID": 19495908, - "date": "2019-06-11 03:56:52", - "type": "sell", - "rate": "0.01096500", - "amount": "0.00095029", - "total": "0.00001041", - "orderNumber": 378704634396 - }, - { - "globalTradeID": 419659466, - "tradeID": 19495907, - "date": "2019-06-11 03:55:53", - "type": "buy", - "rate": "0.01096886", - "amount": "0.77346138", - "total": "0.00848398", - "orderNumber": 378704373657 - }, - { - "globalTradeID": 419659465, - "tradeID": 19495906, - "date": "2019-06-11 03:55:53", - "type": "buy", - "rate": "0.01096885", - "amount": "0.13853132", - "total": "0.00151952", - "orderNumber": 378704373657 - }, - { - "globalTradeID": 419659451, - "tradeID": 19495905, - "date": "2019-06-11 03:55:18", - "type": "buy", - "rate": "0.01097328", - "amount": "0.00000182", - "total": "0.00000001", - "orderNumber": 378704154876 - }, - { - "globalTradeID": 419659388, - "tradeID": 19495904, - "date": "2019-06-11 03:53:35", - "type": "sell", - "rate": "0.01097102", - "amount": "0.00323397", - "total": "0.00003547", - "orderNumber": 378703612419 - }, - { - "globalTradeID": 419659387, - "tradeID": 19495903, - "date": "2019-06-11 03:53:35", - "type": "sell", - "rate": "0.01097102", - "amount": "0.01121592", - "total": "0.00012305", - "orderNumber": 378703612419 - }, - { - "globalTradeID": 419659361, - "tradeID": 19495902, - "date": "2019-06-11 03:51:59", - "type": "buy", - "rate": "0.01097329", - "amount": "0.00000551", - "total": "0.00000006", - "orderNumber": 378703243788 - }, - { - "globalTradeID": 419659311, - "tradeID": 19495901, - "date": "2019-06-11 03:50:22", - "type": "buy", - "rate": "0.01097337", - "amount": "0.00000302", - "total": "0.00000003", - "orderNumber": 378702896136 - }, - { - "globalTradeID": 419659308, - "tradeID": 19495900, - "date": "2019-06-11 03:50:19", - "type": "sell", - "rate": "0.01097102", - "amount": "0.00001640", - "total": "0.00000017", - "orderNumber": 378702885147 - }, - { - "globalTradeID": 419659273, - "tradeID": 19495899, - "date": "2019-06-11 03:49:39", - "type": "buy", - "rate": "0.01097341", - "amount": "0.02814583", - "total": "0.00030885", - "orderNumber": 378702765267 - }, - { - "globalTradeID": 419659247, - "tradeID": 19495898, - "date": "2019-06-11 03:48:46", - "type": "buy", - "rate": "0.01097347", - "amount": "0.00000202", - "total": "0.00000002", - "orderNumber": 378702529503 - }, - { - "globalTradeID": 419659206, - "tradeID": 19495897, - "date": "2019-06-11 03:47:11", - "type": "buy", - "rate": "0.01098449", - "amount": "0.00000903", - "total": "0.00000009", - "orderNumber": 378702105927 - }, - { - "globalTradeID": 419659201, - "tradeID": 19495896, - "date": "2019-06-11 03:47:06", - "type": "sell", - "rate": "0.01097123", - "amount": "0.00114936", - "total": "0.00001260", - "orderNumber": 378702095937 - }, - { - "globalTradeID": 419659162, - "tradeID": 19495895, - "date": "2019-06-11 03:45:33", - "type": "buy", - "rate": "0.01098220", - "amount": "0.00000607", - "total": "0.00000006", - "orderNumber": 378701612421 - }, - { - "globalTradeID": 419659121, - "tradeID": 19495894, - "date": "2019-06-11 03:43:57", - "type": "buy", - "rate": "0.01098466", - "amount": "0.00001116", - "total": "0.00000012", - "orderNumber": 378701091942 - }, - { - "globalTradeID": 419659098, - "tradeID": 19495893, - "date": "2019-06-11 03:42:20", - "type": "buy", - "rate": "0.01098497", - "amount": "0.00000381", - "total": "0.00000004", - "orderNumber": 378700626408 - }, - { - "globalTradeID": 419659053, - "tradeID": 19495892, - "date": "2019-06-11 03:39:06", - "type": "buy", - "rate": "0.01098849", - "amount": "0.00000521", - "total": "0.00000005", - "orderNumber": 378699644391 - }, - { - "globalTradeID": 419659027, - "tradeID": 19495891, - "date": "2019-06-11 03:37:49", - "type": "buy", - "rate": "0.01098390", - "amount": "1.56192145", - "total": "0.01715598", - "orderNumber": 378699299736 - }, - { - "globalTradeID": 419659020, - "tradeID": 19495890, - "date": "2019-06-11 03:37:30", - "type": "buy", - "rate": "0.01098390", - "amount": "0.00000203", - "total": "0.00000002", - "orderNumber": 378699228807 - }, - { - "globalTradeID": 419659010, - "tradeID": 19495889, - "date": "2019-06-11 03:37:09", - "type": "buy", - "rate": "0.01098499", - "amount": "1.82224405", - "total": "0.02001733", - "orderNumber": 378699142893 - }, - { - "globalTradeID": 419659009, - "tradeID": 19495888, - "date": "2019-06-11 03:37:09", - "type": "buy", - "rate": "0.01097301", - "amount": "0.63389687", - "total": "0.00695575", - "orderNumber": 378699142893 - }, - { - "globalTradeID": 419658982, - "tradeID": 19495887, - "date": "2019-06-11 03:35:52", - "type": "buy", - "rate": "0.01097301", - "amount": "0.00000313", - "total": "0.00000003", - "orderNumber": 378698852184 - }, - { - "globalTradeID": 419658951, - "tradeID": 19495886, - "date": "2019-06-11 03:34:14", - "type": "buy", - "rate": "0.01097401", - "amount": "0.00000343", - "total": "0.00000003", - "orderNumber": 378698676360 - }, - { - "globalTradeID": 419658906, - "tradeID": 19495885, - "date": "2019-06-11 03:32:36", - "type": "buy", - "rate": "0.01098544", - "amount": "0.00003856", - "total": "0.00000042", - "orderNumber": 378698162874 - }, - { - "globalTradeID": 419658856, - "tradeID": 19495884, - "date": "2019-06-11 03:30:54", - "type": "buy", - "rate": "0.01100470", - "amount": "0.00000822", - "total": "0.00000009", - "orderNumber": 378697679358 - }, - { - "globalTradeID": 419658782, - "tradeID": 19495883, - "date": "2019-06-11 03:27:44", - "type": "buy", - "rate": "0.01099742", - "amount": "0.00005336", - "total": "0.00000058", - "orderNumber": 378696543495 - }, - { - "globalTradeID": 419658690, - "tradeID": 19495882, - "date": "2019-06-11 03:25:32", - "type": "buy", - "rate": "0.01099155", - "amount": "1.59326119", - "total": "0.01751241", - "orderNumber": 378696202836 - }, - { - "globalTradeID": 419658624, - "tradeID": 19495881, - "date": "2019-06-11 03:22:57", - "type": "buy", - "rate": "0.01100279", - "amount": "0.00000776", - "total": "0.00000008", - "orderNumber": 378695513526 - }, - { - "globalTradeID": 419658597, - "tradeID": 19495880, - "date": "2019-06-11 03:21:18", - "type": "sell", - "rate": "0.01099501", - "amount": "0.00181536", - "total": "0.00001995", - "orderNumber": 378694987053 - }, - { - "globalTradeID": 419658524, - "tradeID": 19495879, - "date": "2019-06-11 03:18:10", - "type": "buy", - "rate": "0.01102096", - "amount": "0.00000823", - "total": "0.00000009", - "orderNumber": 378694251789 - }, - { - "globalTradeID": 419658405, - "tradeID": 19495878, - "date": "2019-06-11 03:16:43", - "type": "sell", - "rate": "0.01100509", - "amount": "0.04754874", - "total": "0.00052327", - "orderNumber": 378693959082 - }, - { - "globalTradeID": 419658370, - "tradeID": 19495877, - "date": "2019-06-11 03:15:56", - "type": "sell", - "rate": "0.01099326", - "amount": "0.63690866", - "total": "0.00700170", - "orderNumber": 378693752289 - }, - { - "globalTradeID": 419658369, - "tradeID": 19495876, - "date": "2019-06-11 03:15:56", - "type": "sell", - "rate": "0.01099501", - "amount": "0.11409631", - "total": "0.00125449", - "orderNumber": 378693752289 - }, - { - "globalTradeID": 419658368, - "tradeID": 19495875, - "date": "2019-06-11 03:15:56", - "type": "sell", - "rate": "0.01099826", - "amount": "0.01688839", - "total": "0.00018574", - "orderNumber": 378693752289 - }, - { - "globalTradeID": 419658367, - "tradeID": 19495874, - "date": "2019-06-11 03:15:56", - "type": "sell", - "rate": "0.01102244", - "amount": "0.15215954", - "total": "0.00167716", - "orderNumber": 378693752289 - }, - { - "globalTradeID": 419658294, - "tradeID": 19495873, - "date": "2019-06-11 03:15:10", - "type": "buy", - "rate": "0.01102244", - "amount": "0.21255099", - "total": "0.00234283", - "orderNumber": 378693585456 - }, - { - "globalTradeID": 419658268, - "tradeID": 19495872, - "date": "2019-06-11 03:14:56", - "type": "sell", - "rate": "0.01101010", - "amount": "0.00019436", - "total": "0.00000213", - "orderNumber": 378693515526 - }, - { - "globalTradeID": 419658029, - "tradeID": 19495871, - "date": "2019-06-11 03:08:32", - "type": "sell", - "rate": "0.01100114", - "amount": "0.00000181", - "total": "0.00000001", - "orderNumber": 378691456587 - }, - { - "globalTradeID": 419658023, - "tradeID": 19495870, - "date": "2019-06-11 03:08:29", - "type": "sell", - "rate": "0.01100112", - "amount": "0.00101626", - "total": "0.00001117", - "orderNumber": 378691443600 - }, - { - "globalTradeID": 419658017, - "tradeID": 19495869, - "date": "2019-06-11 03:08:23", - "type": "sell", - "rate": "0.01100110", - "amount": "0.00026088", - "total": "0.00000286", - "orderNumber": 378691431612 - }, - { - "globalTradeID": 419657999, - "tradeID": 19495868, - "date": "2019-06-11 03:06:50", - "type": "sell", - "rate": "0.01100023", - "amount": "0.00016545", - "total": "0.00000181", - "orderNumber": 378691103940 - }, - { - "globalTradeID": 419657996, - "tradeID": 19495867, - "date": "2019-06-11 03:06:49", - "type": "sell", - "rate": "0.01100023", - "amount": "0.00023999", - "total": "0.00000263", - "orderNumber": 378691102941 - }, - { - "globalTradeID": 419657740, - "tradeID": 19495866, - "date": "2019-06-11 02:58:48", - "type": "sell", - "rate": "0.01099843", - "amount": "0.00011456", - "total": "0.00000125", - "orderNumber": 378689243802 - }, - { - "globalTradeID": 419657701, - "tradeID": 19495865, - "date": "2019-06-11 02:56:40", - "type": "buy", - "rate": "0.01101556", - "amount": "0.03917163", - "total": "0.00043149", - "orderNumber": 378688729317 - }, - { - "globalTradeID": 419657601, - "tradeID": 19495864, - "date": "2019-06-11 02:53:35", - "type": "sell", - "rate": "0.01101519", - "amount": "0.13679308", - "total": "0.00150680", - "orderNumber": 378687637410 - }, - { - "globalTradeID": 419657476, - "tradeID": 19495863, - "date": "2019-06-11 02:50:54", - "type": "sell", - "rate": "0.01101013", - "amount": "0.01058570", - "total": "0.00011654", - "orderNumber": 378686860188 - }, - { - "globalTradeID": 419657453, - "tradeID": 19495862, - "date": "2019-06-11 02:50:18", - "type": "buy", - "rate": "0.01101828", - "amount": "0.04280000", - "total": "0.00047158", - "orderNumber": 378686618430 - }, - { - "globalTradeID": 419657452, - "tradeID": 19495861, - "date": "2019-06-11 02:50:18", - "type": "buy", - "rate": "0.01101780", - "amount": "0.01398753", - "total": "0.00015411", - "orderNumber": 378686618430 - }, - { - "globalTradeID": 419657451, - "tradeID": 19495860, - "date": "2019-06-11 02:50:18", - "type": "buy", - "rate": "0.01101629", - "amount": "2.39150539", - "total": "0.02634551", - "orderNumber": 378686618430 - }, - { - "globalTradeID": 419657450, - "tradeID": 19495859, - "date": "2019-06-11 02:50:18", - "type": "buy", - "rate": "0.01101230", - "amount": "0.01340400", - "total": "0.00014760", - "orderNumber": 378686618430 - }, - { - "globalTradeID": 419657449, - "tradeID": 19495858, - "date": "2019-06-11 02:50:18", - "type": "buy", - "rate": "0.01100868", - "amount": "0.16756661", - "total": "0.00184468", - "orderNumber": 378686618430 - }, - { - "globalTradeID": 419657448, - "tradeID": 19495857, - "date": "2019-06-11 02:50:18", - "type": "buy", - "rate": "0.01100810", - "amount": "0.01390076", - "total": "0.00015302", - "orderNumber": 378686618430 - }, - { - "globalTradeID": 419657447, - "tradeID": 19495856, - "date": "2019-06-11 02:50:18", - "type": "buy", - "rate": "0.01100551", - "amount": "0.01411744", - "total": "0.00015536", - "orderNumber": 378686618430 - }, - { - "globalTradeID": 419657445, - "tradeID": 19495855, - "date": "2019-06-11 02:50:18", - "type": "buy", - "rate": "0.01100543", - "amount": "0.04273596", - "total": "0.00047032", - "orderNumber": 378686615433 - }, - { - "globalTradeID": 419657298, - "tradeID": 19495854, - "date": "2019-06-11 02:45:31", - "type": "buy", - "rate": "0.01100142", - "amount": "0.01515621", - "total": "0.00016673", - "orderNumber": 378685060989 - }, - { - "globalTradeID": 419657290, - "tradeID": 19495853, - "date": "2019-06-11 02:44:56", - "type": "buy", - "rate": "0.01100060", - "amount": "0.01395757", - "total": "0.00015354", - "orderNumber": 378684828222 - }, - { - "globalTradeID": 419657119, - "tradeID": 19495852, - "date": "2019-06-11 02:39:35", - "type": "sell", - "rate": "0.01099521", - "amount": "0.07110823", - "total": "0.00078184", - "orderNumber": 378683079972 - }, - { - "globalTradeID": 419657062, - "tradeID": 19495851, - "date": "2019-06-11 02:38:00", - "type": "sell", - "rate": "0.01098911", - "amount": "0.00017289", - "total": "0.00000189", - "orderNumber": 378682556496 - }, - { - "globalTradeID": 419657049, - "tradeID": 19495850, - "date": "2019-06-11 02:37:35", - "type": "buy", - "rate": "0.01100000", - "amount": "0.28712708", - "total": "0.00315839", - "orderNumber": 378682396656 - }, - { - "globalTradeID": 419657048, - "tradeID": 19495849, - "date": "2019-06-11 02:37:35", - "type": "buy", - "rate": "0.01100000", - "amount": "11.98089159", - "total": "0.13178980", - "orderNumber": 378682396656 - }, - { - "globalTradeID": 419657047, - "tradeID": 19495848, - "date": "2019-06-11 02:37:35", - "type": "buy", - "rate": "0.01100000", - "amount": "20.28670000", - "total": "0.22315370", - "orderNumber": 378682391661 - }, - { - "globalTradeID": 419657037, - "tradeID": 19495847, - "date": "2019-06-11 02:37:23", - "type": "buy", - "rate": "0.01100000", - "amount": "19.58857431", - "total": "0.21547431", - "orderNumber": 378682329723 - }, - { - "globalTradeID": 419657036, - "tradeID": 19495846, - "date": "2019-06-11 02:37:23", - "type": "buy", - "rate": "0.01100000", - "amount": "0.10000400", - "total": "0.00110004", - "orderNumber": 378682329723 - }, - { - "globalTradeID": 419657035, - "tradeID": 19495845, - "date": "2019-06-11 02:37:23", - "type": "buy", - "rate": "0.01099996", - "amount": "0.10000000", - "total": "0.00109999", - "orderNumber": 378682329723 - }, - { - "globalTradeID": 419657034, - "tradeID": 19495844, - "date": "2019-06-11 02:37:23", - "type": "buy", - "rate": "0.01099969", - "amount": "0.09091165", - "total": "0.00099999", - "orderNumber": 378682329723 - }, - { - "globalTradeID": 419657033, - "tradeID": 19495843, - "date": "2019-06-11 02:37:23", - "type": "buy", - "rate": "0.01099922", - "amount": "2.39651004", - "total": "0.02635974", - "orderNumber": 378682329723 - }, - { - "globalTradeID": 419657007, - "tradeID": 19495842, - "date": "2019-06-11 02:37:02", - "type": "buy", - "rate": "0.01099588", - "amount": "1.02574734", - "total": "0.01127899", - "orderNumber": 378682212840 - }, - { - "globalTradeID": 419656977, - "tradeID": 19495841, - "date": "2019-06-11 02:36:41", - "type": "buy", - "rate": "0.01099588", - "amount": "0.27600000", - "total": "0.00303486", - "orderNumber": 378682057995 - }, - { - "globalTradeID": 419656960, - "tradeID": 19495840, - "date": "2019-06-11 02:36:09", - "type": "buy", - "rate": "0.01098950", - "amount": "2.76229338", - "total": "0.03035622", - "orderNumber": 378681860193 - }, - { - "globalTradeID": 419656926, - "tradeID": 19495839, - "date": "2019-06-11 02:34:47", - "type": "sell", - "rate": "0.01097903", - "amount": "0.00085253", - "total": "0.00000935", - "orderNumber": 378681331722 - }, - { - "globalTradeID": 419656922, - "tradeID": 19495838, - "date": "2019-06-11 02:34:44", - "type": "sell", - "rate": "0.01097902", - "amount": "0.00263502", - "total": "0.00002892", - "orderNumber": 378681311742 - }, - { - "globalTradeID": 419656903, - "tradeID": 19495837, - "date": "2019-06-11 02:33:09", - "type": "sell", - "rate": "0.01097738", - "amount": "0.00072603", - "total": "0.00000796", - "orderNumber": 378680730324 - }, - { - "globalTradeID": 419656875, - "tradeID": 19495836, - "date": "2019-06-11 02:31:53", - "type": "buy", - "rate": "0.01098999", - "amount": "3.81362404", - "total": "0.04191169", - "orderNumber": 378680249805 - }, - { - "globalTradeID": 419656867, - "tradeID": 19495835, - "date": "2019-06-11 02:31:36", - "type": "sell", - "rate": "0.01099140", - "amount": "3.51884830", - "total": "0.03867706", - "orderNumber": 378680109945 - }, - { - "globalTradeID": 419656866, - "tradeID": 19495834, - "date": "2019-06-11 02:31:32", - "type": "buy", - "rate": "0.01099141", - "amount": "0.00000181", - "total": "0.00000001", - "orderNumber": 378680107947 - }, - { - "globalTradeID": 419656858, - "tradeID": 19495833, - "date": "2019-06-11 02:31:13", - "type": "sell", - "rate": "0.01099140", - "amount": "1.19047895", - "total": "0.01308503", - "orderNumber": 378680036019 - }, - { - "globalTradeID": 419656857, - "tradeID": 19495832, - "date": "2019-06-11 02:31:11", - "type": "sell", - "rate": "0.01099140", - "amount": "0.09067275", - "total": "0.00099662", - "orderNumber": 378680020035 - }, - { - "globalTradeID": 419656847, - "tradeID": 19495831, - "date": "2019-06-11 02:30:30", - "type": "buy", - "rate": "0.01099140", - "amount": "0.20000000", - "total": "0.00219828", - "orderNumber": 378679878177 - }, - { - "globalTradeID": 419656831, - "tradeID": 19495830, - "date": "2019-06-11 02:29:54", - "type": "sell", - "rate": "0.01098366", - "amount": "0.00028223", - "total": "0.00000309", - "orderNumber": 378679691364 - }, - { - "globalTradeID": 419656743, - "tradeID": 19495829, - "date": "2019-06-11 02:26:56", - "type": "buy", - "rate": "0.01099141", - "amount": "14.18000000", - "total": "0.15585819", - "orderNumber": 378678498558 - }, - { - "globalTradeID": 419656741, - "tradeID": 19495828, - "date": "2019-06-11 02:26:55", - "type": "buy", - "rate": "0.01099141", - "amount": "6.67800000", - "total": "0.07340063", - "orderNumber": 378678496560 - }, - { - "globalTradeID": 419656738, - "tradeID": 19495827, - "date": "2019-06-11 02:26:55", - "type": "buy", - "rate": "0.01099141", - "amount": "9.80754099", - "total": "0.10779870", - "orderNumber": 378678492564 - }, - { - "globalTradeID": 419656737, - "tradeID": 19495826, - "date": "2019-06-11 02:26:55", - "type": "buy", - "rate": "0.01099100", - "amount": "0.10000000", - "total": "0.00109910", - "orderNumber": 378678492564 - }, - { - "globalTradeID": 419656736, - "tradeID": 19495825, - "date": "2019-06-11 02:26:55", - "type": "buy", - "rate": "0.01099100", - "amount": "0.58045901", - "total": "0.00637982", - "orderNumber": 378678492564 - }, - { - "globalTradeID": 419656692, - "tradeID": 19495824, - "date": "2019-06-11 02:25:28", - "type": "buy", - "rate": "0.01099141", - "amount": "0.97118176", - "total": "0.01067465", - "orderNumber": 378677876181 - }, - { - "globalTradeID": 419656686, - "tradeID": 19495823, - "date": "2019-06-11 02:25:22", - "type": "buy", - "rate": "0.01099141", - "amount": "1.21323848", - "total": "0.01333520", - "orderNumber": 378677830227 - }, - { - "globalTradeID": 419656674, - "tradeID": 19495822, - "date": "2019-06-11 02:25:10", - "type": "buy", - "rate": "0.01099141", - "amount": "0.61200000", - "total": "0.00672674", - "orderNumber": 378677745312 - }, - { - "globalTradeID": 419656673, - "tradeID": 19495821, - "date": "2019-06-11 02:25:10", - "type": "buy", - "rate": "0.01099141", - "amount": "4.42298415", - "total": "0.04861483", - "orderNumber": 378677743314 - }, - { - "globalTradeID": 419656672, - "tradeID": 19495820, - "date": "2019-06-11 02:25:10", - "type": "buy", - "rate": "0.01099140", - "amount": "0.32001585", - "total": "0.00351742", - "orderNumber": 378677743314 - }, - { - "globalTradeID": 419656622, - "tradeID": 19495819, - "date": "2019-06-11 02:23:58", - "type": "buy", - "rate": "0.01099139", - "amount": "0.09194560", - "total": "0.00101060", - "orderNumber": 378677170887 - }, - { - "globalTradeID": 419656536, - "tradeID": 19495818, - "date": "2019-06-11 02:22:33", - "type": "buy", - "rate": "0.01098805", - "amount": "0.89333991", - "total": "0.00981606", - "orderNumber": 378676565493 - }, - { - "globalTradeID": 419656535, - "tradeID": 19495817, - "date": "2019-06-11 02:22:33", - "type": "buy", - "rate": "0.01098804", - "amount": "3.46666009", - "total": "0.03809179", - "orderNumber": 378676565493 - }, - { - "globalTradeID": 419656510, - "tradeID": 19495816, - "date": "2019-06-11 02:21:53", - "type": "buy", - "rate": "0.01098616", - "amount": "2.83098726", - "total": "0.03110167", - "orderNumber": 378676284774 - }, - { - "globalTradeID": 419656509, - "tradeID": 19495815, - "date": "2019-06-11 02:21:53", - "type": "buy", - "rate": "0.01098615", - "amount": "9.88401274", - "total": "0.10858724", - "orderNumber": 378676284774 - }, - { - "globalTradeID": 419656507, - "tradeID": 19495814, - "date": "2019-06-11 02:21:52", - "type": "buy", - "rate": "0.01098615", - "amount": "2.51900000", - "total": "0.02767411", - "orderNumber": 378676279779 - }, - { - "globalTradeID": 419656505, - "tradeID": 19495813, - "date": "2019-06-11 02:21:52", - "type": "buy", - "rate": "0.01098615", - "amount": "6.19100000", - "total": "0.06801525", - "orderNumber": 378676271787 - }, - { - "globalTradeID": 419656504, - "tradeID": 19495812, - "date": "2019-06-11 02:21:52", - "type": "buy", - "rate": "0.01098615", - "amount": "1.80100000", - "total": "0.01978605", - "orderNumber": 378676269789 - }, - { - "globalTradeID": 419656503, - "tradeID": 19495811, - "date": "2019-06-11 02:21:52", - "type": "buy", - "rate": "0.01098615", - "amount": "10.26000000", - "total": "0.11271789", - "orderNumber": 378676268790 - }, - { - "globalTradeID": 419656502, - "tradeID": 19495810, - "date": "2019-06-11 02:21:51", - "type": "buy", - "rate": "0.01098615", - "amount": "1.98492975", - "total": "0.02180673", - "orderNumber": 378676266792 - }, - { - "globalTradeID": 419656501, - "tradeID": 19495809, - "date": "2019-06-11 02:21:51", - "type": "buy", - "rate": "0.01098614", - "amount": "0.22807025", - "total": "0.00250561", - "orderNumber": 378676266792 - }, - { - "globalTradeID": 419656499, - "tradeID": 19495808, - "date": "2019-06-11 02:21:51", - "type": "buy", - "rate": "0.01098615", - "amount": "8.26400000", - "total": "0.09078954", - "orderNumber": 378676262796 - }, - { - "globalTradeID": 419656496, - "tradeID": 19495807, - "date": "2019-06-11 02:21:51", - "type": "buy", - "rate": "0.01098615", - "amount": "3.63000000", - "total": "0.03987972", - "orderNumber": 378676261797 - }, - { - "globalTradeID": 419656491, - "tradeID": 19495806, - "date": "2019-06-11 02:21:46", - "type": "buy", - "rate": "0.01098615", - "amount": "5.82605751", - "total": "0.06400594", - "orderNumber": 378676256802 - }, - { - "globalTradeID": 419656488, - "tradeID": 19495805, - "date": "2019-06-11 02:21:46", - "type": "buy", - "rate": "0.01098616", - "amount": "5.82459583", - "total": "0.06398994", - "orderNumber": 378676251807 - }, - { - "globalTradeID": 419656478, - "tradeID": 19495804, - "date": "2019-06-11 02:21:46", - "type": "buy", - "rate": "0.01098617", - "amount": "5.82323047", - "total": "0.06397499", - "orderNumber": 378676247811 - }, - { - "globalTradeID": 419656401, - "tradeID": 19495803, - "date": "2019-06-11 02:17:12", - "type": "sell", - "rate": "0.01097003", - "amount": "0.00011303", - "total": "0.00000123", - "orderNumber": 378674915145 - }, - { - "globalTradeID": 419656344, - "tradeID": 19495802, - "date": "2019-06-11 02:15:35", - "type": "sell", - "rate": "0.01096700", - "amount": "0.00622868", - "total": "0.00006830", - "orderNumber": 378674362698 - }, - { - "globalTradeID": 419656335, - "tradeID": 19495801, - "date": "2019-06-11 02:14:58", - "type": "sell", - "rate": "0.01096644", - "amount": "6.44556753", - "total": "0.07068492", - "orderNumber": 378674125935 - }, - { - "globalTradeID": 419656229, - "tradeID": 19495800, - "date": "2019-06-11 02:13:59", - "type": "sell", - "rate": "0.01097611", - "amount": "0.00881642", - "total": "0.00009676", - "orderNumber": 378673796265 - }, - { - "globalTradeID": 419656134, - "tradeID": 19495799, - "date": "2019-06-11 02:11:11", - "type": "sell", - "rate": "0.01097600", - "amount": "4.34874974", - "total": "0.04773187", - "orderNumber": 378672998064 - }, - { - "globalTradeID": 419656133, - "tradeID": 19495798, - "date": "2019-06-11 02:11:11", - "type": "sell", - "rate": "0.01097601", - "amount": "0.12865121", - "total": "0.00141207", - "orderNumber": 378672998064 - }, - { - "globalTradeID": 419656132, - "tradeID": 19495797, - "date": "2019-06-11 02:11:11", - "type": "sell", - "rate": "0.01097601", - "amount": "1.32690213", - "total": "0.01456409", - "orderNumber": 378672998064 - }, - { - "globalTradeID": 419656131, - "tradeID": 19495796, - "date": "2019-06-11 02:11:11", - "type": "sell", - "rate": "0.01097632", - "amount": "4.08748000", - "total": "0.04486548", - "orderNumber": 378672998064 - }, - { - "globalTradeID": 419656071, - "tradeID": 19495795, - "date": "2019-06-11 02:10:51", - "type": "sell", - "rate": "0.01097629", - "amount": "0.00268670", - "total": "0.00002948", - "orderNumber": 378672914148 - }, - { - "globalTradeID": 419656068, - "tradeID": 19495794, - "date": "2019-06-11 02:10:50", - "type": "sell", - "rate": "0.01097629", - "amount": "0.00828786", - "total": "0.00009096", - "orderNumber": 378672908154 - }, - { - "globalTradeID": 419655987, - "tradeID": 19495793, - "date": "2019-06-11 02:09:13", - "type": "sell", - "rate": "0.01097625", - "amount": "0.00062589", - "total": "0.00000686", - "orderNumber": 378672486576 - }, - { - "globalTradeID": 419655936, - "tradeID": 19495792, - "date": "2019-06-11 02:07:30", - "type": "buy", - "rate": "0.01099588", - "amount": "0.08730618", - "total": "0.00096000", - "orderNumber": 378671928135 - }, - { - "globalTradeID": 419655935, - "tradeID": 19495791, - "date": "2019-06-11 02:07:27", - "type": "buy", - "rate": "0.01099590", - "amount": "2.94600000", - "total": "0.03239392", - "orderNumber": 378671914149 - }, - { - "globalTradeID": 419655932, - "tradeID": 19495790, - "date": "2019-06-11 02:07:23", - "type": "buy", - "rate": "0.01099590", - "amount": "18.99819158", - "total": "0.20890221", - "orderNumber": 378671909154 - }, - { - "globalTradeID": 419655931, - "tradeID": 19495789, - "date": "2019-06-11 02:07:23", - "type": "buy", - "rate": "0.01098289", - "amount": "8.49186817", - "total": "0.09326525", - "orderNumber": 378671909154 - }, - { - "globalTradeID": 419655930, - "tradeID": 19495788, - "date": "2019-06-11 02:07:23", - "type": "buy", - "rate": "0.01098289", - "amount": "0.92516246", - "total": "0.01016095", - "orderNumber": 378671909154 - }, - { - "globalTradeID": 419655888, - "tradeID": 19495787, - "date": "2019-06-11 02:05:51", - "type": "buy", - "rate": "0.01098982", - "amount": "40.55104177", - "total": "0.44564864", - "orderNumber": 378671584479 - }, - { - "globalTradeID": 419655839, - "tradeID": 19495786, - "date": "2019-06-11 02:04:30", - "type": "sell", - "rate": "0.01097601", - "amount": "0.00059948", - "total": "0.00000657", - "orderNumber": 378671231832 - }, - { - "globalTradeID": 419655835, - "tradeID": 19495785, - "date": "2019-06-11 02:04:29", - "type": "sell", - "rate": "0.01097601", - "amount": "0.00230684", - "total": "0.00002531", - "orderNumber": 378671224839 - }, - { - "globalTradeID": 419655760, - "tradeID": 19495784, - "date": "2019-06-11 02:02:52", - "type": "sell", - "rate": "0.01097624", - "amount": "0.00004919", - "total": "0.00000053", - "orderNumber": 378670836228 - }, - { - "globalTradeID": 419655755, - "tradeID": 19495783, - "date": "2019-06-11 02:02:50", - "type": "sell", - "rate": "0.01097624", - "amount": "0.00080537", - "total": "0.00000883", - "orderNumber": 378670822242 - }, - { - "globalTradeID": 419655714, - "tradeID": 19495782, - "date": "2019-06-11 02:01:24", - "type": "sell", - "rate": "0.01097609", - "amount": "0.14937440", - "total": "0.00163954", - "orderNumber": 378670531533 - }, - { - "globalTradeID": 419655711, - "tradeID": 19495781, - "date": "2019-06-11 02:01:18", - "type": "sell", - "rate": "0.01097610", - "amount": "0.11135441", - "total": "0.00122223", - "orderNumber": 378670504560 - }, - { - "globalTradeID": 419655698, - "tradeID": 19495780, - "date": "2019-06-11 02:01:12", - "type": "sell", - "rate": "0.01097610", - "amount": "0.00214374", - "total": "0.00002352", - "orderNumber": 378670483581 - }, - { - "globalTradeID": 419655693, - "tradeID": 19495779, - "date": "2019-06-11 02:01:11", - "type": "sell", - "rate": "0.01097610", - "amount": "0.00071883", - "total": "0.00000788", - "orderNumber": 378670480584 - }, - { - "globalTradeID": 419655690, - "tradeID": 19495778, - "date": "2019-06-11 02:01:10", - "type": "buy", - "rate": "0.01098999", - "amount": "0.09090000", - "total": "0.00099899", - "orderNumber": 378670475589 - }, - { - "globalTradeID": 419655677, - "tradeID": 19495777, - "date": "2019-06-11 02:00:41", - "type": "buy", - "rate": "0.01098998", - "amount": "0.10000000", - "total": "0.00109899", - "orderNumber": 378670377687 - }, - { - "globalTradeID": 419655660, - "tradeID": 19495776, - "date": "2019-06-11 01:59:51", - "type": "buy", - "rate": "0.01098999", - "amount": "22.47015128", - "total": "0.24694673", - "orderNumber": 378670228836 - }, - { - "globalTradeID": 419655659, - "tradeID": 19495775, - "date": "2019-06-11 01:59:51", - "type": "buy", - "rate": "0.01098642", - "amount": "0.15373084", - "total": "0.00168895", - "orderNumber": 378670228836 - }, - { - "globalTradeID": 419655658, - "tradeID": 19495774, - "date": "2019-06-11 01:59:51", - "type": "buy", - "rate": "0.01098400", - "amount": "0.00928634", - "total": "0.00010200", - "orderNumber": 378670228836 - }, - { - "globalTradeID": 419655657, - "tradeID": 19495773, - "date": "2019-06-11 01:59:51", - "type": "buy", - "rate": "0.01098025", - "amount": "0.05936375", - "total": "0.00065182", - "orderNumber": 378670228836 - }, - { - "globalTradeID": 419655656, - "tradeID": 19495772, - "date": "2019-06-11 01:59:51", - "type": "buy", - "rate": "0.01098000", - "amount": "0.02000000", - "total": "0.00021960", - "orderNumber": 378670228836 - }, - { - "globalTradeID": 419655655, - "tradeID": 19495771, - "date": "2019-06-11 01:59:51", - "type": "buy", - "rate": "0.01098000", - "amount": "0.00981951", - "total": "0.00010781", - "orderNumber": 378670228836 - }, - { - "globalTradeID": 419655652, - "tradeID": 19495770, - "date": "2019-06-11 01:59:51", - "type": "sell", - "rate": "0.01097603", - "amount": "0.00912443", - "total": "0.00010015", - "orderNumber": 378670225839 - }, - { - "globalTradeID": 419655640, - "tradeID": 19495769, - "date": "2019-06-11 01:59:35", - "type": "sell", - "rate": "0.01097606", - "amount": "0.00028061", - "total": "0.00000307", - "orderNumber": 378670189875 - }, - { - "globalTradeID": 419655633, - "tradeID": 19495768, - "date": "2019-06-11 01:59:23", - "type": "buy", - "rate": "0.01098000", - "amount": "1.29702296", - "total": "0.01424131", - "orderNumber": 378670155909 - }, - { - "globalTradeID": 419655630, - "tradeID": 19495767, - "date": "2019-06-11 01:59:05", - "type": "buy", - "rate": "0.01098000", - "amount": "1.18408220", - "total": "0.01300122", - "orderNumber": 378670101963 - }, - { - "globalTradeID": 419655590, - "tradeID": 19495766, - "date": "2019-06-11 01:58:00", - "type": "sell", - "rate": "0.01097603", - "amount": "0.02045548", - "total": "0.00022451", - "orderNumber": 378669894171 - }, - { - "globalTradeID": 419655589, - "tradeID": 19495765, - "date": "2019-06-11 01:58:00", - "type": "sell", - "rate": "0.01097605", - "amount": "0.01740344", - "total": "0.00019102", - "orderNumber": 378669894171 - }, - { - "globalTradeID": 419655588, - "tradeID": 19495764, - "date": "2019-06-11 01:58:00", - "type": "sell", - "rate": "0.01097605", - "amount": "0.00259656", - "total": "0.00002849", - "orderNumber": 378669890175 - }, - { - "globalTradeID": 419655571, - "tradeID": 19495763, - "date": "2019-06-11 01:57:42", - "type": "sell", - "rate": "0.01097605", - "amount": "2.29560855", - "total": "0.02519671", - "orderNumber": 378669825240 - }, - { - "globalTradeID": 419655547, - "tradeID": 19495762, - "date": "2019-06-11 01:57:06", - "type": "buy", - "rate": "0.01098000", - "amount": "8.67379891", - "total": "0.09523831", - "orderNumber": 378669717348 - }, - { - "globalTradeID": 419655520, - "tradeID": 19495761, - "date": "2019-06-11 01:56:19", - "type": "sell", - "rate": "0.01097606", - "amount": "0.00017674", - "total": "0.00000193", - "orderNumber": 378669567498 - }, - { - "globalTradeID": 419655454, - "tradeID": 19495760, - "date": "2019-06-11 01:53:01", - "type": "sell", - "rate": "0.01097600", - "amount": "0.00047831", - "total": "0.00000524", - "orderNumber": 378668865201 - }, - { - "globalTradeID": 419655453, - "tradeID": 19495759, - "date": "2019-06-11 01:52:57", - "type": "sell", - "rate": "0.01097600", - "amount": "0.00133017", - "total": "0.00001459", - "orderNumber": 378668862204 - }, - { - "globalTradeID": 419655381, - "tradeID": 19495758, - "date": "2019-06-11 01:50:44", - "type": "sell", - "rate": "0.01097600", - "amount": "0.01109161", - "total": "0.00012174", - "orderNumber": 378668335731 - }, - { - "globalTradeID": 419655380, - "tradeID": 19495757, - "date": "2019-06-11 01:50:41", - "type": "buy", - "rate": "0.01098000", - "amount": "0.01028779", - "total": "0.00011295", - "orderNumber": 378668318748 - }, - { - "globalTradeID": 419655343, - "tradeID": 19495756, - "date": "2019-06-11 01:49:39", - "type": "sell", - "rate": "0.01097613", - "amount": "0.00912435", - "total": "0.00010015", - "orderNumber": 378668097969 - }, - { - "globalTradeID": 419655339, - "tradeID": 19495755, - "date": "2019-06-11 01:49:38", - "type": "buy", - "rate": "0.01098000", - "amount": "17.58144635", - "total": "0.19304428", - "orderNumber": 378668091975 - }, - { - "globalTradeID": 419655307, - "tradeID": 19495754, - "date": "2019-06-11 01:48:21", - "type": "sell", - "rate": "0.01097631", - "amount": "0.06014124", - "total": "0.00066012", - "orderNumber": 378667813254 - }, - { - "globalTradeID": 419655303, - "tradeID": 19495753, - "date": "2019-06-11 01:48:15", - "type": "sell", - "rate": "0.01097631", - "amount": "0.00205442", - "total": "0.00002254", - "orderNumber": 378667800267 - } - ], - "queryString": "command=returnTradeHistory\u0026currencyPair=BTC_XMR", - "bodyParams": "\u003cnil\u003e", - "headers": { - "Key": [ - "" - ] - } + "bodyParams": "", + "headers": {} }, { "data": { @@ -6780,1912 +8801,8 @@ "seq": 445571843 }, "queryString": "command=returnOrderBook\u0026currencyPair=BTC_XMR\u0026depth=50", - "bodyParams": "\u003cnil\u003e", - "headers": { - "Key": [ - "" - ] - } - }, - { - "data": { - "BTC_BCN": { - "BTC": "2.10597417", - "BCN": "18580513.78451419" - }, - "BTC_BTS": { - "BTC": "11.31814868", - "BTS": "1422525.76536768" - }, - "BTC_CLAM": { - "BTC": "2.91928382", - "CLAM": "5008.88307610" - }, - "BTC_DASH": { - "BTC": "121.56922496", - "DASH": "6476.07273599" - }, - "BTC_DGB": { - "BTC": "16.15966014", - "DGB": "9761759.50030071" - }, - "BTC_DOGE": { - "BTC": "19.98598120", - "DOGE": "52317925.99866673" - }, - "BTC_GAME": { - "BTC": "3.82370347", - "GAME": "300446.22176630" - }, - "BTC_LTC": { - "BTC": "666.94447027", - "LTC": "42339.40507638" - }, - "BTC_MAID": { - "BTC": "2.56267002", - "MAID": "107646.79242367" - }, - "BTC_OMNI": { - "BTC": "0.20882002", - "OMNI": "732.64551893" - }, - "BTC_NAV": { - "BTC": "0.85599154", - "NAV": "30239.29066641" - }, - "BTC_NXT": { - "BTC": "1.64399713", - "NXT": "360674.76672284" - }, - "BTC_STR": { - "BTC": "29.15587511", - "STR": "1887833.72135812" - }, - "BTC_VIA": { - "BTC": "6.00937608", - "VIA": "82838.51366051" - }, - "BTC_VTC": { - "BTC": "8.10964192", - "VTC": "118741.18466855" - }, - "BTC_XEM": { - "BTC": "11.47584618", - "XEM": "1080591.66263058" - }, - "BTC_XMR": { - "BTC": "42.01213244", - "XMR": "3857.26226555" - }, - "BTC_XPM": { - "BTC": "0.71263628", - "XPM": "24729.03795341" - }, - "BTC_XRP": { - "BTC": "201.36631863", - "XRP": "4023790.64131056" - }, - "USDT_BTC": { - "USDT": "4421897.17330826", - "BTC": "561.77921782" - }, - "USDT_DASH": { - "USDT": "163148.07688044", - "DASH": "1097.22131727" - }, - "USDT_LTC": { - "USDT": "1316866.42418109", - "LTC": "10573.16167640" - }, - "USDT_NXT": { - "USDT": "10352.62135341", - "NXT": "287419.90703917" - }, - "USDT_STR": { - "USDT": "119159.96377689", - "STR": "975973.89241271" - }, - "USDT_XMR": { - "USDT": "44311.82773756", - "XMR": "513.51239329" - }, - "USDT_XRP": { - "USDT": "628653.50566678", - "XRP": "1590094.01666263" - }, - "XMR_BCN": { - "XMR": "0.16285090", - "BCN": "15121.34000573" - }, - "XMR_DASH": { - "XMR": "199.20221390", - "DASH": "116.70250730" - }, - "XMR_LTC": { - "XMR": "170.93153487", - "LTC": "118.22421521" - }, - "XMR_MAID": { - "XMR": "11.27396401", - "MAID": "5131.12258542" - }, - "XMR_NXT": { - "XMR": "1.90717544", - "NXT": "4664.12738280" - }, - "BTC_ETH": { - "BTC": "155.94348625", - "ETH": "5059.54434879" - }, - "USDT_ETH": { - "USDT": "883511.34773111", - "ETH": "3668.33116661" - }, - "BTC_SC": { - "BTC": "1.87511642", - "SC": "4769865.10799687" - }, - "BTC_FCT": { - "BTC": "10.36741741", - "FCT": "13773.13207446" - }, - "BTC_DCR": { - "BTC": "2.34160137", - "DCR": "684.41654989" - }, - "BTC_LSK": { - "BTC": "5.21884194", - "LSK": "20377.01855963" - }, - "ETH_LSK": { - "ETH": "0.76656131", - "LSK": "93.01338152" - }, - "BTC_LBC": { - "BTC": "3.00058286", - "LBC": "699495.42159049" - }, - "BTC_STEEM": { - "BTC": "4.42639165", - "STEEM": "85043.49213557" - }, - "ETH_STEEM": { - "ETH": "6.47349009", - "STEEM": "3859.75860945" - }, - "BTC_ETC": { - "BTC": "10.91386394", - "ETC": "10520.96374951" - }, - "ETH_ETC": { - "ETH": "50.23223183", - "ETC": "1477.91871918" - }, - "USDT_ETC": { - "USDT": "143484.54569522", - "ETC": "17511.35515526" - }, - "BTC_REP": { - "BTC": "3.58890958", - "REP": "1490.86836755" - }, - "USDT_REP": { - "USDT": "21917.80239715", - "REP": "1157.81116881" - }, - "ETH_REP": { - "ETH": "43.83047186", - "REP": "566.61066154" - }, - "BTC_ARDR": { - "BTC": "3.03108905", - "ARDR": "238083.87187020" - }, - "BTC_ZEC": { - "BTC": "6.83567402", - "ZEC": "679.67342401" - }, - "ETH_ZEC": { - "ETH": "20.70785072", - "ZEC": "63.08405800" - }, - "USDT_ZEC": { - "USDT": "22621.88453883", - "ZEC": "285.13456697" - }, - "XMR_ZEC": { - "XMR": "18.27667017", - "ZEC": "19.92803337" - }, - "BTC_STRAT": { - "BTC": "3.69185582", - "STRAT": "30477.03971572" - }, - "BTC_PASC": { - "BTC": "1.25124963", - "PASC": "45122.06215166" - }, - "BTC_GNT": { - "BTC": "4.93328876", - "GNT": "404745.01492216" - }, - "ETH_GNT": { - "ETH": "33.26795789", - "GNT": "85767.44098332" - }, - "BTC_ZRX": { - "BTC": "2.07845804", - "ZRX": "49776.28138902" - }, - "ETH_ZRX": { - "ETH": "22.37346857", - "ZRX": "16548.11602204" - }, - "BTC_CVC": { - "BTC": "0.75331703", - "CVC": "68777.88900435" - }, - "ETH_CVC": { - "ETH": "7.76889158", - "CVC": "22217.14581100" - }, - "BTC_OMG": { - "BTC": "1.25616463", - "OMG": "4963.85040878" - }, - "ETH_OMG": { - "ETH": "8.05512623", - "OMG": "971.21438737" - }, - "BTC_GAS": { - "BTC": "0.77232780", - "GAS": "1916.80182489" - }, - "ETH_GAS": { - "ETH": "3.04307877", - "GAS": "227.12349806" - }, - "BTC_STORJ": { - "BTC": "0.59303686", - "STORJ": "16796.76970761" - }, - "BTC_EOS": { - "BTC": "18.59593565", - "EOS": "23099.92132301" - }, - "ETH_EOS": { - "ETH": "57.85287084", - "EOS": "2204.63200411" - }, - "USDT_EOS": { - "USDT": "278043.19290915", - "EOS": "43736.05905905" - }, - "BTC_SNT": { - "BTC": "1.74882337", - "SNT": "463292.11309769" - }, - "ETH_SNT": { - "ETH": "11.98247233", - "SNT": "97344.62846475" - }, - "USDT_SNT": { - "USDT": "3314.06637263", - "SNT": "111527.99375151" - }, - "BTC_KNC": { - "BTC": "1.07605151", - "KNC": "31066.52899332" - }, - "ETH_KNC": { - "ETH": "3.97445644", - "KNC": "3526.69313018" - }, - "USDT_KNC": { - "USDT": "3460.19386639", - "KNC": "12879.73674180" - }, - "BTC_BAT": { - "BTC": "2.13275613", - "BAT": "51122.24173657" - }, - "ETH_BAT": { - "ETH": "15.19774324", - "BAT": "11202.68186565" - }, - "USDT_BAT": { - "USDT": "19328.23384182", - "BAT": "58700.42769184" - }, - "BTC_LOOM": { - "BTC": "5.48711026", - "LOOM": "522861.14578247" - }, - "ETH_LOOM": { - "ETH": "65.66658897", - "LOOM": "193088.49239467" - }, - "USDT_LOOM": { - "USDT": "7884.22722657", - "LOOM": "94061.17501115" - }, - "USDT_DOGE": { - "USDT": "30256.35268923", - "DOGE": "10052886.96556405" - }, - "USDT_GNT": { - "USDT": "13022.42294546", - "GNT": "136510.36772013" - }, - "USDT_LSK": { - "USDT": "13223.12589230", - "LSK": "6568.77436503" - }, - "USDT_SC": { - "USDT": "25558.80796699", - "SC": "8307626.97734275" - }, - "USDT_ZRX": { - "USDT": "25505.45281006", - "ZRX": "78505.36961414" - }, - "BTC_QTUM": { - "BTC": "9.94417285", - "QTUM": "23898.37003779" - }, - "ETH_QTUM": { - "ETH": "19.21848012", - "QTUM": "1428.71665478" - }, - "USDT_QTUM": { - "USDT": "39682.13887751", - "QTUM": "12370.15246589" - }, - "USDC_BTC": { - "USDC": "3482664.85806597", - "BTC": "441.87385476" - }, - "USDC_ETH": { - "USDC": "501153.45720283", - "ETH": "2047.00238213" - }, - "USDC_USDT": { - "USDC": "57933.50068393", - "USDT": "57719.93500183" - }, - "BTC_MANA": { - "BTC": "2.70084416", - "MANA": "362727.87722537" - }, - "ETH_MANA": { - "ETH": "22.07735950", - "MANA": "90624.84430328" - }, - "USDT_MANA": { - "USDT": "3529.09794786", - "MANA": "59699.03615938" - }, - "BTC_BNT": { - "BTC": "0.06242819", - "BNT": "708.36829451" - }, - "ETH_BNT": { - "ETH": "14.29896888", - "BNT": "5013.99102334" - }, - "USDT_BNT": { - "USDT": "363.53451604", - "BNT": "514.58745683" - }, - "BTC_BCHABC": { - "BTC": "36.20758372", - "BCHABC": "733.46224700" - }, - "USDC_BCHABC": { - "USDC": "135429.66946378", - "BCHABC": "345.71602989" - }, - "BTC_BCHSV": { - "BTC": "107.87823714", - "BCHSV": "4528.05891976" - }, - "USDC_BCHSV": { - "USDC": "219303.91833302", - "BCHSV": "1158.73869926" - }, - "USDC_XRP": { - "USDC": "199920.97825116", - "XRP": "501260.01445723" - }, - "USDC_XMR": { - "USDC": "99062.18940901", - "XMR": "1147.67641269" - }, - "USDC_STR": { - "USDC": "21935.95722630", - "STR": "178840.89704069" - }, - "USDC_DOGE": { - "USDC": "2750.23843586", - "DOGE": "907350.09402904" - }, - "USDC_LTC": { - "USDC": "566449.26199652", - "LTC": "4496.10093795" - }, - "USDC_ZEC": { - "USDC": "18301.41164199", - "ZEC": "229.40589669" - }, - "BTC_FOAM": { - "BTC": "0.89731724", - "FOAM": "166155.79008468" - }, - "USDC_FOAM": { - "USDC": "722.65429834", - "FOAM": "16885.98552482" - }, - "BTC_NMR": { - "BTC": "1.64609151", - "NMR": "1912.03148904" - }, - "BTC_POLY": { - "BTC": "1.91462892", - "POLY": "152996.00496795" - }, - "BTC_LPT": { - "BTC": "2.49829681", - "LPT": "4080.23729692" - }, - "BTC_GRIN": { - "BTC": "24.37429922", - "GRIN": "62838.47716938" - }, - "USDC_GRIN": { - "USDC": "23814.63241472", - "GRIN": "7937.02292983" - }, - "BTC_ATOM": { - "BTC": "39.67100725", - "ATOM": "52381.46699854" - }, - "USDC_ATOM": { - "USDC": "8589.72151742", - "ATOM": "1435.15971856" - }, - "USDT_ATOM": { - "USDT": "125149.60868108", - "ATOM": "21087.06757208" - }, - "totalBTC": "1628.64800905", - "totalETH": "406.78806917", - "totalUSDC": "5338032.44894085", - "totalUSDT": "8364245.62980983", - "totalXMR": "401.75440929", - "totalXUSD": "0.00000000" - }, - "queryString": "command=return24hVolume", - "bodyParams": "\u003cnil\u003e", - "headers": { - "Key": [ - "" - ] - } - }, - { - "data": { - "BTC_BCN": { - "id": 7, - "last": "0.00000012", - "lowestAsk": "0.00000012", - "highestBid": "0.00000011", - "percentChange": "0.00000000", - "baseVolume": "2.10597417", - "quoteVolume": "18580513.78451419", - "isFrozen": "0", - "high24hr": "0.00000012", - "low24hr": "0.00000011" - }, - "BTC_BTS": { - "id": 14, - "last": "0.00000770", - "lowestAsk": "0.00000771", - "highestBid": "0.00000770", - "percentChange": "-0.00900900", - "baseVolume": "11.31814868", - "quoteVolume": "1422525.76536768", - "isFrozen": "0", - "high24hr": "0.00000804", - "low24hr": "0.00000764" - }, - "BTC_CLAM": { - "id": 20, - "last": "0.00058833", - "lowestAsk": "0.00059410", - "highestBid": "0.00058663", - "percentChange": "0.00896930", - "baseVolume": "2.91928382", - "quoteVolume": "5008.88307610", - "isFrozen": "0", - "high24hr": "0.00060427", - "low24hr": "0.00056130" - }, - "BTC_DASH": { - "id": 24, - "last": "0.01880000", - "lowestAsk": "0.01880610", - "highestBid": "0.01880000", - "percentChange": "-0.00407587", - "baseVolume": "121.56922496", - "quoteVolume": "6476.07273599", - "isFrozen": "0", - "high24hr": "0.01901934", - "low24hr": "0.01830550" - }, - "BTC_DGB": { - "id": 25, - "last": "0.00000162", - "lowestAsk": "0.00000164", - "highestBid": "0.00000162", - "percentChange": "-0.04142011", - "baseVolume": "16.15966014", - "quoteVolume": "9761759.50030071", - "isFrozen": "0", - "high24hr": "0.00000172", - "low24hr": "0.00000160" - }, - "BTC_DOGE": { - "id": 27, - "last": "0.00000039", - "lowestAsk": "0.00000039", - "highestBid": "0.00000038", - "percentChange": "0.02631578", - "baseVolume": "19.98598120", - "quoteVolume": "52317925.99866673", - "isFrozen": "0", - "high24hr": "0.00000039", - "low24hr": "0.00000038" - }, - "BTC_GAME": { - "id": 38, - "last": "0.00001153", - "lowestAsk": "0.00001176", - "highestBid": "0.00001154", - "percentChange": "-0.00945017", - "baseVolume": "3.82370347", - "quoteVolume": "300446.22176630", - "isFrozen": "0", - "high24hr": "0.00001391", - "low24hr": "0.00001128" - }, - "BTC_LTC": { - "id": 50, - "last": "0.01617495", - "lowestAsk": "0.01617366", - "highestBid": "0.01613601", - "percentChange": "0.06261463", - "baseVolume": "666.94447027", - "quoteVolume": "42339.40507638", - "isFrozen": "0", - "high24hr": "0.01630000", - "low24hr": "0.01497000" - }, - "BTC_MAID": { - "id": 51, - "last": "0.00002364", - "lowestAsk": "0.00002364", - "highestBid": "0.00002362", - "percentChange": "-0.03194103", - "baseVolume": "2.56267002", - "quoteVolume": "107646.79242367", - "isFrozen": "0", - "high24hr": "0.00002442", - "low24hr": "0.00002351" - }, - "BTC_OMNI": { - "id": 58, - "last": "0.00028837", - "lowestAsk": "0.00028798", - "highestBid": "0.00027236", - "percentChange": "0.00215464", - "baseVolume": "0.20882002", - "quoteVolume": "732.64551893", - "isFrozen": "0", - "high24hr": "0.00029480", - "low24hr": "0.00027000" - }, - "BTC_NAV": { - "id": 61, - "last": "0.00002838", - "lowestAsk": "0.00002850", - "highestBid": "0.00002824", - "percentChange": "0.03728070", - "baseVolume": "0.85599154", - "quoteVolume": "30239.29066641", - "isFrozen": "0", - "high24hr": "0.00002880", - "low24hr": "0.00002736" - }, - "BTC_NXT": { - "id": 69, - "last": "0.00000454", - "lowestAsk": "0.00000455", - "highestBid": "0.00000453", - "percentChange": "-0.01731601", - "baseVolume": "1.64399713", - "quoteVolume": "360674.76672284", - "isFrozen": "0", - "high24hr": "0.00000466", - "low24hr": "0.00000450" - }, - "BTC_STR": { - "id": 89, - "last": "0.00001537", - "lowestAsk": "0.00001537", - "highestBid": "0.00001533", - "percentChange": "-0.00646412", - "baseVolume": "29.15587511", - "quoteVolume": "1887833.72135812", - "isFrozen": "0", - "high24hr": "0.00001571", - "low24hr": "0.00001532" - }, - "BTC_VIA": { - "id": 97, - "last": "0.00007259", - "lowestAsk": "0.00007261", - "highestBid": "0.00007216", - "percentChange": "0.02862406", - "baseVolume": "6.00937608", - "quoteVolume": "82838.51366051", - "isFrozen": "0", - "high24hr": "0.00007528", - "low24hr": "0.00007013" - }, - "BTC_VTC": { - "id": 100, - "last": "0.00006767", - "lowestAsk": "0.00006769", - "highestBid": "0.00006727", - "percentChange": "-0.00907892", - "baseVolume": "8.10964192", - "quoteVolume": "118741.18466855", - "isFrozen": "0", - "high24hr": "0.00006995", - "low24hr": "0.00006620" - }, - "BTC_XEM": { - "id": 112, - "last": "0.00001060", - "lowestAsk": "0.00001063", - "highestBid": "0.00001058", - "percentChange": "-0.01303538", - "baseVolume": "11.47584618", - "quoteVolume": "1080591.66263058", - "isFrozen": "0", - "high24hr": "0.00001091", - "low24hr": "0.00001049" - }, - "BTC_XMR": { - "id": 114, - "last": "0.01087441", - "lowestAsk": "0.01089415", - "highestBid": "0.01088305", - "percentChange": "-0.00620981", - "baseVolume": "42.01213244", - "quoteVolume": "3857.26226555", - "isFrozen": "0", - "high24hr": "0.01102244", - "low24hr": "0.01079251" - }, - "BTC_XPM": { - "id": 116, - "last": "0.00002756", - "lowestAsk": "0.00002860", - "highestBid": "0.00002756", - "percentChange": "-0.04735568", - "baseVolume": "0.71263628", - "quoteVolume": "24729.03795341", - "isFrozen": "0", - "high24hr": "0.00002962", - "low24hr": "0.00002756" - }, - "BTC_XRP": { - "id": 117, - "last": "0.00004960", - "lowestAsk": "0.00004961", - "highestBid": "0.00004960", - "percentChange": "-0.02131018", - "baseVolume": "201.36631863", - "quoteVolume": "4023790.64131056", - "isFrozen": "0", - "high24hr": "0.00005090", - "low24hr": "0.00004933" - }, - "USDT_BTC": { - "id": 121, - "last": "7938.84630781", - "lowestAsk": "7939.11267940", - "highestBid": "7934.30612610", - "percentChange": "0.04175843", - "baseVolume": "4421897.17330826", - "quoteVolume": "561.77921782", - "isFrozen": "0", - "high24hr": "8010.00000000", - "low24hr": "7594.72485562" - }, - "USDT_DASH": { - "id": 122, - "last": "149.00000000", - "lowestAsk": "149.49998944", - "highestBid": "148.18792540", - "percentChange": "0.03081761", - "baseVolume": "163148.07688044", - "quoteVolume": "1097.22131727", - "isFrozen": "0", - "high24hr": "151.49790691", - "low24hr": "141.36289327" - }, - "USDT_LTC": { - "id": 123, - "last": "128.29999999", - "lowestAsk": "128.29999899", - "highestBid": "127.31927721", - "percentChange": "0.10600510", - "baseVolume": "1316866.42418109", - "quoteVolume": "10573.16167640", - "isFrozen": "0", - "high24hr": "129.80000000", - "low24hr": "114.19423572" - }, - "USDT_NXT": { - "id": 124, - "last": "0.03564433", - "lowestAsk": "0.03661779", - "highestBid": "0.03565562", - "percentChange": "0.01783769", - "baseVolume": "10352.62135341", - "quoteVolume": "287419.90703917", - "isFrozen": "0", - "high24hr": "0.03725000", - "low24hr": "0.03465000" - }, - "USDT_STR": { - "id": 125, - "last": "0.12153229", - "lowestAsk": "0.12192981", - "highestBid": "0.12155670", - "percentChange": "0.02869133", - "baseVolume": "119159.96377689", - "quoteVolume": "975973.89241271", - "isFrozen": "0", - "high24hr": "0.12367652", - "low24hr": "0.11783976" - }, - "USDT_XMR": { - "id": 126, - "last": "86.80322950", - "lowestAsk": "86.63121390", - "highestBid": "86.01288637", - "percentChange": "0.03842924", - "baseVolume": "44311.82773756", - "quoteVolume": "513.51239329", - "isFrozen": "0", - "high24hr": "87.30000000", - "low24hr": "83.20226300" - }, - "USDT_XRP": { - "id": 127, - "last": "0.39377688", - "lowestAsk": "0.39377649", - "highestBid": "0.39152696", - "percentChange": "0.01987867", - "baseVolume": "628653.50566678", - "quoteVolume": "1590094.01666263", - "isFrozen": "0", - "high24hr": "0.40300000", - "low24hr": "0.38130000" - }, - "XMR_BCN": { - "id": 129, - "last": "0.00001085", - "lowestAsk": "0.00001085", - "highestBid": "0.00001077", - "percentChange": "0.00370027", - "baseVolume": "0.16285090", - "quoteVolume": "15121.34000573", - "isFrozen": "0", - "high24hr": "0.00001086", - "low24hr": "0.00001076" - }, - "XMR_DASH": { - "id": 132, - "last": "1.71734933", - "lowestAsk": "1.72597923", - "highestBid": "1.70985983", - "percentChange": "-0.00135971", - "baseVolume": "199.20221390", - "quoteVolume": "116.70250730", - "isFrozen": "0", - "high24hr": "1.74792000", - "low24hr": "1.69000000" - }, - "XMR_LTC": { - "id": 137, - "last": "1.47455980", - "lowestAsk": "1.48934226", - "highestBid": "1.47456588", - "percentChange": "0.06048168", - "baseVolume": "170.93153487", - "quoteVolume": "118.22421521", - "isFrozen": "0", - "high24hr": "1.49999000", - "low24hr": "1.37511020" - }, - "XMR_MAID": { - "id": 138, - "last": "0.00215539", - "lowestAsk": "0.00218535", - "highestBid": "0.00215074", - "percentChange": "-0.01503907", - "baseVolume": "11.27396401", - "quoteVolume": "5131.12258542", - "isFrozen": "0", - "high24hr": "0.00219909", - "low24hr": "0.00215539" - }, - "XMR_NXT": { - "id": 140, - "last": "0.00040927", - "lowestAsk": "0.00041471", - "highestBid": "0.00040892", - "percentChange": "-0.02296545", - "baseVolume": "1.90717544", - "quoteVolume": "4664.12738280", - "isFrozen": "0", - "high24hr": "0.00042734", - "low24hr": "0.00040123" - }, - "BTC_ETH": { - "id": 148, - "last": "0.03079500", - "lowestAsk": "0.03081459", - "highestBid": "0.03079004", - "percentChange": "0.00818332", - "baseVolume": "155.94348625", - "quoteVolume": "5059.54434879", - "isFrozen": "0", - "high24hr": "0.03119996", - "low24hr": "0.03042230" - }, - "USDT_ETH": { - "id": 149, - "last": "243.56443038", - "lowestAsk": "244.56399997", - "highestBid": "243.60640010", - "percentChange": "0.04452331", - "baseVolume": "883511.34773111", - "quoteVolume": "3668.33116661", - "isFrozen": "0", - "high24hr": "247.86593850", - "low24hr": "232.63838377" - }, - "BTC_SC": { - "id": 150, - "last": "0.00000039", - "lowestAsk": "0.00000040", - "highestBid": "0.00000039", - "percentChange": "0.00000000", - "baseVolume": "1.87511642", - "quoteVolume": "4769865.10799687", - "isFrozen": "0", - "high24hr": "0.00000040", - "low24hr": "0.00000039" - }, - "BTC_FCT": { - "id": 155, - "last": "0.00073952", - "lowestAsk": "0.00074498", - "highestBid": "0.00073982", - "percentChange": "-0.02689615", - "baseVolume": "10.36741741", - "quoteVolume": "13773.13207446", - "isFrozen": "0", - "high24hr": "0.00078617", - "low24hr": "0.00072961" - }, - "BTC_DCR": { - "id": 162, - "last": "0.00346266", - "lowestAsk": "0.00346266", - "highestBid": "0.00343891", - "percentChange": "0.00119414", - "baseVolume": "2.34160137", - "quoteVolume": "684.41654989", - "isFrozen": "0", - "high24hr": "0.00350651", - "low24hr": "0.00336074" - }, - "BTC_LSK": { - "id": 163, - "last": "0.00025799", - "lowestAsk": "0.00025836", - "highestBid": "0.00025678", - "percentChange": "0.02907857", - "baseVolume": "5.21884194", - "quoteVolume": "20377.01855963", - "isFrozen": "0", - "high24hr": "0.00026000", - "low24hr": "0.00024928" - }, - "ETH_LSK": { - "id": 166, - "last": "0.00836598", - "lowestAsk": "0.00841578", - "highestBid": "0.00828726", - "percentChange": "0.02650061", - "baseVolume": "0.76656131", - "quoteVolume": "93.01338152", - "isFrozen": "0", - "high24hr": "0.00849344", - "low24hr": "0.00815000" - }, - "BTC_LBC": { - "id": 167, - "last": "0.00000437", - "lowestAsk": "0.00000445", - "highestBid": "0.00000438", - "percentChange": "0.01627906", - "baseVolume": "3.00058286", - "quoteVolume": "699495.42159049", - "isFrozen": "0", - "high24hr": "0.00000459", - "low24hr": "0.00000411" - }, - "BTC_STEEM": { - "id": 168, - "last": "0.00005167", - "lowestAsk": "0.00005160", - "highestBid": "0.00005127", - "percentChange": "-0.01449551", - "baseVolume": "4.42639165", - "quoteVolume": "85043.49213557", - "isFrozen": "0", - "high24hr": "0.00005363", - "low24hr": "0.00005040" - }, - "ETH_STEEM": { - "id": 169, - "last": "0.00167610", - "lowestAsk": "0.00168151", - "highestBid": "0.00166580", - "percentChange": "-0.03115606", - "baseVolume": "6.47349009", - "quoteVolume": "3859.75860945", - "isFrozen": "0", - "high24hr": "0.00175423", - "low24hr": "0.00165255" - }, - "BTC_ETC": { - "id": 171, - "last": "0.00102820", - "lowestAsk": "0.00103251", - "highestBid": "0.00102764", - "percentChange": "-0.02908404", - "baseVolume": "10.91386394", - "quoteVolume": "10520.96374951", - "isFrozen": "0", - "high24hr": "0.00106777", - "low24hr": "0.00102551" - }, - "ETH_ETC": { - "id": 172, - "last": "0.03342225", - "lowestAsk": "0.03345178", - "highestBid": "0.03340000", - "percentChange": "-0.03665230", - "baseVolume": "50.23223183", - "quoteVolume": "1477.91871918", - "isFrozen": "0", - "high24hr": "0.03469387", - "low24hr": "0.03342225" - }, - "USDT_ETC": { - "id": 173, - "last": "8.15001414", - "lowestAsk": "8.17000000", - "highestBid": "8.15001491", - "percentChange": "0.01628235", - "baseVolume": "143484.54569522", - "quoteVolume": "17511.35515526", - "isFrozen": "0", - "high24hr": "8.38997233", - "low24hr": "7.88066582" - }, - "BTC_REP": { - "id": 174, - "last": "0.00238110", - "lowestAsk": "0.00238013", - "highestBid": "0.00236841", - "percentChange": "0.00882953", - "baseVolume": "3.58890958", - "quoteVolume": "1490.86836755", - "isFrozen": "0", - "high24hr": "0.00249520", - "low24hr": "0.00233000" - }, - "USDT_REP": { - "id": 175, - "last": "18.81359647", - "lowestAsk": "18.81359647", - "highestBid": "18.73413490", - "percentChange": "0.04529910", - "baseVolume": "21917.80239715", - "quoteVolume": "1157.81116881", - "isFrozen": "0", - "high24hr": "19.50000000", - "low24hr": "18.07435000" - }, - "ETH_REP": { - "id": 176, - "last": "0.07729862", - "lowestAsk": "0.07729862", - "highestBid": "0.07691404", - "percentChange": "0.00550880", - "baseVolume": "43.83047186", - "quoteVolume": "566.61066154", - "isFrozen": "0", - "high24hr": "0.08044678", - "low24hr": "0.07610657" - }, - "BTC_ARDR": { - "id": 177, - "last": "0.00001248", - "lowestAsk": "0.00001252", - "highestBid": "0.00001248", - "percentChange": "-0.01732283", - "baseVolume": "3.03108905", - "quoteVolume": "238083.87187020", - "isFrozen": "0", - "high24hr": "0.00001333", - "low24hr": "0.00001220" - }, - "BTC_ZEC": { - "id": 178, - "last": "0.00990515", - "lowestAsk": "0.00993296", - "highestBid": "0.00990500", - "percentChange": "-0.02472465", - "baseVolume": "6.83567402", - "quoteVolume": "679.67342401", - "isFrozen": "0", - "high24hr": "0.01024922", - "low24hr": "0.00990501" - }, - "ETH_ZEC": { - "id": 179, - "last": "0.32250027", - "lowestAsk": "0.32473808", - "highestBid": "0.32237743", - "percentChange": "-0.03832020", - "baseVolume": "20.70785072", - "quoteVolume": "63.08405800", - "isFrozen": "0", - "high24hr": "0.33600013", - "low24hr": "0.32250027" - }, - "USDT_ZEC": { - "id": 180, - "last": "78.59493101", - "lowestAsk": "79.24350590", - "highestBid": "78.59493102", - "percentChange": "0.01370161", - "baseVolume": "22621.88453883", - "quoteVolume": "285.13456697", - "isFrozen": "0", - "high24hr": "81.19999999", - "low24hr": "77.53260899" - }, - "XMR_ZEC": { - "id": 181, - "last": "0.91217810", - "lowestAsk": "0.91363635", - "highestBid": "0.90478668", - "percentChange": "-0.01510586", - "baseVolume": "18.27667017", - "quoteVolume": "19.92803337", - "isFrozen": "0", - "high24hr": "0.93682194", - "low24hr": "0.90298672" - }, - "BTC_STRAT": { - "id": 182, - "last": "0.00011859", - "lowestAsk": "0.00011955", - "highestBid": "0.00011869", - "percentChange": "-0.04006799", - "baseVolume": "3.69185582", - "quoteVolume": "30477.03971572", - "isFrozen": "0", - "high24hr": "0.00012497", - "low24hr": "0.00011892" - }, - "BTC_PASC": { - "id": 184, - "last": "0.00002812", - "lowestAsk": "0.00002815", - "highestBid": "0.00002814", - "percentChange": "-0.01678321", - "baseVolume": "1.25124963", - "quoteVolume": "45122.06215166", - "isFrozen": "0", - "high24hr": "0.00002870", - "low24hr": "0.00002670" - }, - "BTC_GNT": { - "id": 185, - "last": "0.00001257", - "lowestAsk": "0.00001266", - "highestBid": "0.00001260", - "percentChange": "0.06887755", - "baseVolume": "4.93328876", - "quoteVolume": "404745.01492216", - "isFrozen": "0", - "high24hr": "0.00001291", - "low24hr": "0.00001152" - }, - "ETH_GNT": { - "id": 186, - "last": "0.00040752", - "lowestAsk": "0.00041263", - "highestBid": "0.00040681", - "percentChange": "0.05777916", - "baseVolume": "33.26795789", - "quoteVolume": "85767.44098332", - "isFrozen": "0", - "high24hr": "0.00041473", - "low24hr": "0.00037826" - }, - "BTC_ZRX": { - "id": 192, - "last": "0.00004091", - "lowestAsk": "0.00004091", - "highestBid": "0.00004080", - "percentChange": "-0.00559066", - "baseVolume": "2.07845804", - "quoteVolume": "49776.28138902", - "isFrozen": "0", - "high24hr": "0.00004218", - "low24hr": "0.00004081" - }, - "ETH_ZRX": { - "id": 193, - "last": "0.00132759", - "lowestAsk": "0.00132744", - "highestBid": "0.00132743", - "percentChange": "-0.01595125", - "baseVolume": "22.37346857", - "quoteVolume": "16548.11602204", - "isFrozen": "0", - "high24hr": "0.00137937", - "low24hr": "0.00132759" - }, - "BTC_CVC": { - "id": 194, - "last": "0.00001081", - "lowestAsk": "0.00001081", - "highestBid": "0.00001074", - "percentChange": "0.01217228", - "baseVolume": "0.75331703", - "quoteVolume": "68777.88900435", - "isFrozen": "0", - "high24hr": "0.00001123", - "low24hr": "0.00001070" - }, - "ETH_CVC": { - "id": 195, - "last": "0.00034931", - "lowestAsk": "0.00035104", - "highestBid": "0.00034931", - "percentChange": "-0.00498490", - "baseVolume": "7.76889158", - "quoteVolume": "22217.14581100", - "isFrozen": "0", - "high24hr": "0.00036357", - "low24hr": "0.00034633" - }, - "BTC_OMG": { - "id": 196, - "last": "0.00025135", - "lowestAsk": "0.00025240", - "highestBid": "0.00025135", - "percentChange": "0.00741482", - "baseVolume": "1.25616463", - "quoteVolume": "4963.85040878", - "isFrozen": "0", - "high24hr": "0.00026071", - "low24hr": "0.00024544" - }, - "ETH_OMG": { - "id": 197, - "last": "0.00823187", - "lowestAsk": "0.00820725", - "highestBid": "0.00816185", - "percentChange": "0.01803604", - "baseVolume": "8.05512623", - "quoteVolume": "971.21438737", - "isFrozen": "0", - "high24hr": "0.00850000", - "low24hr": "0.00812951" - }, - "BTC_GAS": { - "id": 198, - "last": "0.00039654", - "lowestAsk": "0.00039595", - "highestBid": "0.00038985", - "percentChange": "-0.00284155", - "baseVolume": "0.77232780", - "quoteVolume": "1916.80182489", - "isFrozen": "0", - "high24hr": "0.00041046", - "low24hr": "0.00038985" - }, - "ETH_GAS": { - "id": 199, - "last": "0.01300000", - "lowestAsk": "0.01309755", - "highestBid": "0.01262073", - "percentChange": "-0.01555871", - "baseVolume": "3.04307877", - "quoteVolume": "227.12349806", - "isFrozen": "0", - "high24hr": "0.01390000", - "low24hr": "0.01271658" - }, - "BTC_STORJ": { - "id": 200, - "last": "0.00003506", - "lowestAsk": "0.00003515", - "highestBid": "0.00003506", - "percentChange": "0.00228702", - "baseVolume": "0.59303686", - "quoteVolume": "16796.76970761", - "isFrozen": "0", - "high24hr": "0.00003583", - "low24hr": "0.00003460" - }, - "BTC_EOS": { - "id": 201, - "last": "0.00080185", - "lowestAsk": "0.00080171", - "highestBid": "0.00080063", - "percentChange": "-0.00661554", - "baseVolume": "18.59593565", - "quoteVolume": "23099.92132301", - "isFrozen": "0", - "high24hr": "0.00081224", - "low24hr": "0.00079800" - }, - "ETH_EOS": { - "id": 202, - "last": "0.02596528", - "lowestAsk": "0.02603759", - "highestBid": "0.02596530", - "percentChange": "-0.01068667", - "baseVolume": "57.85287084", - "quoteVolume": "2204.63200411", - "isFrozen": "0", - "high24hr": "0.02644714", - "low24hr": "0.02596528" - }, - "USDT_EOS": { - "id": 203, - "last": "6.33455816", - "lowestAsk": "6.38358433", - "highestBid": "6.33676472", - "percentChange": "0.01939777", - "baseVolume": "278043.19290915", - "quoteVolume": "43736.05905905", - "isFrozen": "0", - "high24hr": "6.49451490", - "low24hr": "6.06318315" - }, - "BTC_SNT": { - "id": 204, - "last": "0.00000380", - "lowestAsk": "0.00000381", - "highestBid": "0.00000377", - "percentChange": "0.01063829", - "baseVolume": "1.74882337", - "quoteVolume": "463292.11309769", - "isFrozen": "0", - "high24hr": "0.00000391", - "low24hr": "0.00000365" - }, - "ETH_SNT": { - "id": 205, - "last": "0.00012341", - "lowestAsk": "0.00012330", - "highestBid": "0.00012281", - "percentChange": "-0.00684049", - "baseVolume": "11.98247233", - "quoteVolume": "97344.62846475", - "isFrozen": "0", - "high24hr": "0.00012595", - "low24hr": "0.00011976" - }, - "USDT_SNT": { - "id": 206, - "last": "0.03002016", - "lowestAsk": "0.03099489", - "highestBid": "0.02965894", - "percentChange": "0.05260397", - "baseVolume": "3314.06637263", - "quoteVolume": "111527.99375151", - "isFrozen": "0", - "high24hr": "0.03099999", - "low24hr": "0.02852000" - }, - "BTC_KNC": { - "id": 207, - "last": "0.00003377", - "lowestAsk": "0.00003373", - "highestBid": "0.00003333", - "percentChange": "-0.00295246", - "baseVolume": "1.07605151", - "quoteVolume": "31066.52899332", - "isFrozen": "0", - "high24hr": "0.00003550", - "low24hr": "0.00003371" - }, - "ETH_KNC": { - "id": 208, - "last": "0.00109269", - "lowestAsk": "0.00114156", - "highestBid": "0.00108615", - "percentChange": "-0.02501070", - "baseVolume": "3.97445644", - "quoteVolume": "3526.69313018", - "isFrozen": "0", - "high24hr": "0.00115000", - "low24hr": "0.00108891" - }, - "USDT_KNC": { - "id": 209, - "last": "0.26815800", - "lowestAsk": "0.27081578", - "highestBid": "0.26681722", - "percentChange": "0.04138446", - "baseVolume": "3460.19386639", - "quoteVolume": "12879.73674180", - "isFrozen": "0", - "high24hr": "0.27487268", - "low24hr": "0.24150034" - }, - "BTC_BAT": { - "id": 210, - "last": "0.00004095", - "lowestAsk": "0.00004095", - "highestBid": "0.00004088", - "percentChange": "-0.02777777", - "baseVolume": "2.13275613", - "quoteVolume": "51122.24173657", - "isFrozen": "0", - "high24hr": "0.00004245", - "low24hr": "0.00004087" - }, - "ETH_BAT": { - "id": 211, - "last": "0.00133065", - "lowestAsk": "0.00133346", - "highestBid": "0.00132716", - "percentChange": "-0.03673809", - "baseVolume": "15.19774324", - "quoteVolume": "11202.68186565", - "isFrozen": "0", - "high24hr": "0.00138539", - "low24hr": "0.00133065" - }, - "USDT_BAT": { - "id": 212, - "last": "0.32726271", - "lowestAsk": "0.32705989", - "highestBid": "0.32445561", - "percentChange": "0.01806377", - "baseVolume": "19328.23384182", - "quoteVolume": "58700.42769184", - "isFrozen": "0", - "high24hr": "0.33689089", - "low24hr": "0.32026548" - }, - "BTC_LOOM": { - "id": 213, - "last": "0.00001042", - "lowestAsk": "0.00001048", - "highestBid": "0.00001042", - "percentChange": "0.03066271", - "baseVolume": "5.48711026", - "quoteVolume": "522861.14578247", - "isFrozen": "0", - "high24hr": "0.00001100", - "low24hr": "0.00000982" - }, - "ETH_LOOM": { - "id": 214, - "last": "0.00033930", - "lowestAsk": "0.00034802", - "highestBid": "0.00033766", - "percentChange": "0.02818181", - "baseVolume": "65.66658897", - "quoteVolume": "193088.49239467", - "isFrozen": "0", - "high24hr": "0.00035769", - "low24hr": "0.00032567" - }, - "USDT_LOOM": { - "id": 215, - "last": "0.08366370", - "lowestAsk": "0.08582526", - "highestBid": "0.08138381", - "percentChange": "0.10209527", - "baseVolume": "7884.22722657", - "quoteVolume": "94061.17501115", - "isFrozen": "0", - "high24hr": "0.08800000", - "low24hr": "0.07699900" - }, - "USDT_DOGE": { - "id": 216, - "last": "0.00303376", - "lowestAsk": "0.00304854", - "highestBid": "0.00303372", - "percentChange": "0.02803427", - "baseVolume": "30256.35268923", - "quoteVolume": "10052886.96556405", - "isFrozen": "0", - "high24hr": "0.00305492", - "low24hr": "0.00294256" - }, - "USDT_GNT": { - "id": 217, - "last": "0.09841380", - "lowestAsk": "0.10132826", - "highestBid": "0.09879707", - "percentChange": "0.09122782", - "baseVolume": "13022.42294546", - "quoteVolume": "136510.36772013", - "isFrozen": "0", - "high24hr": "0.10259935", - "low24hr": "0.08921015" - }, - "USDT_LSK": { - "id": 218, - "last": "2.04000000", - "lowestAsk": "2.04000000", - "highestBid": "2.02319825", - "percentChange": "0.05997011", - "baseVolume": "13223.12589230", - "quoteVolume": "6568.77436503", - "isFrozen": "0", - "high24hr": "2.07878065", - "low24hr": "1.90125984" - }, - "USDT_SC": { - "id": 219, - "last": "0.00310875", - "lowestAsk": "0.00315390", - "highestBid": "0.00310953", - "percentChange": "0.02377361", - "baseVolume": "25558.80796699", - "quoteVolume": "8307626.97734275", - "isFrozen": "0", - "high24hr": "0.00315902", - "low24hr": "0.00301287" - }, - "USDT_ZRX": { - "id": 220, - "last": "0.32372110", - "lowestAsk": "0.32556376", - "highestBid": "0.32372112", - "percentChange": "0.02641624", - "baseVolume": "25505.45281006", - "quoteVolume": "78505.36961414", - "isFrozen": "0", - "high24hr": "0.33012685", - "low24hr": "0.31581054" - }, - "BTC_QTUM": { - "id": 221, - "last": "0.00039711", - "lowestAsk": "0.00039946", - "highestBid": "0.00039745", - "percentChange": "0.01102398", - "baseVolume": "9.94417285", - "quoteVolume": "23898.37003779", - "isFrozen": "0", - "high24hr": "0.00044164", - "low24hr": "0.00039430" - }, - "ETH_QTUM": { - "id": 222, - "last": "0.01279123", - "lowestAsk": "0.01292445", - "highestBid": "0.01286128", - "percentChange": "0.01196680", - "baseVolume": "19.21848012", - "quoteVolume": "1428.71665478", - "isFrozen": "0", - "high24hr": "0.01445578", - "low24hr": "0.01279123" - }, - "USDT_QTUM": { - "id": 223, - "last": "3.15643449", - "lowestAsk": "3.19643113", - "highestBid": "3.15135845", - "percentChange": "0.04613305", - "baseVolume": "39682.13887751", - "quoteVolume": "12370.15246589", - "isFrozen": "0", - "high24hr": "3.38228600", - "low24hr": "3.01724000" - }, - "USDC_BTC": { - "id": 224, - "last": "7962.50000000", - "lowestAsk": "7977.13341202", - "highestBid": "7961.71516578", - "percentChange": "0.04403385", - "baseVolume": "3482664.85806597", - "quoteVolume": "441.87385476", - "isFrozen": "0", - "high24hr": "8077.47999788", - "low24hr": "7608.58328444" - }, - "USDC_ETH": { - "id": 225, - "last": "245.36055774", - "lowestAsk": "246.00046378", - "highestBid": "245.35955433", - "percentChange": "0.05094127", - "baseVolume": "501153.45720283", - "quoteVolume": "2047.00238213", - "isFrozen": "0", - "high24hr": "248.44047988", - "low24hr": "233.31933799" - }, - "USDC_USDT": { - "id": 226, - "last": "1.00420002", - "lowestAsk": "1.00519997", - "highestBid": "1.00420002", - "percentChange": "0.00170380", - "baseVolume": "57933.50068393", - "quoteVolume": "57719.93500183", - "isFrozen": "0", - "high24hr": "1.00849999", - "low24hr": "1.00048874" - }, - "BTC_MANA": { - "id": 229, - "last": "0.00000745", - "lowestAsk": "0.00000743", - "highestBid": "0.00000740", - "percentChange": "-0.00534045", - "baseVolume": "2.70084416", - "quoteVolume": "362727.87722537", - "isFrozen": "0", - "high24hr": "0.00000765", - "low24hr": "0.00000734" - }, - "ETH_MANA": { - "id": 230, - "last": "0.00024138", - "lowestAsk": "0.00024135", - "highestBid": "0.00024084", - "percentChange": "-0.00829909", - "baseVolume": "22.07735950", - "quoteVolume": "90624.84430328", - "isFrozen": "0", - "high24hr": "0.00025004", - "low24hr": "0.00024027" - }, - "USDT_MANA": { - "id": 231, - "last": "0.05874674", - "lowestAsk": "0.06023530", - "highestBid": "0.05875324", - "percentChange": "0.02910433", - "baseVolume": "3529.09794786", - "quoteVolume": "59699.03615938", - "isFrozen": "0", - "high24hr": "0.06000000", - "low24hr": "0.05685000" - }, - "BTC_BNT": { - "id": 232, - "last": "0.00008844", - "lowestAsk": "0.00008843", - "highestBid": "0.00008793", - "percentChange": "-0.02609844", - "baseVolume": "0.06242819", - "quoteVolume": "708.36829451", - "isFrozen": "0", - "high24hr": "0.00009088", - "low24hr": "0.00008666" - }, - "ETH_BNT": { - "id": 233, - "last": "0.00287809", - "lowestAsk": "0.00288685", - "highestBid": "0.00285346", - "percentChange": "0.00985614", - "baseVolume": "14.29896888", - "quoteVolume": "5013.99102334", - "isFrozen": "0", - "high24hr": "0.00288000", - "low24hr": "0.00284999" - }, - "USDT_BNT": { - "id": 234, - "last": "0.69821937", - "lowestAsk": "0.70982400", - "highestBid": "0.69821937", - "percentChange": "0.00089890", - "baseVolume": "363.53451604", - "quoteVolume": "514.58745683", - "isFrozen": "0", - "high24hr": "0.70982964", - "low24hr": "0.68340485" - }, - "BTC_BCHABC": { - "id": 236, - "last": "0.04900933", - "lowestAsk": "0.04904416", - "highestBid": "0.04900933", - "percentChange": "-0.00782334", - "baseVolume": "36.20758372", - "quoteVolume": "733.46224700", - "isFrozen": "0", - "high24hr": "0.05032733", - "low24hr": "0.04900932" - }, - "USDC_BCHABC": { - "id": 237, - "last": "389.35423311", - "lowestAsk": "393.59958829", - "highestBid": "389.35541111", - "percentChange": "0.03548741", - "baseVolume": "135429.66946378", - "quoteVolume": "345.71602989", - "isFrozen": "0", - "high24hr": "401.17968999", - "low24hr": "376.01059082" - }, - "BTC_BCHSV": { - "id": 238, - "last": "0.02387932", - "lowestAsk": "0.02389139", - "highestBid": "0.02375483", - "percentChange": "0.00192628", - "baseVolume": "107.87823714", - "quoteVolume": "4528.05891976", - "isFrozen": "0", - "high24hr": "0.02449024", - "low24hr": "0.02353105" - }, - "USDC_BCHSV": { - "id": 239, - "last": "188.54622778", - "lowestAsk": "190.89997204", - "highestBid": "188.54624615", - "percentChange": "0.03030725", - "baseVolume": "219303.91833302", - "quoteVolume": "1158.73869926", - "isFrozen": "0", - "high24hr": "194.44671873", - "low24hr": "180.49999776" - }, - "USDC_XRP": { - "id": 240, - "last": "0.39275049", - "lowestAsk": "0.39644645", - "highestBid": "0.39407291", - "percentChange": "0.00705997", - "baseVolume": "199920.97825116", - "quoteVolume": "501260.01445723", - "isFrozen": "0", - "high24hr": "0.40499909", - "low24hr": "0.38130058" - }, - "USDC_XMR": { - "id": 241, - "last": "87.18629626", - "lowestAsk": "87.13843846", - "highestBid": "86.23864800", - "percentChange": "0.04513660", - "baseVolume": "99062.18940901", - "quoteVolume": "1147.67641269", - "isFrozen": "0", - "high24hr": "87.99994711", - "low24hr": "83.40045078" - }, - "USDC_STR": { - "id": 242, - "last": "0.12152532", - "lowestAsk": "0.12344054", - "highestBid": "0.12186123", - "percentChange": "0.02557729", - "baseVolume": "21935.95722630", - "quoteVolume": "178840.89704069", - "isFrozen": "0", - "high24hr": "0.12485687", - "low24hr": "0.11824094" - }, - "USDC_DOGE": { - "id": 243, - "last": "0.00303215", - "lowestAsk": "0.00306000", - "highestBid": "0.00303215", - "percentChange": "0.01921008", - "baseVolume": "2750.23843586", - "quoteVolume": "907350.09402904", - "isFrozen": "0", - "high24hr": "0.00310197", - "low24hr": "0.00297500" - }, - "USDC_LTC": { - "id": 244, - "last": "128.93961490", - "lowestAsk": "128.93961440", - "highestBid": "128.27905224", - "percentChange": "0.10369106", - "baseVolume": "566449.26199652", - "quoteVolume": "4496.10093795", - "isFrozen": "0", - "high24hr": "129.99999999", - "low24hr": "114.11407952" - }, - "USDC_ZEC": { - "id": 245, - "last": "79.00000000", - "lowestAsk": "79.66042211", - "highestBid": "78.78616778", - "percentChange": "0.00697317", - "baseVolume": "18301.41164199", - "quoteVolume": "229.40589669", - "isFrozen": "0", - "high24hr": "81.51460533", - "low24hr": "77.79410548" - }, - "BTC_FOAM": { - "id": 246, - "last": "0.00000550", - "lowestAsk": "0.00000550", - "highestBid": "0.00000545", - "percentChange": "0.05769230", - "baseVolume": "0.89731724", - "quoteVolume": "166155.79008468", - "isFrozen": "0", - "high24hr": "0.00000555", - "low24hr": "0.00000515" - }, - "USDC_FOAM": { - "id": 247, - "last": "0.04380999", - "lowestAsk": "0.04381000", - "highestBid": "0.04380999", - "percentChange": "0.08844695", - "baseVolume": "722.65429834", - "quoteVolume": "16885.98552482", - "isFrozen": "0", - "high24hr": "0.04381000", - "low24hr": "0.03968067" - }, - "BTC_NMR": { - "id": 248, - "last": "0.00086057", - "lowestAsk": "0.00089787", - "highestBid": "0.00086212", - "percentChange": "0.06548385", - "baseVolume": "1.64609151", - "quoteVolume": "1912.03148904", - "isFrozen": "0", - "high24hr": "0.00090549", - "low24hr": "0.00079044" - }, - "BTC_POLY": { - "id": 249, - "last": "0.00001306", - "lowestAsk": "0.00001311", - "highestBid": "0.00001306", - "percentChange": "0.08471760", - "baseVolume": "1.91462892", - "quoteVolume": "152996.00496795", - "isFrozen": "0", - "high24hr": "0.00001311", - "low24hr": "0.00001178" - }, - "BTC_LPT": { - "id": 250, - "last": "0.00062300", - "lowestAsk": "0.00062500", - "highestBid": "0.00062300", - "percentChange": "-0.01954612", - "baseVolume": "2.49829681", - "quoteVolume": "4080.23729692", - "isFrozen": "0", - "high24hr": "0.00063805", - "low24hr": "0.00057190" - }, - "BTC_GRIN": { - "id": 251, - "last": "0.00038601", - "lowestAsk": "0.00038831", - "highestBid": "0.00038600", - "percentChange": "-0.01686065", - "baseVolume": "24.37429922", - "quoteVolume": "62838.47716938", - "isFrozen": "0", - "high24hr": "0.00041400", - "low24hr": "0.00036639" - }, - "USDC_GRIN": { - "id": 252, - "last": "3.11998999", - "lowestAsk": "3.10999999", - "highestBid": "3.04000004", - "percentChange": "0.02294753", - "baseVolume": "23814.63241472", - "quoteVolume": "7937.02292983", - "isFrozen": "0", - "high24hr": "3.16500000", - "low24hr": "2.89999999" - }, - "BTC_ATOM": { - "id": 253, - "last": "0.00074800", - "lowestAsk": "0.00074909", - "highestBid": "0.00074800", - "percentChange": "-0.02023708", - "baseVolume": "39.67100725", - "quoteVolume": "52381.46699854", - "isFrozen": "0", - "high24hr": "0.00077303", - "low24hr": "0.00074568" - }, - "USDC_ATOM": { - "id": 254, - "last": "5.94846938", - "lowestAsk": "5.98266834", - "highestBid": "5.91425840", - "percentChange": "0.00578678", - "baseVolume": "8589.72151742", - "quoteVolume": "1435.15971856", - "isFrozen": "0", - "high24hr": "6.13222707", - "low24hr": "5.77734693" - }, - "USDT_ATOM": { - "id": 255, - "last": "5.93000005", - "lowestAsk": "5.96804558", - "highestBid": "5.91263924", - "percentChange": "0.02241380", - "baseVolume": "125149.60868108", - "quoteVolume": "21087.06757208", - "isFrozen": "0", - "high24hr": "6.09972825", - "low24hr": "5.74700000" - } - }, - "queryString": "command=returnTicker", - "bodyParams": "\u003cnil\u003e", - "headers": { - "Key": [ - "" - ] - } + "bodyParams": "", + "headers": {} } ] }, @@ -8693,12 +8810,14 @@ "POST": [ { "data": { - "DASH": "XdtARx7FhLAqz4aXx6A9zpVXHzAcMjTyvi", - "LTC": "LaqbMc97SWBHpL7PeXNDDkgjWXC637ybGi", - "MAID": "1DonoYTRh83D9z8GLSMK65Czrcecb7R3VF" + "orderNumber": "514851232549", + "resultingTrades": { + "BTC_ETH": [] + }, + "success": 1 }, "queryString": "", - "bodyParams": "command=returnDepositAddresses\u0026nonce=1560218814364717859", + "bodyParams": "command=moveOrder\u0026nonce=1594157624217368002\u0026orderNumber=1337\u0026rate=1337", "headers": { "Content-Type": [ "application/x-www-form-urlencoded" @@ -8707,7 +8826,7 @@ "" ], "Sign": [ - "0bbe2891561d0370c90eaae6490f891ff2b1c6cbde6e1e7cdf5268de00723702ed6c2354ec058af150caecc723f571cd1c6f5d25eaba9c376d805f3462219de1" + "4907310a395998bfeb39b49acb67b64503f5ec28cf6d7b06e4fa94f6fe44de1a1bb92cee592534a6ee9796674a03a739d9ac96acc1148eba8b281fcd56ac520d" ] } }, @@ -8716,7 +8835,7 @@ "response": "Withdrew 0.0 LTC." }, "queryString": "", - "bodyParams": "address=bc1qk0jareu4jytc0cfrhr5wgshsq8282awpavfahc\u0026amount=0\u0026command=withdraw\u0026currency=LTC\u0026nonce=1560225458841479798", + "bodyParams": "address=bc1qk0jareu4jytc0cfrhr5wgshsq8282awpavfahc\u0026amount=0\u0026command=withdraw\u0026currency=LTC\u0026nonce=1594157624217368003", "headers": { "Content-Type": [ "application/x-www-form-urlencoded" @@ -8725,29 +8844,7 @@ "" ], "Sign": [ - "94f9d1a32849f95fd9b895ba71f1d1a1366d01c970f17ceb66391a5629b6c61a8d5d6195acab570615996f5f0274330393d68713d0a39b7335b2fd240abd54f4" - ] - } - }, - { - "data": { - "success": 1, - "orderNumber": "514851232549", - "resultingTrades": { - "BTC_ETH": [] - } - }, - "queryString": "", - "bodyParams": "command=moveOrder\u0026nonce=1560225718965364448\u0026orderNumber=1337\u0026rate=1337", - "headers": { - "Content-Type": [ - "application/x-www-form-urlencoded" - ], - "Key": [ - "" - ], - "Sign": [ - "54133cb80288b7d35407333f91bcf5e48f6a03b5e59472cd81e26c5175b4225885e12b708da623a0841ac901cb3da220273239917d65920ced3af8d39796d182" + "46c514cbdf18540b2a649effcda84c149db8f0934462113a4ac12959f2b437f64aa1f7056aeafce823705daa83200a41bc7a7cfbe9cfaef52fe482b71b14aea4" ] } }, @@ -8872,7 +8969,7 @@ "XMR_ZEC": [] }, "queryString": "", - "bodyParams": "command=returnOpenOrders\u0026currencyPair=all\u0026nonce=1560225851841503490", + "bodyParams": "command=returnOpenOrders\u0026currencyPair=all\u0026nonce=1594157624217368004", "headers": { "Content-Type": [ "application/x-www-form-urlencoded" @@ -8881,18 +8978,18 @@ "" ], "Sign": [ - "c27f0881fc635d76be8f886b44af2c6e2bd8852bcf4c87f48ce8492236092678371dbf2303b623bd4c8404556caadfb5422c62e30484e29ffdb2905c62623e3f" + "23bd6e83e69b333ff0d94972e1f4473eabb2cc82c7f1f2961e3bf75b6d3ba94046b653547c0e90903fc2b99d04c0a0f2f5383dd12df2c4c65d516d3bdacb32fb" ] } }, { "data": { - "success": 1, - "amount": "50.00000000", - "message": "Order #1 canceled." + "DASH": "XdtARx7FhLAqz4aXx6A9zpVXHzAcMjTyvi", + "LTC": "LaqbMc97SWBHpL7PeXNDDkgjWXC637ybGi", + "MAID": "1DonoYTRh83D9z8GLSMK65Czrcecb7R3VF" }, "queryString": "", - "bodyParams": "command=cancelOrder\u0026nonce=1560225940514896227\u0026orderNumber=1", + "bodyParams": "command=returnDepositAddresses\u0026nonce=1594157624217368005", "headers": { "Content-Type": [ "application/x-www-form-urlencoded" @@ -8901,12 +8998,14 @@ "" ], "Sign": [ - "18162a3bb203900573424e8b4fd5e9b6bae02c98e8d2612866f129b6da3fd0d3e41ac8c4e914f48fa75544b6106c79932312c1085c038307b2802667356b6434" + "9fd9a91c0fb9fd1ebd487146932d215461c3bbe72976d64767d3315934ffbfdac982de1c41d52a77f8fc06933b8e365e5189d9e23ffaa5bc2f2c33e77916b22c" ] } }, { "data": { + "currencyPair": "BTC_LTC", + "fee": "0.01000000", "orderNumber": "514845991795", "resultingTrades": [ { @@ -8917,12 +9016,10 @@ "tradeID": "251834", "type": "buy" } - ], - "fee": "0.01000000", - "currencyPair": "BTC_LTC" + ] }, "queryString": "", - "bodyParams": "amount=10000000\u0026command=buy\u0026currencyPair=BTC_LTC\u0026fillOrKill=1\u0026nonce=1560226024406623067\u0026rate=10", + "bodyParams": "amount=10000000\u0026command=buy\u0026currencyPair=BTC_LTC\u0026fillOrKill=1\u0026nonce=1594157624217368006\u0026rate=10", "headers": { "Content-Type": [ "application/x-www-form-urlencoded" @@ -8931,7 +9028,7 @@ "" ], "Sign": [ - "4c1a783636b6511a0ac070f1043b06a04f4e8120216912d64c4aca700860aef3bde6bab5305d4cc6e297b3930416064ca661c852607c76a218490787f7f557c9" + "47827ab7bf143ca24589aeae1eb038225a4f61a2598d6d9bab379f79162e98e3fa6289c39c970d9e37ecd5d2bc0a0fbfe342b29b3872774464ac0c84d4415cf7" ] } }, @@ -8939,59 +9036,59 @@ "data": { "BTC_BCH": [ { - "globalTradeID": 394131412, - "tradeID": "5455033", - "date": "2018-10-16 18:05:17", - "rate": "0.06935244", "amount": "1.40308443", - "total": "0.09730732", + "category": "exchange", + "date": "2018-10-16 18:05:17", "fee": "0.00100000", + "globalTradeID": 394131412, "orderNumber": "104768235081", - "type": "sell", - "category": "exchange" + "rate": "0.06935244", + "total": "0.09730732", + "tradeID": "5455033", + "type": "sell" }, { - "globalTradeID": 394126818, - "tradeID": "5455007", - "date": "2018-10-16 16:55:34", - "rate": "0.06935244", "amount": "0.00155709", - "total": "0.00010798", + "category": "exchange", + "date": "2018-10-16 16:55:34", "fee": "0.00200000", + "globalTradeID": 394126818, "orderNumber": "104768179137", - "type": "sell", - "category": "exchange" + "rate": "0.06935244", + "total": "0.00010798", + "tradeID": "5455007", + "type": "sell" } ], "BTC_STR": [ { - "globalTradeID": 394127362, - "tradeID": "13536351", - "date": "2018-10-16 17:03:43", - "rate": "0.00003432", "amount": "3696.05342780", - "total": "0.12684855", + "category": "exchange", + "date": "2018-10-16 17:03:43", "fee": "0.00200000", + "globalTradeID": 394127362, "orderNumber": "96238912841", - "type": "buy", - "category": "exchange" + "rate": "0.00003432", + "total": "0.12684855", + "tradeID": "13536351", + "type": "buy" }, { - "globalTradeID": 394127361, - "tradeID": "13536350", - "date": "2018-10-16 17:03:43", - "rate": "0.00003432", "amount": "3600.53748129", - "total": "0.12357044", + "category": "exchange", + "date": "2018-10-16 17:03:43", "fee": "0.00200000", + "globalTradeID": 394127361, "orderNumber": "96238912841", - "type": "buy", - "category": "exchange" + "rate": "0.00003432", + "total": "0.12357044", + "tradeID": "13536350", + "type": "buy" } ] }, "queryString": "", - "bodyParams": "command=returnTradeHistory\u0026currencyPair=all\u0026limit=10000\u0026nonce=1560226172960887950", + "bodyParams": "command=returnTradeHistory\u0026currencyPair=all\u0026limit=10000\u0026nonce=1594157624217368007", "headers": { "Content-Type": [ "application/x-www-form-urlencoded" @@ -9000,19 +9097,39 @@ "" ], "Sign": [ - "1b044c268e1ae4ddc9573a30b10d8ac4761e7e7f771a71397a168dfa54bcfe970c3a90103812e9070bde5616261d6e07ce372138a0ad27e7a315858298417aed" + "e09560799c777afcb2ba38b6975dd99b8669b1be5247b426e1bb48cb8ca04be4d2d6d6b2bd30fa7568bd96e6e468e2b469a1f1b8eb9ca305d6f188b02ef63242" + ] + } + }, + { + "data": { + "amount": "50.00000000", + "message": "Order #1 canceled.", + "success": 1 + }, + "queryString": "", + "bodyParams": "command=cancelOrder\u0026nonce=1594157624217368008\u0026orderNumber=1", + "headers": { + "Content-Type": [ + "application/x-www-form-urlencoded" + ], + "Key": [ + "" + ], + "Sign": [ + "db30a451e3277242dd56ba0d0f73e1ca58b6b6891afbc8a5ae13c388a95ffd6ae6f6e63d0b6915e481f35bfcc84b3c73395666f28e76912c7178a440d46de43c" ] } }, { "data": { "makerFee": "0.00150000", + "nextTier": 25000, "takerFee": "0.00250000", - "thirtyDayVolume": "0.00000000", - "nextTier": 25000 + "thirtyDayVolume": "0.00000000" }, "queryString": "", - "bodyParams": "command=returnFeeInfo\u0026nonce=1560227050375298330", + "bodyParams": "command=returnFeeInfo\u0026nonce=1594157624217368010", "headers": { "Content-Type": [ "application/x-www-form-urlencoded" @@ -9021,7 +9138,7 @@ "" ], "Sign": [ - "d2a6e9fd6365cac63b778006c7fd8afe9473c4d4002a15ca915addd6c6b04101eaec7541397a5f2ccc102937453a5098ac51c062416b8d5fe273e5c88e2a31c2" + "09c436ba3cbb06aa182ea43f85e368258d3da18fc948ca980d431cf2779f7626226129ce3482ebbeb7a0804c1b0a1155a977d6f79fff5fadedb2199f900d6a07" ] } }