From b7d0fcf68b8f31dac22a63f040c2186bf2f77971 Mon Sep 17 00:00:00 2001 From: Yaser Date: Thu, 13 Aug 2026 20:00:11 +0330 Subject: [PATCH] Initial commit --- .babelrc | 6 + .dockerignore | 3 + .domains.example | 1 + .drone.yml | 204 + .gitattributes | 1 + .gitignore | 31 + .nvmrc | 1 + .prettierrc | 21 + .stylelintrc.json | 15 + .yarnclean | 45 + Dockerfile | 35 + Dockerfile.deps | 20 + LICENSE.md | 141 + README.md | 248 + VERSION | 1 + __mocks__/fileMock.js | 1 + __mocks__/styleMock.js | 1 + capacitor.config.json | 20 + config-overrides.js | 55 + cypress.json | 9 + docs/basic_customization.html.md | 112 + docs/releases/2.1.0.md | 18 + docs/releases/2.2.0.md | 12 + docs/roadmap.md | 23 + images.d.ts | 3 + ionic.config.json | 7 + jest.config.js | 38 + mocks/api/v2/applogic/customization/GET.mock | 10 + .../v2/applogic/customization/OPTIONS.mock | 4 + mocks/api/v2/applogic/customization/POST.mock | 8 + mocks/api/v2/dalan/identity/configs/GET.mock | 12 + mocks/api/v2/dalan/identity/ping/GET.mock | 9 + .../v2/dalan/identity/sessions/DELETE.mock | 5 + .../v2/dalan/identity/sessions/OPTIONS.mock | 6 + .../POST--email=&password=&otp_code=.mock | 8 + ...=accountant@barong.io&password=123123.mock | 14 + ...=123123&otp_code=&recaptcha_response=.mock | 15 + ...e@barong.io&password=123123&otp_code=.mock | 14 + ...=123123&otp_code=&recaptcha_response=.mock | 7 + ...3&otp_code=123456&recaptcha_response=.mock | 15 + ...n@barong.io&password=123123&otp_code=.mock | 14 + ...t@barong.io&password=123123&otp_code=.mock | 14 + ...peatio.tech&password=123123&otp_code=.mock | 14 + ...n@barong.io&password=123123&otp_code=.mock | 14 + ...=123123&otp_code=&recaptcha_response=.mock | 15 + ...=123123&otp_code=&recaptcha_response=.mock | 15 + ...=123123&otp_code=&recaptcha_response=.mock | 8 + .../api/v2/dalan/identity/sessions/POST.mock | 82 + .../api/v2/dalan/identity/users/OPTIONS.mock | 6 + mocks/api/v2/dalan/identity/users/POST.mock | 25 + .../users/email/generate_code/OPTIONS.mock | 6 + .../POST--email=wrong@email.com.mock | 8 + .../users/email/generate_code/POST.mock | 6 + .../users/password/confirm_code/OPTIONS.mock | 6 + .../users/password/confirm_code/POST.mock | 6 + .../users/password/generate_code/OPTIONS.mock | 6 + .../users/password/generate_code/POST.mock | 6 + .../identity/users/register_geetest/GET.mock | 10 + .../api_keys/GET--page=1&limit=4.mock | 39 + .../api_keys/GET--page=2&limit=4.mock | 15 + .../api_keys/GET--page=5&limit=1.mock | 15 + .../resource/api_keys/GET--totp_code=.mock | 8 + mocks/api/v2/dalan/resource/api_keys/GET.mock | 47 + .../v2/dalan/resource/api_keys/OPTIONS.mock | 4 + .../POST--totp_code=&algorithm=HS256.mock | 9 + .../api/v2/dalan/resource/api_keys/POST.mock | 15 + .../api_keys/__/DELETE--totp_code=.mock | 9 + .../v2/dalan/resource/api_keys/__/DELETE.mock | 5 + .../dalan/resource/api_keys/__/OPTIONS.mock | 5 + ...ATCH--totp_code=000000&state=disabled.mock | 9 + .../v2/dalan/resource/api_keys/__/PATCH.mock | 14 + .../api/v2/dalan/resource/documents/POST.mock | 7 + mocks/api/v2/dalan/resource/labels/GET.mock | 28 + mocks/api/v2/dalan/resource/labels/GET03.mock | 57 + mocks/api/v2/dalan/resource/labels/GET1.mock | 49 + .../v2/dalan/resource/otp/enable/OPTIONS.mock | 4 + .../otp/enable/POST--code=0000000.mock | 9 + .../v2/dalan/resource/otp/enable/POST.mock | 7 + .../resource/otp/generate_qrcode/OPTIONS.mock | 4 + .../resource/otp/generate_qrcode/POST.mock | 7 + .../api/v2/dalan/resource/phones/OPTIONS.mock | 4 + .../phones/POST--phone_number=+1111.mock | 7 + .../phones/POST--phone_number=+1234.mock | 7 + .../resource/phones/send_code/OPTIONS.mock | 4 + .../dalan/resource/phones/send_code/POST.mock | 7 + .../dalan/resource/phones/verify/OPTIONS.mock | 4 + .../v2/dalan/resource/phones/verify/POST.mock | 7 + .../v2/dalan/resource/profiles/OPTIONS.mock | 4 + .../api/v2/dalan/resource/profiles/POST.mock | 7 + .../users/activity/GET--limit=25&page=1.mock | 260 + .../users/activity/GET--limit=25&page=2.mock | 38 + .../activity/all/GET--limit=10&page=1.mock | 109 + .../activity/all/GET--limit=10&page=2.mock | 110 + .../activity/all/GET--limit=10&page=3.mock | 90 + .../activity/all/GET--limit=25&page=1.mock | 261 + .../activity/all/GET--limit=25&page=2.mock | 38 + .../resource/users/activity/all/GET.mock | 4 + .../resource/users/activity/all/OPTIONS.mock | 4 + mocks/api/v2/dalan/resource/users/me/GET.mock | 65 + .../api/v2/dalan/resource/users/me/GET1.mock | 81 + .../v2/dalan/resource/users/me/OPTIONS.mock | 4 + mocks/api/v2/dalan/resource/users/me/PUT.mock | 83 + .../resource/users/password/OPTIONS.mock | 4 + ...rd=11111111&confirm_password=11111111.mock | 6 + .../v2/dalan/resource/users/password/PUT.mock | 8 + mocks/api/v2/dena/account/balances/GET.mock | 84 + .../api/v2/dena/account/balances/OPTIONS.mock | 5 + .../api/v2/dena/account/balances/bch/GET.mock | 17 + .../v2/dena/account/balances/bch/OPTIONS.mock | 6 + .../api/v2/dena/account/balances/btc/GET.mock | 17 + .../v2/dena/account/balances/btc/OPTIONS.mock | 5 + .../v2/dena/account/balances/dash/GET.mock | 17 + .../dena/account/balances/dash/OPTIONS.mock | 5 + .../api/v2/dena/account/balances/eth/GET.mock | 17 + .../v2/dena/account/balances/eth/OPTIONS.mock | 5 + .../api/v2/dena/account/balances/eur/GET.mock | 12 + .../v2/dena/account/balances/eur/OPTIONS.mock | 5 + .../api/v2/dena/account/balances/irt/GET.mock | 12 + .../v2/dena/account/balances/irt/OPTIONS.mock | 6 + .../api/v2/dena/account/balances/ltc/GET.mock | 17 + .../v2/dena/account/balances/ltc/OPTIONS.mock | 5 + .../api/v2/dena/account/balances/usd/GET.mock | 12 + .../v2/dena/account/balances/usd/OPTIONS.mock | 5 + .../api/v2/dena/account/balances/xrp/GET.mock | 12 + .../v2/dena/account/balances/xrp/OPTIONS.mock | 5 + .../api/v2/dena/account/balances/zar/GET.mock | 12 + .../v2/dena/account/balances/zar/OPTIONS.mock | 5 + .../dena/account/beneficiaries/10/DELETE.mock | 7 + .../account/beneficiaries/10/OPTIONS.mock | 6 + .../beneficiaries/10/activate/OPTIONS.mock | 6 + .../10/activate/PATCH--pin=111111&id=10.mock | 19 + .../beneficiaries/10/activate/PATCH.mock | 20 + .../beneficiaries/10/activate/POST.mock | 20 + .../beneficiaries/10/resend_pin/OPTIONS.mock | 6 + .../10/resend_pin/PATCH--id=10.mock | 9 + .../beneficiaries/10/resend_pin/PATCH.mock | 9 + .../v2/dena/account/beneficiaries/GET.mock | 18 + .../dena/account/beneficiaries/OPTIONS.mock | 6 + ...urrency=btc&name=111&data.address=111.mock | 19 + .../v2/dena/account/beneficiaries/POST.mock | 20 + .../dena/account/deposit_address/bch/GET.mock | 12 + .../account/deposit_address/bch/OPTIONS.mock | 6 + .../dena/account/deposit_address/btc/GET.mock | 12 + .../account/deposit_address/btc/OPTIONS.mock | 5 + .../account/deposit_address/dash/GET.mock | 12 + .../account/deposit_address/dash/OPTIONS.mock | 5 + .../dena/account/deposit_address/eth/GET.mock | 12 + .../account/deposit_address/eth/OPTIONS.mock | 5 + .../dena/account/deposit_address/ltc/GET.mock | 12 + .../account/deposit_address/ltc/OPTIONS.mock | 5 + .../dena/account/deposit_address/xrp/GET.mock | 12 + .../account/deposit_address/xrp/OPTIONS.mock | 5 + .../GET--limit=1¤cy=btc&page=7.mock | 21 + .../dena/account/deposits/GET--limit=100.mock | 319 + .../GET--limit=6¤cy=btc&page=1.mock | 71 + .../GET--limit=6¤cy=btc&page=2.mock | 41 + .../deposits/GET--page=1&limit=25.mock | 266 + .../deposits/GET--page=2&limit=25.mock | 41 + mocks/api/v2/dena/account/deposits/GET.mock | 319 + .../api/v2/dena/account/deposits/OPTIONS.mock | 5 + ...t_date=2019-04-01&end_date=2019-04-08.mock | 165 + ...GET--currency=btc&sort=date&order=asc.mock | 151 + ...t_date=2019-04-01&end_date=2019-04-08.mock | 151 + ...ET--currency=btc&sort=date&order=desc.mock | 151 + ...t_date=2019-04-01&end_date=2019-04-08.mock | 151 + ...draw¤cy=btc&sort=date&order=asc.mock | 151 + ...t_date=2019-04-01&end_date=2019-04-08.mock | 151 + ...raw¤cy=btc&sort=date&order=desc.mock | 151 + ...t_date=2019-04-01&end_date=2019-04-08.mock | 165 + ...rade¤cy=btc&sort=date&order=asc.mock | 151 + ...t_date=2019-04-01&end_date=2019-04-08.mock | 165 + ...ade¤cy=btc&sort=date&order=desc.mock | 151 + ...it=5¤cy=btc&sort=date&order=asc.mock | 81 + ...t=5¤cy=btc&sort=date&order=desc.mock | 81 + mocks/api/v2/dena/account/history/GET.mock | 275 + .../api/v2/dena/account/history/OPTIONS.mock | 5 + mocks/api/v2/dena/account/levels/GET.mock | 11 + mocks/api/v2/dena/account/levels/OPTIONS.mock | 5 + .../account/withdraws/GET--limit=100.mock | 640 + .../withdraws/GET--page=1&limit=25.mock | 361 + .../withdraws/GET--page=2&limit=25.mock | 54 + mocks/api/v2/dena/account/withdraws/GET.mock | 640 + .../v2/dena/account/withdraws/OPTIONS.mock | 6 + mocks/api/v2/dena/account/withdraws/POST.mock | 21 + .../GET--limit=25&page=2&state=wait.mock | 36 + .../GET--market=bchbtc&state=cancel.mock | 48 + .../orders/GET--market=bchbtc&state=done.mock | 48 + .../orders/GET--market=bchbtc&state=wait.mock | 48 + .../market/orders/GET--market=bchbtc.mock | 48 + .../GET--market=bchzar&state=cancel.mock | 48 + .../orders/GET--market=bchzar&state=done.mock | 48 + .../orders/GET--market=bchzar&state=wait.mock | 48 + .../market/orders/GET--market=bchzar.mock | 48 + .../GET--market=btczar&state=cancel.mock | 48 + .../orders/GET--market=btczar&state=done.mock | 48 + .../orders/GET--market=btczar&state=wait.mock | 48 + .../market/orders/GET--market=btczar.mock | 48 + .../GET--market=dashbtc&state=cancel.mock | 48 + .../GET--market=dashbtc&state=done.mock | 48 + .../GET--market=dashbtc&state=wait.mock | 48 + .../market/orders/GET--market=dashbtc.mock | 48 + .../GET--market=dashzar&state=cancel.mock | 48 + .../GET--market=dashzar&state=done.mock | 48 + .../GET--market=dashzar&state=wait.mock | 48 + .../market/orders/GET--market=dashzar.mock | 48 + .../GET--market=ethbtc&state=cancel.mock | 48 + .../orders/GET--market=ethbtc&state=done.mock | 48 + .../orders/GET--market=ethbtc&state=wait.mock | 48 + .../market/orders/GET--market=ethbtc.mock | 48 + .../GET--market=ethusd&state=cancel.mock | 37 + .../orders/GET--market=ethusd&state=done.mock | 37 + .../orders/GET--market=ethusd&state=wait.mock | 37 + .../market/orders/GET--market=ethusd.mock | 37 + .../GET--market=ethzar&state=cancel.mock | 48 + .../orders/GET--market=ethzar&state=done.mock | 48 + .../orders/GET--market=ethzar&state=wait.mock | 48 + .../market/orders/GET--market=ethzar.mock | 48 + .../GET--market=eurusd&state=cancel.mock | 48 + .../orders/GET--market=eurusd&state=done.mock | 48 + .../orders/GET--market=eurusd&state=wait.mock | 48 + .../market/orders/GET--market=eurusd.mock | 48 + .../GET--market=ltcbtc&state=cancel.mock | 48 + .../orders/GET--market=ltcbtc&state=done.mock | 48 + .../orders/GET--market=ltcbtc&state=wait.mock | 48 + .../market/orders/GET--market=ltcbtc.mock | 48 + .../GET--market=ltczar&state=cancel.mock | 48 + .../orders/GET--market=ltczar&state=done.mock | 48 + .../orders/GET--market=ltczar&state=wait.mock | 48 + .../market/orders/GET--market=ltczar.mock | 48 + .../GET--market=xrpbtc&state=cancel.mock | 48 + .../orders/GET--market=xrpbtc&state=done.mock | 48 + .../orders/GET--market=xrpbtc&state=wait.mock | 48 + .../market/orders/GET--market=xrpbtc.mock | 48 + .../GET--market=xrpzar&state=cancel.mock | 48 + .../orders/GET--market=xrpzar&state=done.mock | 48 + .../orders/GET--market=xrpzar&state=wait.mock | 48 + .../market/orders/GET--market=xrpzar.mock | 48 + .../GET--page=1&limit=25&state=wait.mock | 34 + .../market/orders/GET--page=1&limit=25.mock | 358 + .../market/orders/GET--page=2&limit=25.mock | 50 + mocks/api/v2/dena/market/orders/GET.mock | 22 + mocks/api/v2/dena/market/orders/OPTIONS.mock | 6 + ...c&side=buy&volume=0.5&ord_type=market.mock | 24 + ...c&side=buy&volume=1.5&ord_type=market.mock | 24 + ...sell&volume=2&ord_type=limit&price=20.mock | 23 + ...d&side=buy&volume=0.5&ord_type=market.mock | 24 + ...=buy&volume=1&ord_type=limit&price=10.mock | 23 + ...sd&side=sell&volume=1&ord_type=market.mock | 23 + ...sell&volume=2&ord_type=limit&price=20.mock | 24 + mocks/api/v2/dena/market/orders/POST.mock | 24 + .../dena/market/orders/__/cancel/OPTIONS.mock | 6 + .../v2/dena/market/orders/__/cancel/POST.mock | 6 + .../v2/dena/market/orders/cancel/OPTIONS.mock | 5 + .../v2/dena/market/orders/cancel/POST.mock | 49 + .../market/trades/--GET--page=1&limit=25.mock | 17 + .../market/trades/GET--market=bchzar.mock | 159 + .../market/trades/GET--market=btczar.mock | 159 + .../market/trades/GET--market=dashbtc.mock | 196 + .../market/trades/GET--market=ethbtc.mock | 459 + .../market/trades/GET--market=eurusd.mock | 8 + .../market/trades/GET--page=1&limit=25.mock | 24 + mocks/api/v2/dena/market/trades/GET.mock | 10 + mocks/api/v2/dena/market/trades/OPTIONS.mock | 5 + mocks/api/v2/dena/public/currencies/GET.mock | 190 + mocks/api/v2/dena/public/markets/GET.mock | 80 + mocks/api/v2/dena/public/markets/OPTIONS.mock | 5 + .../dena/public/markets/bchzar/depth/GET.mock | 8 + .../public/markets/bchzar/depth/OPTIONS.mock | 5 + .../public/markets/bchzar/depth/script.js | 26 + .../public/markets/bchzar/k-line/GET.mock | 8 + .../public/markets/bchzar/k-line/OPTIONS.mock | 5 + .../public/markets/bchzar/trades/GET.mock | 19 + .../public/markets/bchzar/trades/OPTIONS.mock | 5 + .../dena/public/markets/btczar/depth/GET.mock | 8 + .../public/markets/btczar/depth/OPTIONS.mock | 5 + .../public/markets/btczar/depth/script.js | 26 + .../public/markets/btczar/k-line/GET.mock | 8 + .../public/markets/btczar/k-line/OPTIONS.mock | 5 + .../public/markets/btczar/trades/GET.mock | 39 + .../public/markets/btczar/trades/OPTIONS.mock | 5 + .../public/markets/dashbtc/depth/GET.mock | 8 + .../public/markets/dashbtc/depth/OPTIONS.mock | 5 + .../public/markets/dashbtc/depth/script.js | 26 + .../public/markets/dashbtc/k-line/GET.mock | 8 + .../markets/dashbtc/k-line/OPTIONS.mock | 5 + .../public/markets/dashbtc/trades/GET.mock | 109 + .../markets/dashbtc/trades/OPTIONS.mock | 5 + .../dena/public/markets/ethbtc/depth/GET.mock | 8 + .../public/markets/ethbtc/depth/OPTIONS.mock | 5 + .../public/markets/ethbtc/depth/script.js | 26 + .../public/markets/ethbtc/k-line/GET.mock | 8 + .../public/markets/ethbtc/k-line/OPTIONS.mock | 5 + .../public/markets/ethbtc/trades/GET.mock | 109 + .../public/markets/ethbtc/trades/OPTIONS.mock | 5 + .../dena/public/markets/eurusd/depth/GET.mock | 31 + .../public/markets/eurusd/depth/OPTIONS.mock | 6 + .../public/markets/eurusd/k-line/GET.mock | 8 + .../public/markets/eurusd/k-line/OPTIONS.mock | 5 + .../public/markets/eurusd/trades/GET.mock | 108 + .../public/markets/eurusd/trades/OPTIONS.mock | 5 + mocks/api/v2/dena/public/markets/k-line.js | 50 + .../v2/dena/public/markets/tickers/GET.mock | 8 + .../dena/public/markets/tickers/OPTIONS.mock | 5 + .../v2/dena/public/markets/tickers/script.js | 172 + .../api/v2/dena/public/member-levels/GET.mock | 18 + .../v2/dena/public/member-levels/OPTIONS.mock | 5 + mocks/api/v2/dena/swagger/GET.mock | 3303 ++++ mocks/api/v2/finex/public/markets/GET.mock | 113 + .../api/v2/finex/public/markets/OPTIONS.mock | 6 + mocks/helpers.js | 127 + mocks/markets.js | 7 + mocks/mockAPI.js | 27 + mocks/mockWS.js | 22 + mocks/mockserver.js | 357 + mocks/ranger.js | 281 + nginx.conf | 58 + package.json | 163 + postcss.config.js | 11 + .../charting_library.min.d.ts | 1520 ++ .../charting_library/charting_library.min.js | 1 + public/charting_library/datafeed-api.d.ts | 225 + .../ar-tv-chart.8562c7b8f7bdb50c1f5d.html | 111 + .../static/bundles/0.1d4cbcaddbec7d8c5363.js | 2 + .../static/bundles/1.2fa13f88d2bf6ae6f3f0.css | 1 + .../bundles/1.2fa13f88d2bf6ae6f3f0.rtl.css | 1 + .../static/bundles/1.ea828ac684caa2b94a1b.js | 1 + .../static/bundles/10.0501e55a3ef6aa50aec6.js | 1 + .../bundles/10.c0a8664f16f3834961e4.css | 1 + .../bundles/10.c0a8664f16f3834961e4.rtl.css | 1 + .../bundles/11.b900b9cb8ed6dd3bc321.css | 1 + .../bundles/11.b900b9cb8ed6dd3bc321.rtl.css | 1 + .../static/bundles/11.dd520838f92e45cd91e3.js | 1 + .../static/bundles/12.18e3c4b9c329e737cb80.js | 1 + .../bundles/12.87f9777d9fe2086ce090.css | 1 + .../bundles/12.87f9777d9fe2086ce090.rtl.css | 1 + .../static/bundles/13.46f312828e93b6546d0c.js | 3 + .../static/bundles/14.579d7892443d1a90180c.js | 4 + .../static/bundles/15.19c5212d15382007773d.js | 6 + .../bundles/16.cc58f582c191485d9392.css | 1 + .../bundles/16.cc58f582c191485d9392.rtl.css | 1 + .../static/bundles/16.e0d00f8a564954896734.js | 1 + .../static/bundles/17.00b04a06a8cd9c6f5f6c.js | 5 + .../bundles/18.183d41ade16dae257526.css | 1 + .../bundles/18.183d41ade16dae257526.rtl.css | 1 + .../static/bundles/18.e4c458360dbad4de5cf6.js | 1 + .../bundles/19.aba848e28ec755548668.css | 1 + .../bundles/19.aba848e28ec755548668.rtl.css | 1 + .../static/bundles/19.c5542d290eefbb001433.js | 1 + .../static/bundles/2.195070ea59b3395625da.js | 1 + .../static/bundles/2.a3e34146d368d13b6bc1.css | 1 + .../bundles/2.a3e34146d368d13b6bc1.rtl.css | 1 + .../static/bundles/20.2416da4fc4c075b56691.js | 1 + .../bundles/20.f75162343321d7d9178c.css | 1 + .../bundles/20.f75162343321d7d9178c.rtl.css | 1 + .../bundles/21.7e987db0ed47cc3f789c.css | 1 + .../bundles/21.7e987db0ed47cc3f789c.rtl.css | 1 + .../static/bundles/21.fc856808959a5b8734f7.js | 1 + .../static/bundles/22.c118eafc7686081984c8.js | 1 + .../bundles/22.f31ebffc8672752a2d4b.css | 1 + .../bundles/22.f31ebffc8672752a2d4b.rtl.css | 1 + .../bundles/23.7c4be219df640cb3880c.css | 1 + .../bundles/23.7c4be219df640cb3880c.rtl.css | 1 + .../static/bundles/23.e89d09694523563b8f86.js | 1 + .../static/bundles/24.319f9ed9725f3cea260a.js | 8 + .../static/bundles/25.15d449d35706e01821dd.js | 4 + .../static/bundles/26.16e9146c09ea7d6b839a.js | 3 + .../static/bundles/27.54aad15135c7ea57b345.js | 5 + .../static/bundles/28.3f2589cd73664ea3f3e3.js | 5 + .../static/bundles/29.6a6accc00e80feb13030.js | 4 + .../static/bundles/3.f41fdd1a128935b63e5b.js | 3 + .../static/bundles/30.c3cc90c5fbe9a2b87ffb.js | 2 + .../bundles/31.5c895c4f655400b0b4e2.css | 1 + .../bundles/31.5c895c4f655400b0b4e2.rtl.css | 1 + .../static/bundles/31.d081df3316799b489847.js | 1 + .../static/bundles/32.48df7a8cdc38d60b308b.js | 1 + .../bundles/32.b92773bfff0363a69bb9.css | 1 + .../bundles/32.b92773bfff0363a69bb9.rtl.css | 1 + .../static/bundles/33.4a74c62095be3045c87e.js | 1 + .../bundles/33.ac320c107772f8e72252.css | 1 + .../bundles/33.ac320c107772f8e72252.rtl.css | 1 + .../static/bundles/34.17e0ce399a577f17ba55.js | 1 + .../bundles/34.dd27b311326fd1fc6fde.css | 1 + .../bundles/34.dd27b311326fd1fc6fde.rtl.css | 1 + .../bundles/35.47b9d16b3fa10b495a11.css | 1 + .../bundles/35.47b9d16b3fa10b495a11.rtl.css | 1 + .../static/bundles/35.58433cec10095e3c1b7e.js | 1 + .../static/bundles/36.2ee80b40751fcc88a65c.js | 1 + .../bundles/36.e9a6bec06ee11d2c2d4a.css | 1 + .../bundles/36.e9a6bec06ee11d2c2d4a.rtl.css | 1 + .../bundles/37.065a5f2249aafcfe50ec.css | 1 + .../bundles/37.065a5f2249aafcfe50ec.rtl.css | 1 + .../static/bundles/37.1735365b01406a8d696d.js | 1 + .../bundles/38.4073381c29c4e2bc2209.css | 1 + .../bundles/38.4073381c29c4e2bc2209.rtl.css | 1 + .../static/bundles/38.9ae2eea9402c30aa3046.js | 1 + .../bundles/39.5f64b4bc2e263edfbf6e.css | 1 + .../bundles/39.5f64b4bc2e263edfbf6e.rtl.css | 1 + .../static/bundles/39.7e524b82ef9947f0f19f.js | 1 + .../static/bundles/4.80bf1a925965757be6d4.js | 4 + .../bundles/40.0f54f57304896d7506a2.css | 1 + .../bundles/40.0f54f57304896d7506a2.rtl.css | 1 + .../static/bundles/40.42bd9598272e9dd24457.js | 1 + .../static/bundles/41.11c024e8e0504741fd66.js | 1 + .../bundles/41.1dc91fcdd5dbde1247d7.css | 1 + .../bundles/41.1dc91fcdd5dbde1247d7.rtl.css | 1 + .../static/bundles/42.0491acaaf55887f7fcb3.js | 1 + .../bundles/42.db948a104cb86b7df06e.css | 1 + .../bundles/42.db948a104cb86b7df06e.rtl.css | 1 + .../bundles/43.12df9892872230fa2898.css | 1 + .../bundles/43.12df9892872230fa2898.rtl.css | 1 + .../static/bundles/43.4ae432f1b8259dbfd0e5.js | 1 + .../bundles/44.01ec30ff4ce8cf7fa8e5.css | 1 + .../bundles/44.01ec30ff4ce8cf7fa8e5.rtl.css | 1 + .../static/bundles/44.7aabc64d3dfb54c85d60.js | 1 + .../static/bundles/45.6c1fc3ac2f6063249f97.js | 1 + .../bundles/45.e09d2beed14ffd8995a9.css | 1 + .../bundles/45.e09d2beed14ffd8995a9.rtl.css | 1 + .../static/bundles/46.75a0e6fecbc3c92a6bc7.js | 1 + .../bundles/46.923fdbea563cd1d28d4c.css | 1 + .../bundles/46.923fdbea563cd1d28d4c.rtl.css | 1 + .../static/bundles/47.773635a99e184d6dc131.js | 1 + .../bundles/47.b48791ffffadc9c96a10.css | 1 + .../bundles/47.b48791ffffadc9c96a10.rtl.css | 1 + .../bundles/48.912258c9b4f11cd518c3.css | 1 + .../bundles/48.912258c9b4f11cd518c3.rtl.css | 1 + .../static/bundles/48.9d08141ee2d55bcad3e7.js | 1 + .../bundles/49.0cb5c561f3b28a047912.css | 1 + .../bundles/49.0cb5c561f3b28a047912.rtl.css | 1 + .../static/bundles/49.929acbc67c2613c57f58.js | 1 + .../static/bundles/5.1beaffde9123ffaeff74.js | 9 + .../static/bundles/50.2c50aad369bf63f77061.js | 1 + .../bundles/50.e2f9bc14536ad546e595.css | 1 + .../bundles/50.e2f9bc14536ad546e595.rtl.css | 1 + .../static/bundles/51.30c5804303a9f1c455e3.js | 1 + .../bundles/51.a35e4c0d0b08a018e307.css | 1 + .../bundles/51.a35e4c0d0b08a018e307.rtl.css | 1 + .../bundles/52.be1d70abe1a172cc5c3a.css | 1 + .../bundles/52.be1d70abe1a172cc5c3a.rtl.css | 1 + .../static/bundles/52.c212ca3684de16c6f115.js | 1 + .../bundles/53.3f6d736abe33683640bc.css | 1 + .../bundles/53.3f6d736abe33683640bc.rtl.css | 1 + .../static/bundles/53.7217742e39b70fc9d431.js | 1 + .../static/bundles/54.9eb4ca2a30197d95fe82.js | 1 + .../bundles/54.cf540e4ba48bf75e96c2.css | 1 + .../bundles/54.cf540e4ba48bf75e96c2.rtl.css | 1 + .../static/bundles/55.7707e6ae9f2ec8cfb656.js | 1 + .../bundles/55.c11884ad80d526214fb6.css | 1 + .../bundles/55.c11884ad80d526214fb6.rtl.css | 1 + .../static/bundles/56.83cd8456e872f49059c3.js | 1 + .../bundles/56.ea0c135a2b02b495fbb5.css | 1 + .../bundles/56.ea0c135a2b02b495fbb5.rtl.css | 1 + .../static/bundles/57.6384b62456dc4fed6ffb.js | 1 + .../bundles/57.651927021db01a7ed13f.css | 1 + .../bundles/57.651927021db01a7ed13f.rtl.css | 1 + .../static/bundles/58.8077d6b199609737b3d5.js | 1 + .../bundles/58.82b7bef062a290e587d4.css | 1 + .../bundles/58.82b7bef062a290e587d4.rtl.css | 1 + .../static/bundles/6.35dee0cfeb8a4d70732c.css | 1 + .../bundles/6.35dee0cfeb8a4d70732c.rtl.css | 1 + .../static/bundles/6.902d5f3923d45b49b876.js | 1 + .../static/bundles/7.e98fce2ffac2c552565f.css | 1 + .../bundles/7.e98fce2ffac2c552565f.rtl.css | 1 + .../static/bundles/7.fc0941206f7b7d32812d.js | 1 + .../static/bundles/8.180c6bdc716e5045b645.css | 1 + .../bundles/8.180c6bdc716e5045b645.rtl.css | 1 + .../static/bundles/8.62bd4ee21281906a7019.js | 1 + .../static/bundles/9.855edb9bea2352bd5129.js | 15 + ...add-compare-dialog.e9db1b14483f3e7358f4.js | 3 + ...ge-interval-dialog.c8c04c297cc329376f2b.js | 2 + ...art-bottom-toolbar.da7ac0cc35cc8a26f65a.js | 10 + .../chart-widget-gui.8005316cfc1f06be4bf0.js | 13 + .../bundles/clipboard.5403f9bd852af06addff.js | 4 + ...firm-inputs-dialog.f9823e95a365cd8974c9.js | 1 + ...ymbol-input-dialog.c72289c830292c73812f.js | 1 + ...text-menu-renderer.5eff9c34fa03e94b2c1b.js | 5 + .../create-dialog.472fe015128398f27a86.js | 6 + ...shair.6c091f7d5427d0c5e6d9dc3a90eb2b20.cur | Bin 0 -> 4286 bytes .../dialogs-core.c712826575e8ea62d8e0.js | 9 + .../dialogs-core.e9f630dd3fdeb4ceee21.css | 1 + .../dialogs-core.e9f630dd3fdeb4ceee21.rtl.css | 1 + .../dot.ed68e83c16f77203e73dbc4c3a7c7fa1.cur | Bin 0 -> 4286 bytes .../drawing-toolbar.35360bdf4aedb7db7287.js | 14 + .../ds-property-pages.33a0b54c87f584f79681.js | 79 + .../editobjectdialog.a4fd348616e0724542ac.js | 5 + ...raser.0579d40b812fa2c3ffe72e5803a6e14c.cur | Bin 0 -> 4286 bytes .../export-data.ea9e219d1d41389ea3b7.js | 1 + .../floating-toolbars.d7f25f59513991368767.js | 18 + ...font.3293616ec0c605c7c2db25829a0a509e.woff | Bin 0 -> 44432 bytes ...ont.40f9a03d174178efb12303caa9bc7cd8.woff2 | Bin 0 -> 35328 bytes ...o-date-dialog-impl.51162344726d8956c763.js | 7 + .../grab.bc156522a6b55a60be9fae15c14b66c5.cur | Bin 0 -> 4286 bytes ...bbing.1c0862a8a8c0fb02885557bc97fdafe7.cur | Bin 0 -> 4286 bytes .../bundles/hammerjs.46686dd839f22b742351.js | 7 + .../header-toolbar.743cca210a6a3e37939e.js | 7 + .../ie-fallback-logos.589046871bfa17cbfbda.js | 3 + .../lazy-jquery-ui.3a9fe36168ca8e6cacb8.js | 34 + .../lazy-velocity.d040cf1092d3b2920dde.js | 15 + .../bundles/library.bb7ca756e7cbe50becb3.css | 1 + .../library.bb7ca756e7cbe50becb3.rtl.css | 1 + .../bundles/library.e964cdc99937c68d0389.js | 621 + .../line-tools-icons.c89643eed013eb0ff7c1.js | 28 + .../load-chart-dialog.24806d5c5be9fbdfd103.js | 6 + .../lt-pane-views.e06093931461762ecd11.js | 79 + .../bundles/moment.fdf50ccef2c78863664d.js | 17 + ...edit-object-dialog.232c44a337440602cba4.js | 40 + .../objecttreedialog.bb84539d18c87a88a80b.js | 12 + ...ttern.a6506134daec7169f68f563f084a9d41.svg | 1 + ...nifest.60144109bbe17651b1eb050c29e4f6f4.js | 2 + .../bundles/react.cdaa9c19dda854fad341.js | 40 + ...restricted-toolset.e356a29caff335c91f6b.js | 19 + .../bundles/runtime.d22af752ee0c2111becd.js | 4 + .../series-icons-map.e3b746e7a7341e8ddb2d.js | 2 + .../series-pane-views.678a074c53e327c3184a.js | 1 + .../static/bundles/service-worker.js | 29 + .../study-market.ff409c6c02ba9edc0151.js | 14 + .../study-pane-views.ee901b6c4a31f84ba03d.js | 1 + ...dy-template-dialog.a6f710070f1f64f2ef11.js | 6 + ...l-info-dialog-impl.eaddb54cc066d7a021e2.js | 2 + .../symbolsearch.0057814b113bcee3d957.js | 10 + ...-image-dialog-impl.d61e03a87b11d0c1adf1.js | 5 + .../bundles/vendors.267dd414d71e078f822c.js | 95 + .../zoom.e21f24dd632c7069139bc47ae89c54b5.cur | Bin 0 -> 4286 bytes .../cs-tv-chart.8562c7b8f7bdb50c1f5d.html | 110 + .../da_DK-tv-chart.8562c7b8f7bdb50c1f5d.html | 110 + .../de-tv-chart.8562c7b8f7bdb50c1f5d.html | 111 + .../el-tv-chart.8562c7b8f7bdb50c1f5d.html | 110 + .../en-tv-chart.8562c7b8f7bdb50c1f5d.html | 111 + .../es-tv-chart.8562c7b8f7bdb50c1f5d.html | 111 + .../et_EE-tv-chart.8562c7b8f7bdb50c1f5d.html | 110 + .../fa-tv-chart.8562c7b8f7bdb50c1f5d.html | 111 + .../fr-tv-chart.8562c7b8f7bdb50c1f5d.html | 111 + .../he_IL-tv-chart.8562c7b8f7bdb50c1f5d.html | 111 + .../hu_HU-tv-chart.8562c7b8f7bdb50c1f5d.html | 111 + .../id_ID-tv-chart.8562c7b8f7bdb50c1f5d.html | 111 + .../static/images/balloon.png | Bin 0 -> 1142 bytes .../static/images/bar-loader.gif | Bin 0 -> 1933 bytes .../static/images/button-bg.png | Bin 0 -> 92 bytes .../logo-widget-copyright-faded.png | Bin 0 -> 932 bytes .../logo-widget-copyright.png | Bin 0 -> 516 bytes .../static/images/controlll.png | Bin 0 -> 3192 bytes .../static/images/delayed.png | Bin 0 -> 82 bytes .../static/images/dialogs/checkbox.png | Bin 0 -> 227 bytes .../static/images/dialogs/close-flat.png | Bin 0 -> 137 bytes .../images/dialogs/large-slider-handle.png | Bin 0 -> 501 bytes .../images/dialogs/linewidth-slider.png | Bin 0 -> 126 bytes .../static/images/dialogs/opacity-slider.png | Bin 0 -> 84 bytes .../charting_library/static/images/icons.png | Bin 0 -> 42138 bytes .../static/images/prediction-clock-black.png | Bin 0 -> 144 bytes .../static/images/prediction-clock-white.png | Bin 0 -> 160 bytes .../images/prediction-failure-white.png | Bin 0 -> 125 bytes .../images/prediction-success-white.png | Bin 0 -> 168 bytes .../static/images/price_label.png | Bin 0 -> 634 bytes .../static/images/select-bg.png | Bin 0 -> 318 bytes .../static/images/svg/chart/bucket2.svg | 1 + .../static/images/svg/chart/font.svg | 1 + .../images/svg/chart/large-slider-handle.svg | 1 + .../static/images/svg/chart/pencil2.svg | 1 + .../images/svg/question-mark-rounded.svg | 1 + .../images/tvcolorpicker-bg-gradient.png | Bin 0 -> 309 bytes .../static/images/tvcolorpicker-bg.png | Bin 0 -> 86 bytes .../static/images/tvcolorpicker-check.png | Bin 0 -> 268 bytes .../static/images/tvcolorpicker-sprite.png | Bin 0 -> 27936 bytes .../it-tv-chart.8562c7b8f7bdb50c1f5d.html | 111 + .../ja-tv-chart.8562c7b8f7bdb50c1f5d.html | 111 + .../ko-tv-chart.8562c7b8f7bdb50c1f5d.html | 111 + .../ms_MY-tv-chart.8562c7b8f7bdb50c1f5d.html | 111 + .../nl_NL-tv-chart.8562c7b8f7bdb50c1f5d.html | 110 + .../no-tv-chart.8562c7b8f7bdb50c1f5d.html | 110 + .../pl-tv-chart.8562c7b8f7bdb50c1f5d.html | 111 + .../pt-tv-chart.8562c7b8f7bdb50c1f5d.html | 111 + .../ro-tv-chart.8562c7b8f7bdb50c1f5d.html | 110 + .../ru-tv-chart.8562c7b8f7bdb50c1f5d.html | 111 + .../sk_SK-tv-chart.8562c7b8f7bdb50c1f5d.html | 110 + .../sv-tv-chart.8562c7b8f7bdb50c1f5d.html | 111 + .../th-tv-chart.8562c7b8f7bdb50c1f5d.html | 111 + .../tr-tv-chart.8562c7b8f7bdb50c1f5d.html | 111 + .../vi-tv-chart.8562c7b8f7bdb50c1f5d.html | 111 + .../zh-tv-chart.8562c7b8f7bdb50c1f5d.html | 111 + .../zh_TW-tv-chart.8562c7b8f7bdb50c1f5d.html | 111 + public/css/theme.css | 6 + public/css/tradingview.css | 7 + public/datafeeds/README.md | 3 + public/datafeeds/udf/.npmrc | 1 + public/datafeeds/udf/README.md | 46 + public/datafeeds/udf/dist/bundle.js | 1 + public/datafeeds/udf/dist/polyfills.js | 1 + .../datafeeds/udf/lib/data-pulse-provider.js | 107 + public/datafeeds/udf/lib/helpers.js | 20 + public/datafeeds/udf/lib/history-provider.js | 67 + public/datafeeds/udf/lib/iquotes-provider.js | 0 public/datafeeds/udf/lib/quotes-provider.js | 28 + .../udf/lib/quotes-pulse-provider.js | 51 + public/datafeeds/udf/lib/requester.js | 30 + public/datafeeds/udf/lib/symbols-storage.js | 174 + .../udf/lib/udf-compatible-datafeed-base.js | 243 + .../udf/lib/udf-compatible-datafeed.js | 17 + public/datafeeds/udf/package.json | 20 + public/datafeeds/udf/rollup.config.js | 39 + .../datafeeds/udf/src/data-pulse-provider.js | 107 + .../datafeeds/udf/src/data-pulse-provider.ts | 144 + public/datafeeds/udf/src/helpers.js | 20 + public/datafeeds/udf/src/helpers.ts | 38 + public/datafeeds/udf/src/history-provider.js | 67 + public/datafeeds/udf/src/history-provider.ts | 120 + public/datafeeds/udf/src/iquotes-provider.js | 0 public/datafeeds/udf/src/iquotes-provider.ts | 14 + public/datafeeds/udf/src/polyfills.es6 | 2 + public/datafeeds/udf/src/quotes-provider.js | 28 + public/datafeeds/udf/src/quotes-provider.ts | 37 + .../udf/src/quotes-pulse-provider.js | 51 + .../udf/src/quotes-pulse-provider.ts | 85 + public/datafeeds/udf/src/requester.js | 30 + public/datafeeds/udf/src/requester.ts | 39 + public/datafeeds/udf/src/symbols-storage.js | 174 + public/datafeeds/udf/src/symbols-storage.ts | 274 + .../udf/src/udf-compatible-datafeed-base.js | 243 + .../udf/src/udf-compatible-datafeed-base.ts | 355 + .../udf/src/udf-compatible-datafeed.js | 17 + .../udf/src/udf-compatible-datafeed.ts | 11 + public/datafeeds/udf/tsconfig.json | 25 + public/favicon.ico | Bin 0 -> 1150 bytes public/img/android-chrome-192x192.png | Bin 0 -> 4287 bytes public/img/android-chrome-512x512.png | Bin 0 -> 15056 bytes public/img/apple-touch-icon.png | Bin 0 -> 4175 bytes public/img/favicon-16x16.png | Bin 0 -> 902 bytes public/img/favicon-32x32.png | Bin 0 -> 1362 bytes public/img/faviconApp.ico | Bin 0 -> 15086 bytes public/img/mstile-150x150.png | Bin 0 -> 3763 bytes public/index.html | 22 + public/manifest.json | 45 + robots.txt | 0 scripts/build.sh | 7 + scripts/validate_commit.js | 32 + scripts/verify-security-pins.ps1 | 47 + scripts/verify-security-pins.sh | 74 + spec/fixtures/example.json | 5 + spec/fixtures/profile.json | 5 + spec/fixtures/users.json | 232 + spec/integration/login_spec.js | 13 + spec/plugins/index.js | 17 + spec/support/commands.js | 25 + spec/support/index.js | 25 + src/App.test.tsx | 20 + src/App.tsx | 103 + src/api/config.ts | 64 + src/api/index.ts | 64 + src/api/requestBuilder.ts | 113 + src/api/tests/requestBuilder.test.ts | 123 + src/api/types.ts | 39 + src/assets/images/AddIcon.svg | 11 + src/assets/images/BackgroundMaintenance.tsx | 23 + src/assets/images/ChevronIcon.tsx | 11 + src/assets/images/ClockIcon.tsx | 11 + src/assets/images/CloseIcon.tsx | 14 + src/assets/images/CorrectSelfie1.png | Bin 0 -> 66796 bytes src/assets/images/CorrectSelfie2.png | Bin 0 -> 58612 bytes src/assets/images/LetterIcon.tsx | 13 + src/assets/images/LockIcon.tsx | 11 + src/assets/images/LockedIcon.tsx | 11 + src/assets/images/Logo-dark.svg | 7 + src/assets/images/LogoIcon.tsx | 25 + src/assets/images/LogoWhite.svg | 7 + src/assets/images/LogoutIcon.tsx | 20 + src/assets/images/MetaMaskLogo.tsx | 44 + src/assets/images/Moon.tsx | 9 + src/assets/images/NavBarIcons.tsx | 25 + src/assets/images/PendingIcon.tsx | 15 + src/assets/images/PlusIcon.tsx | 13 + src/assets/images/RejectedIcon.tsx | 11 + src/assets/images/SearchFieldCloseIcon.tsx | 14 + src/assets/images/SortIcons.tsx | 28 + src/assets/images/SuccessfulIcon.tsx | 16 + src/assets/images/Sun.tsx | 18 + src/assets/images/TipIcon.tsx | 11 + src/assets/images/TrashBin.tsx | 12 + src/assets/images/TrashIcon.tsx | 17 + src/assets/images/Type-dark.svg | 10 + src/assets/images/Type-white.svg | 10 + src/assets/images/UnSuccessfulIcon.tsx | 15 + src/assets/images/X-dark.svg | 6 + src/assets/images/X-white.svg | 6 + src/assets/images/background.svg | 3 + src/assets/images/ceo.jpg | Bin 0 -> 21811 bytes src/assets/images/chart.svg | 132 + src/assets/images/customization/ArrowIcon.tsx | 9 + .../images/customization/PaletteIcon.tsx | 9 + .../images/customization/SettingsIcon.tsx | 9 + src/assets/images/hide-password.svg | 9 + src/assets/images/kyc/CheckBigIcon.tsx | 9 + src/assets/images/kyc/CheckIcon.tsx | 9 + src/assets/images/kyc/ClocksIcon.tsx | 9 + src/assets/images/kyc/CrossIcon.tsx | 20 + src/assets/images/kyc/DocumentBackExample.svg | 9 + .../images/kyc/DocumentFrontExample.svg | 15 + .../images/kyc/DocumentSelfieExample.svg | 13 + src/assets/images/kyc/InfoIcon.tsx | 15 + src/assets/images/kyc/TipIcon.tsx | 11 + src/assets/images/landing/GridMainBG.svg | 28 + src/assets/images/landing/GridSecondBG.svg | 25 + src/assets/images/landing/LogoIcon.tsx | 16 + src/assets/images/landing/PhoneImage.svg | 59 + src/assets/images/landing/TradingUIFullBG.png | Bin 0 -> 451712 bytes .../images/landing/features/API-old.svg | 6 + src/assets/images/landing/features/API.svg | 19 + .../images/landing/features/Bitcoin.svg | 11 + .../images/landing/features/Community.svg | 5 + .../images/landing/features/Customize.svg | 5 + .../images/landing/features/Exchange.svg | 10 + src/assets/images/landing/features/Fee.svg | 25 + .../images/landing/features/Security.svg | 10 + src/assets/images/landing/features/Types.svg | 9 + src/assets/images/landing/headerIMG.png | Bin 0 -> 140500 bytes src/assets/images/landing/headerIMG.svg | 247 + .../images/landing/social/CoinMarket.svg | 3 + src/assets/images/landing/social/Facebook.svg | 3 + src/assets/images/landing/social/LinkedIn.svg | 3 + src/assets/images/landing/social/Medium.svg | 3 + src/assets/images/landing/social/Reddit.svg | 7 + src/assets/images/landing/social/Telegram.svg | 3 + src/assets/images/landing/social/Twitter.svg | 3 + src/assets/images/landing/social/YouTube.svg | 4 + src/assets/images/landing/tradeAnywhere.svg | 9 + src/assets/images/openwareLogo.svg | 24 + src/assets/images/show-password.svg | 9 + src/assets/images/sidebar/LogoutIcon.tsx | 14 + src/assets/images/sidebar/ProfileIcon.tsx | 13 + src/assets/images/sidebar/SidebarIcons.tsx | 78 + src/assets/images/sidebar/en.svg | 52 + src/assets/images/sidebar/ru.svg | 10 + .../charting_library.min.d.ts | 1520 ++ src/charting_library/charting_library.min.js | 1 + src/charting_library/datafeed-api.d.ts | 225 + .../ar-tv-chart.8562c7b8f7bdb50c1f5d.html | 111 + .../static/bundles/0.1d4cbcaddbec7d8c5363.js | 2 + .../static/bundles/1.2fa13f88d2bf6ae6f3f0.css | 1 + .../bundles/1.2fa13f88d2bf6ae6f3f0.rtl.css | 1 + .../static/bundles/1.ea828ac684caa2b94a1b.js | 1 + .../static/bundles/10.0501e55a3ef6aa50aec6.js | 1 + .../bundles/10.c0a8664f16f3834961e4.css | 1 + .../bundles/10.c0a8664f16f3834961e4.rtl.css | 1 + .../bundles/11.b900b9cb8ed6dd3bc321.css | 1 + .../bundles/11.b900b9cb8ed6dd3bc321.rtl.css | 1 + .../static/bundles/11.dd520838f92e45cd91e3.js | 1 + .../static/bundles/12.18e3c4b9c329e737cb80.js | 1 + .../bundles/12.87f9777d9fe2086ce090.css | 1 + .../bundles/12.87f9777d9fe2086ce090.rtl.css | 1 + .../static/bundles/13.46f312828e93b6546d0c.js | 3 + .../static/bundles/14.579d7892443d1a90180c.js | 4 + .../static/bundles/15.19c5212d15382007773d.js | 6 + .../bundles/16.cc58f582c191485d9392.css | 1 + .../bundles/16.cc58f582c191485d9392.rtl.css | 1 + .../static/bundles/16.e0d00f8a564954896734.js | 1 + .../static/bundles/17.00b04a06a8cd9c6f5f6c.js | 5 + .../bundles/18.183d41ade16dae257526.css | 1 + .../bundles/18.183d41ade16dae257526.rtl.css | 1 + .../static/bundles/18.e4c458360dbad4de5cf6.js | 1 + .../bundles/19.aba848e28ec755548668.css | 1 + .../bundles/19.aba848e28ec755548668.rtl.css | 1 + .../static/bundles/19.c5542d290eefbb001433.js | 1 + .../static/bundles/2.195070ea59b3395625da.js | 1 + .../static/bundles/2.a3e34146d368d13b6bc1.css | 1 + .../bundles/2.a3e34146d368d13b6bc1.rtl.css | 1 + .../static/bundles/20.2416da4fc4c075b56691.js | 1 + .../bundles/20.f75162343321d7d9178c.css | 1 + .../bundles/20.f75162343321d7d9178c.rtl.css | 1 + .../bundles/21.7e987db0ed47cc3f789c.css | 1 + .../bundles/21.7e987db0ed47cc3f789c.rtl.css | 1 + .../static/bundles/21.fc856808959a5b8734f7.js | 1 + .../static/bundles/22.c118eafc7686081984c8.js | 1 + .../bundles/22.f31ebffc8672752a2d4b.css | 1 + .../bundles/22.f31ebffc8672752a2d4b.rtl.css | 1 + .../bundles/23.7c4be219df640cb3880c.css | 1 + .../bundles/23.7c4be219df640cb3880c.rtl.css | 1 + .../static/bundles/23.e89d09694523563b8f86.js | 1 + .../static/bundles/24.319f9ed9725f3cea260a.js | 8 + .../static/bundles/25.15d449d35706e01821dd.js | 4 + .../static/bundles/26.16e9146c09ea7d6b839a.js | 3 + .../static/bundles/27.54aad15135c7ea57b345.js | 5 + .../static/bundles/28.3f2589cd73664ea3f3e3.js | 5 + .../static/bundles/29.6a6accc00e80feb13030.js | 4 + .../static/bundles/3.f41fdd1a128935b63e5b.js | 3 + .../static/bundles/30.c3cc90c5fbe9a2b87ffb.js | 2 + .../bundles/31.5c895c4f655400b0b4e2.css | 1 + .../bundles/31.5c895c4f655400b0b4e2.rtl.css | 1 + .../static/bundles/31.d081df3316799b489847.js | 1 + .../static/bundles/32.48df7a8cdc38d60b308b.js | 1 + .../bundles/32.b92773bfff0363a69bb9.css | 1 + .../bundles/32.b92773bfff0363a69bb9.rtl.css | 1 + .../static/bundles/33.4a74c62095be3045c87e.js | 1 + .../bundles/33.ac320c107772f8e72252.css | 1 + .../bundles/33.ac320c107772f8e72252.rtl.css | 1 + .../static/bundles/34.17e0ce399a577f17ba55.js | 1 + .../bundles/34.dd27b311326fd1fc6fde.css | 1 + .../bundles/34.dd27b311326fd1fc6fde.rtl.css | 1 + .../bundles/35.47b9d16b3fa10b495a11.css | 1 + .../bundles/35.47b9d16b3fa10b495a11.rtl.css | 1 + .../static/bundles/35.58433cec10095e3c1b7e.js | 1 + .../static/bundles/36.2ee80b40751fcc88a65c.js | 1 + .../bundles/36.e9a6bec06ee11d2c2d4a.css | 1 + .../bundles/36.e9a6bec06ee11d2c2d4a.rtl.css | 1 + .../bundles/37.065a5f2249aafcfe50ec.css | 1 + .../bundles/37.065a5f2249aafcfe50ec.rtl.css | 1 + .../static/bundles/37.1735365b01406a8d696d.js | 1 + .../bundles/38.4073381c29c4e2bc2209.css | 1 + .../bundles/38.4073381c29c4e2bc2209.rtl.css | 1 + .../static/bundles/38.9ae2eea9402c30aa3046.js | 1 + .../bundles/39.5f64b4bc2e263edfbf6e.css | 1 + .../bundles/39.5f64b4bc2e263edfbf6e.rtl.css | 1 + .../static/bundles/39.7e524b82ef9947f0f19f.js | 1 + .../static/bundles/4.80bf1a925965757be6d4.js | 4 + .../bundles/40.0f54f57304896d7506a2.css | 1 + .../bundles/40.0f54f57304896d7506a2.rtl.css | 1 + .../static/bundles/40.42bd9598272e9dd24457.js | 1 + .../static/bundles/41.11c024e8e0504741fd66.js | 1 + .../bundles/41.1dc91fcdd5dbde1247d7.css | 1 + .../bundles/41.1dc91fcdd5dbde1247d7.rtl.css | 1 + .../static/bundles/42.0491acaaf55887f7fcb3.js | 1 + .../bundles/42.db948a104cb86b7df06e.css | 1 + .../bundles/42.db948a104cb86b7df06e.rtl.css | 1 + .../bundles/43.12df9892872230fa2898.css | 1 + .../bundles/43.12df9892872230fa2898.rtl.css | 1 + .../static/bundles/43.4ae432f1b8259dbfd0e5.js | 1 + .../bundles/44.01ec30ff4ce8cf7fa8e5.css | 1 + .../bundles/44.01ec30ff4ce8cf7fa8e5.rtl.css | 1 + .../static/bundles/44.7aabc64d3dfb54c85d60.js | 1 + .../static/bundles/45.6c1fc3ac2f6063249f97.js | 1 + .../bundles/45.e09d2beed14ffd8995a9.css | 1 + .../bundles/45.e09d2beed14ffd8995a9.rtl.css | 1 + .../static/bundles/46.75a0e6fecbc3c92a6bc7.js | 1 + .../bundles/46.923fdbea563cd1d28d4c.css | 1 + .../bundles/46.923fdbea563cd1d28d4c.rtl.css | 1 + .../static/bundles/47.773635a99e184d6dc131.js | 1 + .../bundles/47.b48791ffffadc9c96a10.css | 1 + .../bundles/47.b48791ffffadc9c96a10.rtl.css | 1 + .../bundles/48.912258c9b4f11cd518c3.css | 1 + .../bundles/48.912258c9b4f11cd518c3.rtl.css | 1 + .../static/bundles/48.9d08141ee2d55bcad3e7.js | 1 + .../bundles/49.0cb5c561f3b28a047912.css | 1 + .../bundles/49.0cb5c561f3b28a047912.rtl.css | 1 + .../static/bundles/49.929acbc67c2613c57f58.js | 1 + .../static/bundles/5.1beaffde9123ffaeff74.js | 9 + .../static/bundles/50.2c50aad369bf63f77061.js | 1 + .../bundles/50.e2f9bc14536ad546e595.css | 1 + .../bundles/50.e2f9bc14536ad546e595.rtl.css | 1 + .../static/bundles/51.30c5804303a9f1c455e3.js | 1 + .../bundles/51.a35e4c0d0b08a018e307.css | 1 + .../bundles/51.a35e4c0d0b08a018e307.rtl.css | 1 + .../bundles/52.be1d70abe1a172cc5c3a.css | 1 + .../bundles/52.be1d70abe1a172cc5c3a.rtl.css | 1 + .../static/bundles/52.c212ca3684de16c6f115.js | 1 + .../bundles/53.3f6d736abe33683640bc.css | 1 + .../bundles/53.3f6d736abe33683640bc.rtl.css | 1 + .../static/bundles/53.7217742e39b70fc9d431.js | 1 + .../static/bundles/54.9eb4ca2a30197d95fe82.js | 1 + .../bundles/54.cf540e4ba48bf75e96c2.css | 1 + .../bundles/54.cf540e4ba48bf75e96c2.rtl.css | 1 + .../static/bundles/55.7707e6ae9f2ec8cfb656.js | 1 + .../bundles/55.c11884ad80d526214fb6.css | 1 + .../bundles/55.c11884ad80d526214fb6.rtl.css | 1 + .../static/bundles/56.83cd8456e872f49059c3.js | 1 + .../bundles/56.ea0c135a2b02b495fbb5.css | 1 + .../bundles/56.ea0c135a2b02b495fbb5.rtl.css | 1 + .../static/bundles/57.6384b62456dc4fed6ffb.js | 1 + .../bundles/57.651927021db01a7ed13f.css | 1 + .../bundles/57.651927021db01a7ed13f.rtl.css | 1 + .../static/bundles/58.8077d6b199609737b3d5.js | 1 + .../bundles/58.82b7bef062a290e587d4.css | 1 + .../bundles/58.82b7bef062a290e587d4.rtl.css | 1 + .../static/bundles/6.35dee0cfeb8a4d70732c.css | 1 + .../bundles/6.35dee0cfeb8a4d70732c.rtl.css | 1 + .../static/bundles/6.902d5f3923d45b49b876.js | 1 + .../static/bundles/7.e98fce2ffac2c552565f.css | 1 + .../bundles/7.e98fce2ffac2c552565f.rtl.css | 1 + .../static/bundles/7.fc0941206f7b7d32812d.js | 1 + .../static/bundles/8.180c6bdc716e5045b645.css | 1 + .../bundles/8.180c6bdc716e5045b645.rtl.css | 1 + .../static/bundles/8.62bd4ee21281906a7019.js | 1 + .../static/bundles/9.855edb9bea2352bd5129.js | 15 + ...add-compare-dialog.e9db1b14483f3e7358f4.js | 3 + ...ge-interval-dialog.c8c04c297cc329376f2b.js | 2 + ...art-bottom-toolbar.da7ac0cc35cc8a26f65a.js | 10 + .../chart-widget-gui.8005316cfc1f06be4bf0.js | 13 + .../bundles/clipboard.5403f9bd852af06addff.js | 4 + ...firm-inputs-dialog.f9823e95a365cd8974c9.js | 1 + ...ymbol-input-dialog.c72289c830292c73812f.js | 1 + ...text-menu-renderer.5eff9c34fa03e94b2c1b.js | 5 + .../create-dialog.472fe015128398f27a86.js | 6 + ...shair.6c091f7d5427d0c5e6d9dc3a90eb2b20.cur | Bin 0 -> 4286 bytes .../dialogs-core.c712826575e8ea62d8e0.js | 9 + .../dialogs-core.e9f630dd3fdeb4ceee21.css | 1 + .../dialogs-core.e9f630dd3fdeb4ceee21.rtl.css | 1 + .../dot.ed68e83c16f77203e73dbc4c3a7c7fa1.cur | Bin 0 -> 4286 bytes .../drawing-toolbar.35360bdf4aedb7db7287.js | 14 + .../ds-property-pages.33a0b54c87f584f79681.js | 79 + .../editobjectdialog.a4fd348616e0724542ac.js | 5 + ...raser.0579d40b812fa2c3ffe72e5803a6e14c.cur | Bin 0 -> 4286 bytes .../export-data.ea9e219d1d41389ea3b7.js | 1 + .../floating-toolbars.d7f25f59513991368767.js | 18 + ...font.3293616ec0c605c7c2db25829a0a509e.woff | Bin 0 -> 44432 bytes ...ont.40f9a03d174178efb12303caa9bc7cd8.woff2 | Bin 0 -> 35328 bytes ...o-date-dialog-impl.51162344726d8956c763.js | 7 + .../grab.bc156522a6b55a60be9fae15c14b66c5.cur | Bin 0 -> 4286 bytes ...bbing.1c0862a8a8c0fb02885557bc97fdafe7.cur | Bin 0 -> 4286 bytes .../bundles/hammerjs.46686dd839f22b742351.js | 7 + .../header-toolbar.743cca210a6a3e37939e.js | 7 + .../ie-fallback-logos.589046871bfa17cbfbda.js | 3 + .../lazy-jquery-ui.3a9fe36168ca8e6cacb8.js | 34 + .../lazy-velocity.d040cf1092d3b2920dde.js | 15 + .../bundles/library.bb7ca756e7cbe50becb3.css | 1 + .../library.bb7ca756e7cbe50becb3.rtl.css | 1 + .../bundles/library.e964cdc99937c68d0389.js | 621 + .../line-tools-icons.c89643eed013eb0ff7c1.js | 28 + .../load-chart-dialog.24806d5c5be9fbdfd103.js | 6 + .../lt-pane-views.e06093931461762ecd11.js | 79 + .../bundles/moment.fdf50ccef2c78863664d.js | 17 + ...edit-object-dialog.232c44a337440602cba4.js | 40 + .../objecttreedialog.bb84539d18c87a88a80b.js | 12 + ...ttern.a6506134daec7169f68f563f084a9d41.svg | 1 + ...nifest.60144109bbe17651b1eb050c29e4f6f4.js | 2 + .../bundles/react.cdaa9c19dda854fad341.js | 40 + ...restricted-toolset.e356a29caff335c91f6b.js | 19 + .../bundles/runtime.d22af752ee0c2111becd.js | 4 + .../series-icons-map.e3b746e7a7341e8ddb2d.js | 2 + .../series-pane-views.678a074c53e327c3184a.js | 1 + .../static/bundles/service-worker.js | 29 + .../study-market.ff409c6c02ba9edc0151.js | 14 + .../study-pane-views.ee901b6c4a31f84ba03d.js | 1 + ...dy-template-dialog.a6f710070f1f64f2ef11.js | 6 + ...l-info-dialog-impl.eaddb54cc066d7a021e2.js | 2 + .../symbolsearch.0057814b113bcee3d957.js | 10 + ...-image-dialog-impl.d61e03a87b11d0c1adf1.js | 5 + .../bundles/vendors.267dd414d71e078f822c.js | 95 + .../zoom.e21f24dd632c7069139bc47ae89c54b5.cur | Bin 0 -> 4286 bytes .../cs-tv-chart.8562c7b8f7bdb50c1f5d.html | 110 + .../da_DK-tv-chart.8562c7b8f7bdb50c1f5d.html | 110 + .../de-tv-chart.8562c7b8f7bdb50c1f5d.html | 111 + .../el-tv-chart.8562c7b8f7bdb50c1f5d.html | 110 + .../en-tv-chart.8562c7b8f7bdb50c1f5d.html | 111 + .../es-tv-chart.8562c7b8f7bdb50c1f5d.html | 111 + .../et_EE-tv-chart.8562c7b8f7bdb50c1f5d.html | 110 + .../fa-tv-chart.8562c7b8f7bdb50c1f5d.html | 111 + .../fr-tv-chart.8562c7b8f7bdb50c1f5d.html | 111 + .../he_IL-tv-chart.8562c7b8f7bdb50c1f5d.html | 111 + .../hu_HU-tv-chart.8562c7b8f7bdb50c1f5d.html | 111 + .../id_ID-tv-chart.8562c7b8f7bdb50c1f5d.html | 111 + .../static/images/balloon.png | Bin 0 -> 1142 bytes .../static/images/bar-loader.gif | Bin 0 -> 1933 bytes .../static/images/button-bg.png | Bin 0 -> 92 bytes .../logo-widget-copyright-faded.png | Bin 0 -> 932 bytes .../logo-widget-copyright.png | Bin 0 -> 516 bytes .../static/images/controlll.png | Bin 0 -> 3192 bytes .../static/images/delayed.png | Bin 0 -> 82 bytes .../static/images/dialogs/checkbox.png | Bin 0 -> 227 bytes .../static/images/dialogs/close-flat.png | Bin 0 -> 137 bytes .../images/dialogs/large-slider-handle.png | Bin 0 -> 501 bytes .../images/dialogs/linewidth-slider.png | Bin 0 -> 126 bytes .../static/images/dialogs/opacity-slider.png | Bin 0 -> 84 bytes src/charting_library/static/images/icons.png | Bin 0 -> 42138 bytes .../static/images/prediction-clock-black.png | Bin 0 -> 144 bytes .../static/images/prediction-clock-white.png | Bin 0 -> 160 bytes .../images/prediction-failure-white.png | Bin 0 -> 125 bytes .../images/prediction-success-white.png | Bin 0 -> 168 bytes .../static/images/price_label.png | Bin 0 -> 634 bytes .../static/images/select-bg.png | Bin 0 -> 318 bytes .../static/images/svg/chart/bucket2.svg | 1 + .../static/images/svg/chart/font.svg | 1 + .../images/svg/chart/large-slider-handle.svg | 1 + .../static/images/svg/chart/pencil2.svg | 1 + .../images/svg/question-mark-rounded.svg | 1 + .../images/tvcolorpicker-bg-gradient.png | Bin 0 -> 309 bytes .../static/images/tvcolorpicker-bg.png | Bin 0 -> 86 bytes .../static/images/tvcolorpicker-check.png | Bin 0 -> 268 bytes .../static/images/tvcolorpicker-sprite.png | Bin 0 -> 27936 bytes .../it-tv-chart.8562c7b8f7bdb50c1f5d.html | 111 + .../ja-tv-chart.8562c7b8f7bdb50c1f5d.html | 111 + .../ko-tv-chart.8562c7b8f7bdb50c1f5d.html | 111 + .../ms_MY-tv-chart.8562c7b8f7bdb50c1f5d.html | 111 + .../nl_NL-tv-chart.8562c7b8f7bdb50c1f5d.html | 110 + .../no-tv-chart.8562c7b8f7bdb50c1f5d.html | 110 + .../pl-tv-chart.8562c7b8f7bdb50c1f5d.html | 111 + .../pt-tv-chart.8562c7b8f7bdb50c1f5d.html | 111 + .../ro-tv-chart.8562c7b8f7bdb50c1f5d.html | 110 + .../ru-tv-chart.8562c7b8f7bdb50c1f5d.html | 111 + .../sk_SK-tv-chart.8562c7b8f7bdb50c1f5d.html | 110 + .../sv-tv-chart.8562c7b8f7bdb50c1f5d.html | 111 + .../th-tv-chart.8562c7b8f7bdb50c1f5d.html | 111 + .../tr-tv-chart.8562c7b8f7bdb50c1f5d.html | 111 + .../vi-tv-chart.8562c7b8f7bdb50c1f5d.html | 111 + .../zh-tv-chart.8562c7b8f7bdb50c1f5d.html | 111 + .../zh_TW-tv-chart.8562c7b8f7bdb50c1f5d.html | 111 + src/components/BankResponse/BankResponse.pcss | 66 + src/components/BankResponse/index.tsx | 109 + .../Beneficiaries/Beneficiaries.pcss | 546 + .../BeneficiariesActivateModal.tsx | 179 + .../Beneficiaries/BeneficiariesAddModal.tsx | 445 + .../BeneficiariesFailAddModal.tsx | 81 + src/components/Beneficiaries/index.tsx | 478 + src/components/Blur/Blur.pcss | 32 + src/components/Blur/index.tsx | 20 + src/components/Captcha/Captcha.pcss | 11 + src/components/Captcha/index.tsx | 72 + .../ChangePassword/ChangePassword.pcss | 59 + src/components/ChangePassword/index.tsx | 271 + .../CombinedOrderBook/CombinedOrderBook.pcss | 123 + .../CombinedOrderBook.test.tsx | 73 + .../CombinedOrderBook.test.tsx.snap | 3 + src/components/CombinedOrderBook/index.tsx | 173 + src/components/CombinedOrderBook/readme.md | 47 + .../CopyableTextField/CopyableTextField.pcss | 47 + .../CopyableTextField.test.tsx | 32 + .../CopyableTextField.test.tsx.snap | 3 + src/components/CopyableTextField/index.tsx | 91 + src/components/CryptoIcon/CryptoIcon.pcss | 3 + src/components/CryptoIcon/CryptoIcon.test.tsx | 41 + .../__snapshots__/CryptoIcon.test.tsx.snap | 3 + src/components/CryptoIcon/index.tsx | 28 + src/components/CryptoIcon/readme.md | 10 + src/components/CurrencyInfo/CurrencyInfo.pcss | 50 + src/components/CurrencyInfo/index.tsx | 60 + src/components/CustomInput/CustomInput.pcss | 56 + .../CustomInput/CustomInput.test.tsx | 32 + .../__snapshots__/CustomInput.test.tsx.snap | 3 + src/components/CustomInput/index.tsx | 89 + src/components/Customization/Fonts/index.tsx | 21 + src/components/Customization/Images/index.tsx | 21 + .../Customization/Spacing/index.tsx | 21 + .../Themes/ColorSettings/ColorSettings.pcss | 61 + .../Themes/ColorSettings/index.tsx | 93 + .../Customization/Themes/Themes.pcss | 138 + src/components/Customization/Themes/index.tsx | 230 + src/components/Customization/index.ts | 4 + src/components/Customization/style.pcss | 2 + src/components/Decimal/Decimal.pcss | 3 + src/components/Decimal/Decimal.test.tsx | 228 + .../__snapshots__/Decimal.test.tsx.snap | 23 + src/components/Decimal/index.tsx | 165 + src/components/Decimal/readme.md | 8 + .../DepositCrypto/DepositCrypto.pcss | 131 + .../DepositCrypto/DepositCrypto.test.tsx | 49 + .../__snapshots__/DepositCrypto.test.tsx.snap | 3 + src/components/DepositCrypto/index.tsx | 132 + src/components/DepositFiat/DepositFiat.pcss | 32 + .../DepositFiat/DepositFiat.test.tsx | 26 + .../__snapshots__/DepositFiat.test.tsx.snap | 3 + src/components/DepositFiat/index.tsx | 72 + .../Documentation/Documentation.pcss | 3 + .../Endpoints/DocumentationEndpoints.pcss | 3 + .../RequestTypeItem/ParametersItem/index.tsx | 61 + .../RequestTypeItem/ResponsesItem/index.tsx | 78 + .../Endpoints/Item/RequestTypeItem/index.tsx | 24 + .../Documentation/Endpoints/Item/index.tsx | 23 + .../Documentation/Endpoints/index.tsx | 24 + .../Header/DocumentationHeader.pcss | 30 + src/components/Documentation/Header/index.tsx | 44 + .../Models/DocumentationModels.pcss | 5 + .../Models/Item/DocumentationModelsItem.pcss | 5 + .../Documentation/Models/Item/index.tsx | 91 + src/components/Documentation/Models/index.tsx | 27 + src/components/Documentation/index.ts | 3 + src/components/Dropdown/Dropdown.pcss | 139 + src/components/Dropdown/Dropdown.test.tsx | 95 + .../__snapshots__/Dropdown.test.tsx.snap | 3 + src/components/Dropdown/index.tsx | 117 + src/components/Dropdown/readme.md | 12 + src/components/EmailForm/EmailForm.pcss | 181 + src/components/EmailForm/EmailForm.test.tsx | 67 + .../__snapshots__/EmailForm.test.tsx.snap | 3 + src/components/EmailForm/close.svg | 3 + src/components/EmailForm/index.tsx | 151 + .../ExpiredSessionModal.pcss | 61 + src/components/ExpiredSessionModal/index.tsx | 49 + src/components/FilterInput/FilterInput.pcss | 35 + .../FilterInput/FilterInput.test.tsx | 73 + src/components/FilterInput/Search.svg | 4 + .../__snapshots__/FilterInput.test.tsx.snap | 3 + src/components/FilterInput/index.tsx | 86 + .../GetAuthenticationCode.pcss | 78 + .../GetAuthenticationCode/index.tsx | 407 + .../GetAuthenticationCodePublic/index.tsx | 337 + src/components/GetBankInfo/GetBankInfo.pcss | 25 + src/components/GetBankInfo/index.tsx | 281 + src/components/GridItem/GriItem.test.tsx | 28 + src/components/GridItem/GridItem.pcss | 47 + .../__snapshots__/GriItem.test.tsx.snap | 3 + src/components/GridItem/index.tsx | 45 + src/components/GridItem/readme.md | 7 + src/components/History/History.pcss | 13 + src/components/History/History.test.tsx | 44 + .../__snapshots__/History.test.tsx.snap | 3 + src/components/History/index.tsx | 49 + .../IdentityVerification.pcss | 48 + src/components/IdentityVerification/index.tsx | 156 + src/components/MarketDepths/MarketDepths.pcss | 5 + .../MarketDepths/MarketDepths.test.tsx | 73 + .../__snapshots__/MarketDepths.test.tsx.snap | 3 + src/components/MarketDepths/index.tsx | 313 + src/components/MarketDepths/readme.md | 65 + src/components/Markets/Markets.pcss | 118 + src/components/Markets/Markets.test.tsx | 81 + .../__snapshots__/Markets.test.tsx.snap | 5 + src/components/Markets/index.tsx | 174 + src/components/Markets/readme.md | 17 + .../MetaMaskButton/MetaMaskButton.pcss | 11 + src/components/MetaMaskButton/index.tsx | 76 + src/components/Modal/Modal.pcss | 55 + src/components/Modal/Modal.test.tsx | 42 + .../Modal/__snapshots__/Modal.test.tsx.snap | 3 + src/components/Modal/index.tsx | 50 + src/components/OpenOrders/OpenOrders.pcss | 62 + src/components/OpenOrders/OpenOrders.test.tsx | 79 + .../__snapshots__/OpenOrders.test.tsx.snap | 3 + src/components/OpenOrders/index.tsx | 103 + src/components/Order/Order.pcss | 38 + src/components/Order/Order.test.tsx | 45 + .../Order/__snapshots__/Order.test.tsx.snap | 3 + src/components/Order/index.tsx | 295 + src/components/OrderBook/OrderBook.pcss | 23 + src/components/OrderBook/OrderBook.test.tsx | 61 + .../__snapshots__/OrderBook.test.tsx.snap | 3 + src/components/OrderBook/index.tsx | 88 + src/components/OrderBook/readme.md | 29 + src/components/OrderForm/OrderForm.pcss | 107 + src/components/OrderForm/OrderForm.test.tsx | 182 + .../__snapshots__/OrderForm.test.tsx.snap | 3 + src/components/OrderForm/index.tsx | 408 + src/components/OrderInput/OrderInput.pcss | 98 + src/components/OrderInput/OrderInput.test.tsx | 33 + .../__snapshots__/OrderInput.test.tsx.snap | 3 + src/components/OrderInput/index.tsx | 100 + src/components/OrderInput/readme.md | 5 + src/components/Pagination/Pagination.pcss | 19 + src/components/Pagination/Pagination.test.tsx | 62 + .../__snapshots__/Pagination.test.tsx.snap | 3 + src/components/Pagination/index.tsx | 166 + src/components/Pagination/readme.md | 17 + .../PasswordStrengthMeter.pcss | 90 + .../PasswordStrengthMeter.test.tsx | 29 + .../PasswordStrengthMeter/Readme.md | 47 + .../PasswordStrengthMeter.test.tsx.snap | 3 + .../PasswordStrengthMeter/index.tsx | 129 + .../PasswordStrengthTip.pcss | 15 + .../PasswordStrengthTip.test.tsx | 26 + src/components/PasswordStrengthTip/Readme.md | 24 + .../PasswordStrengthTip.test.tsx.snap | 3 + src/components/PasswordStrengthTip/index.tsx | 34 + .../PercentageButton/PercentageButton.pcss | 28 + .../PercentageButton.test.tsx | 32 + .../PercentageButton.test.tsx.snap | 3 + src/components/PercentageButton/index.tsx | 27 + src/components/PercentageButton/readme.md | 10 + src/components/QRCode/QRCode.pcss | 5 + src/components/QRCode/QRCode.test.tsx | 17 + .../QRCode/__snapshots__/QRCode.test.tsx.snap | 3 + src/components/QRCode/index.tsx | 33 + src/components/QRCode/readme.md | 10 + src/components/ResetPassword/index.tsx | 247 + .../SearchDropdown/SearchDropdown.pcss | 56 + src/components/SearchDropdown/index.tsx | 25 + src/components/SignIn/SignIn.pcss | 138 + src/components/SignIn/SignIn.test.tsx | 128 + .../SignIn/__snapshots__/SignIn.test.tsx.snap | 3 + src/components/SignIn/index.tsx | 280 + src/components/SignUp/SignUp.pcss | 206 + src/components/SignUp/SignUp.test.tsx | 142 + .../SignUp/__snapshots__/SignUp.test.tsx.snap | 3 + src/components/SignUp/index.tsx | 433 + src/components/SummaryField/SummaryField.pcss | 33 + .../SummaryField/SummaryField.test.tsx | 36 + .../__snapshots__/SummaryField.test.tsx.snap | 3 + src/components/SummaryField/index.tsx | 34 + src/components/TabPanel/TabPanel.pcss | 82 + src/components/TabPanel/TabPanel.test.tsx | 142 + .../__snapshots__/TabPanel.test.tsx.snap | 3 + src/components/TabPanel/index.tsx | 195 + src/components/Table/Table.pcss | 113 + src/components/Table/Table.test.tsx | 158 + src/components/Table/index.tsx | 296 + src/components/Table/readme.md | 45 + src/components/TickerTable/TickerTable.pcss | 190 + src/components/TickerTable/index.tsx | 114 + src/components/Tooltip/Tooltip.pcss | 24 + src/components/Tooltip/index.tsx | 19 + .../TwoFactorAuth/TwoFactorAuth.test.tsx | 33 + .../__snapshots__/TwoFactorAuth.test.tsx.snap | 3 + src/components/TwoFactorAuth/index.tsx | 105 + src/components/UploadFile/UploadFile.pcss | 183 + src/components/UploadFile/index.tsx | 127 + src/components/WalletItem/WalletItem.pcss | 65 + src/components/WalletItem/WalletItem.test.tsx | 121 + .../__snapshots__/WalletItem.test.tsx.snap | 3 + src/components/WalletItem/index.tsx | 73 + src/components/WalletList/WalletList.pcss | 7 + src/components/WalletList/WalletList.test.tsx | 74 + .../__snapshots__/WalletList.test.tsx.snap | 3 + src/components/WalletList/fixtures.ts | 29 + src/components/WalletList/index.tsx | 62 + src/components/index.ts | 51 + src/components/style.pcss | 44 + src/constants/constants.test.ts | 32 + src/constants/index.ts | 78 + src/containers/Alerts/Alerts.pcss | 59 + src/containers/Alerts/index.tsx | 88 + .../ChangePassword/ChangePassword.pcss | 105 + src/containers/ChangePassword/index.tsx | 157 + src/containers/Charts/Charts.pcss | 53 + src/containers/Charts/index.tsx | 35 + src/containers/Confirm/Address/index.tsx | 335 + .../Confirm/Documents/Documents.pcss | 24 + src/containers/Confirm/Documents/index.tsx | 434 + src/containers/Confirm/Identity/Identity.pcss | 26 + src/containers/Confirm/Identity/index.tsx | 576 + src/containers/Confirm/Mobile/Mobile.pcss | 10 + src/containers/Confirm/Mobile/index.tsx | 302 + src/containers/Confirm/Phone/Phone.pcss | 10 + src/containers/Confirm/Phone/index.tsx | 339 + src/containers/Confirm/index.ts | 5 + .../Customization/Customization.pcss | 179 + src/containers/Customization/index.tsx | 216 + src/containers/Errors/index.tsx | 53 + src/containers/Footer/Footer.pcss | 41 + src/containers/Footer/index.tsx | 51 + src/containers/GeetestCaptcha/index.tsx | 104 + src/containers/Header/Header.pcss | 240 + src/containers/Header/arrows/arrowBottom.svg | 3 + .../Header/arrows/arrowBottomLight.svg | 3 + src/containers/Header/arrows/arrowRight.svg | 3 + .../Header/arrows/arrowRightLight.svg | 3 + src/containers/Header/back.svg | 3 + src/containers/Header/backLight.svg | 3 + src/containers/Header/index.tsx | 181 + src/containers/HeaderToolbar/index.tsx | 106 + src/containers/HistoryElement/index.tsx | 288 + .../LegalDocuments/LegalDocuments.pcss | 86 + src/containers/LegalDocuments/index.tsx | 70 + src/containers/MarketDepth/MarketDepth.pcss | 24 + src/containers/MarketDepth/index.tsx | 139 + src/containers/Markets/Markets.pcss | 94 + src/containers/Markets/index.tsx | 134 + src/containers/MarketsTable/index.tsx | 94 + .../ModalWithdrawConfirmation.pcss | 8 + .../ModalWithdrawConfirmation/index.tsx | 98 + .../ModalWithdrawSubmit.pcss | 21 + src/containers/ModalWithdrawSubmit/index.tsx | 79 + src/containers/NavBar/NavBar.pcss | 293 + src/containers/NavBar/close-avatar.svg | 5 + src/containers/NavBar/close-icon.svg | 3 + src/containers/NavBar/close.svg | 5 + src/containers/NavBar/down-arrow.svg | 4 + src/containers/NavBar/index.tsx | 96 + src/containers/NavBar/open-avatar.svg | 5 + src/containers/NavBar/open-icon.svg | 3 + src/containers/OpenOrders/OpenOrders.pcss | 128 + src/containers/OpenOrders/OpenOrders.test.tsx | 64 + .../__snapshots__/OpenOrders.test.tsx.snap | 3 + src/containers/OpenOrders/index.tsx | 180 + src/containers/Order/Order.pcss | 413 + src/containers/Order/index.tsx | 334 + src/containers/OrderBook/OrderBook.pcss | 251 + src/containers/OrderBook/index.tsx | 366 + src/containers/OrdersElement/index.tsx | 230 + .../ProfileAccountActivity.pcss | 30 + .../ProfileAccountActivity/index.tsx | 168 + .../ProfileApiKeys/ProfileApiKeys.pcss | 49 + src/containers/ProfileApiKeys/index.tsx | 521 + src/containers/ProfileAuthDetails/close.svg | 3 + src/containers/ProfileAuthDetails/index.tsx | 382 + .../ProfileTwoFactorAuth.pcss | 48 + src/containers/ProfileTwoFactorAuth/index.tsx | 54 + .../ProfileVerification.pcss | 289 + src/containers/ProfileVerification/index.tsx | 265 + src/containers/RecentTrades/Market.tsx | 143 + src/containers/RecentTrades/RecentTrades.pcss | 146 + .../RecentTrades/RecentTrades.test.tsx | 35 + src/containers/RecentTrades/Yours.tsx | 146 + .../__snapshots__/RecentTrades.test.tsx.snap | 3 + src/containers/RecentTrades/index.tsx | 142 + .../ReferralProgram/ReferralProgram.pcss | 58 + src/containers/ReferralProgram/index.tsx | 80 + .../ReferralReport/ReferralReport.pcss | 30 + src/containers/ReferralReport/index.tsx | 115 + src/containers/Sidebar/Sidebar.pcss | 266 + src/containers/Sidebar/index.tsx | 247 + .../MarketSelector/MarketSelector.pcss | 233 + .../MarketsList/MarketsList.pcss | 70 + .../MarketSelector/MarketsList/index.tsx | 218 + .../MarketsTabs/MarketsTabs.pcss | 36 + .../MarketSelector/MarketsTabs/index.tsx | 104 + .../ToolBar/MarketSelector/index.tsx | 87 + src/containers/ToolBar/PriceBar/PriceBar.pcss | 43 + src/containers/ToolBar/PriceBar/index.tsx | 34 + .../ToolBar/ProgressLabel/ProgressLabel.pcss | 24 + .../ToolBar/ProgressLabel/index.tsx | 31 + src/containers/ToolBar/ToolBar.pcss | 152 + src/containers/ToolBar/icons/ArrowIcon.tsx | 19 + src/containers/ToolBar/icons/hidden.svg | 3 + src/containers/ToolBar/icons/search.svg | 3 + src/containers/ToolBar/index.tsx | 70 + src/containers/TradingChart/TradingChart.pcss | 37 + src/containers/TradingChart/api.ts | 183 + src/containers/TradingChart/config.ts | 52 + src/containers/TradingChart/index.tsx | 259 + .../TradingChart/timezones.test.tsx | 15 + src/containers/TradingChart/timezones.ts | 157 + .../TwoFactorAuth/TwoFactorAuth.pcss | 89 + .../EstimatedValue/EstimatedValue.pcss | 28 + .../Wallets/EstimatedValue/index.tsx | 150 + src/containers/Wallets/FailIcon.tsx | 12 + src/containers/Wallets/History.tsx | 201 + src/containers/Wallets/SucceedIcon.tsx | 16 + .../WalletsFetch/WalletsFetch.test.tsx | 33 + .../__snapshots__/WalletsFetch.test.tsx.snap | 3 + src/containers/WalletsFetch/index.tsx | 43 + src/containers/Withdraw/index.tsx | 462 + src/containers/index.ts | 34 + src/containers/style.pcss | 29 + src/custom/helpers/layout.ts | 1 + src/custom/styles/colors.pcss | 1 + src/custom/styles/fonts.pcss | 1 + src/custom/styles/style.pcss | 3 + src/custom/styles/themes/style.pcss | 1 + src/custom/tradingChartConfig.ts | 72 + src/custom/translations/en.ts | 1 + src/custom/translations/index.ts | 5 + src/custom/translations/nationalities.ts | 1 + src/custom/translations/ru.ts | 954 ++ .../FilterPrice/FilterPriceCustomStep.ts | 41 + .../FilterPriceSignificantDigit.ts | 49 + src/filters/FilterPrice/index.test.ts | 85 + src/filters/FilterPrice/index.ts | 46 + src/filters/index.ts | 1 + src/helpers/accumulateVolume.ts | 12 + src/helpers/apiKeyDevBypass.ts | 3 + src/helpers/areEqualProps.ts | 9 + src/helpers/areEqualSelectedProps.ts | 7 + src/helpers/buildQueryString.test.ts | 24 + src/helpers/buildQueryString.ts | 24 + src/helpers/calcMaxVolume.ts | 12 + src/helpers/changeElementPosition.ts | 13 + src/helpers/checkDate.ts | 26 + src/helpers/cleanPositiveFloatInput.ts | 14 + src/helpers/convertRgbToHex.test.ts | 14 + src/helpers/convertRgbToHex.ts | 16 + src/helpers/copy.ts | 10 + src/helpers/emailValidation.ts | 7 + src/helpers/estimateValue.test.ts | 188 + src/helpers/estimateValue.ts | 146 + src/helpers/filterData.ts | 7 + src/helpers/formatCCYAddress.ts | 17 + src/helpers/formatDate.ts | 17 + src/helpers/geetest.js | 281 + src/helpers/getCsrfToken.ts | 1 + src/helpers/getHistorySagaParam.ts | 10 + src/helpers/getLanguageByCode.ts | 12 + src/helpers/getOrderAPI.ts | 3 + src/helpers/getStylesValueByKey.ts | 11 + src/helpers/getTimestampPeriod.ts | 1 + src/helpers/getTotalPrice.ts | 60 + src/helpers/getUnique.ts | 6 + src/helpers/getUrlPart.ts | 6 + src/helpers/getUserAgent.ts | 20 + src/helpers/getVerificationStep.ts | 43 + src/helpers/handleCCYPrecision.ts | 7 + src/helpers/handleIncrementalUpdate.test.ts | 482 + src/helpers/handleIncrementalUpdate.ts | 46 + src/helpers/helpers.test.ts | 402 + src/helpers/historyTableUtils.ts | 38 + src/helpers/index.ts | 42 + src/helpers/jest.ts | 88 + src/helpers/layout.ts | 151 + src/helpers/localeDate.ts | 17 + src/helpers/passwordValidation.ts | 3 + src/helpers/providers.tsx | 14 + src/helpers/randomSecretHex.ts | 13 + src/helpers/regExp.test.ts | 10 + src/helpers/regExp.ts | 4 + src/helpers/setDocumentTitle.ts | 5 + src/helpers/setTradeColor.ts | 10 + src/helpers/sliceArray.ts | 12 + src/helpers/sliceString.ts | 3 + src/helpers/sortByDate.ts | 8 + src/helpers/sortByPrice.ts | 7 + src/helpers/timeConvert.ts | 17 + src/helpers/timezone.ts | 15 + src/helpers/toggleColorTheme.ts | 8 + src/helpers/truncateMiddle.ts | 9 + src/helpers/usernameValidation.ts | 4 + .../validateBeneficiaryAddress.test.ts | 198 + src/helpers/validateBeneficiaryAddress.ts | 59 + src/hooks/index.ts | 16 + src/hooks/useApiKeysFetch.ts | 11 + src/hooks/useBeneficiariesFetch.ts | 27 + src/hooks/useCurrenciesFetch.ts | 14 + src/hooks/useDepthFetch.ts | 16 + src/hooks/useDocumentTitle.ts | 8 + src/hooks/useDocumentationFetch.ts | 14 + src/hooks/useHistoryFetch.ts | 11 + src/hooks/useMarketsFetch.ts | 14 + src/hooks/usePrevious.ts | 10 + src/hooks/useResetCaptchaState.ts | 11 + src/hooks/useSetMobileDevice.ts | 23 + src/hooks/useSetShouldGeetestReset.ts | 15 + src/hooks/useTickersFetch.ts | 14 + src/hooks/useUserActivityFetch.ts | 11 + src/hooks/useUserOrdersHistoryFetch.ts | 11 + src/hooks/useWalletsFetch.ts | 14 + src/index.pcss | 364 + src/index.tsx | 61 + src/mobile/assets/images/AddIcon.tsx | 12 + src/mobile/assets/images/CheckIcon.tsx | 11 + src/mobile/assets/images/ChevronIcon.tsx | 11 + src/mobile/assets/images/MinusIcon.tsx | 11 + src/mobile/assets/images/PlusIcon.tsx | 11 + src/mobile/assets/images/WarningIcon.tsx | 11 + src/mobile/assets/images/footer/HomeIcon.tsx | 14 + src/mobile/assets/images/footer/OrderIcon.tsx | 19 + .../assets/images/footer/ProfileIcon.tsx | 14 + src/mobile/assets/images/footer/TradeIcon.tsx | 18 + .../assets/images/footer/WalletIcon.tsx | 17 + .../components/CreatedApiKeyModal/index.tsx | 90 + .../components/CurrentMarketInfo/index.tsx | 121 + .../components/EstimatedValue/index.tsx | 44 + src/mobile/components/Footer/index.tsx | 47 + src/mobile/components/Header/index.tsx | 42 + .../components/HistoryTable/Rowitem.tsx | 26 + src/mobile/components/HistoryTable/index.tsx | 110 + src/mobile/components/Modal/index.tsx | 78 + .../ModalWithdrawConfirmation/index.tsx | 83 + src/mobile/components/OpenOrders/index.tsx | 68 + src/mobile/components/OrderButtons/index.tsx | 37 + src/mobile/components/OrderInput/index.tsx | 77 + src/mobile/components/Orders/OrdersItem.tsx | 72 + src/mobile/components/Orders/index.tsx | 115 + .../components/Profile/ApiKeysItem/index.tsx | 69 + .../components/Profile/ProfileLinks/index.tsx | 58 + .../Profile/UserActivityItem/index.tsx | 77 + .../components/Profile/UserInfo/index.tsx | 28 + src/mobile/components/Profile/index.ts | 4 + src/mobile/components/Subheader/index.tsx | 29 + .../components/TradingTabs/Charts/index.tsx | 39 + .../TradingTabs/CreateOrder/index.tsx | 21 + src/mobile/components/TradingTabs/index.tsx | 48 + .../components/TwoFactorModal/index.tsx | 77 + src/mobile/components/WalletBanner/index.tsx | 46 + .../components/WalletDepositBody/index.tsx | 83 + src/mobile/components/WalletHeader/index.tsx | 27 + src/mobile/components/WalletItem/index.tsx | 40 + .../components/WalletWithdrawBody/index.tsx | 190 + .../components/WalletsButtons/index.tsx | 35 + src/mobile/components/index.ts | 21 + .../ChangeForgottenPasswordScreen/index.tsx | 24 + src/mobile/screens/ConfirmScreen/index.tsx | 48 + .../screens/EmailVerificationScreen/index.tsx | 21 + src/mobile/screens/ForgotPassword/index.tsx | 27 + src/mobile/screens/Landing/index.tsx | 12 + src/mobile/screens/Orders/index.tsx | 10 + src/mobile/screens/Profile/index.tsx | 111 + .../screens/ProfileAccountActivity/index.tsx | 66 + src/mobile/screens/ProfileApiKeys/index.tsx | 217 + src/mobile/screens/ProfileAuth/index.tsx | 59 + .../screens/ProfileChangePassword/index.tsx | 54 + .../screens/ProfileColorTheme/index.tsx | 60 + src/mobile/screens/ProfileLanguage/index.tsx | 79 + .../ProfileVerificationScreen/index.tsx | 35 + .../screens/SelectedWalletScreen/index.tsx | 37 + src/mobile/screens/SignInScreen/index.tsx | 35 + src/mobile/screens/SignUpScreen/index.tsx | 26 + src/mobile/screens/Trading/index.tsx | 22 + src/mobile/screens/WalletDeposit/index.tsx | 64 + src/mobile/screens/WalletWithdraw/index.tsx | 37 + src/mobile/screens/WalletsHistory/index.tsx | 37 + src/mobile/screens/WalletsScreen/index.tsx | 29 + src/mobile/screens/index.ts | 23 + src/mobile/styles/components/ApiKeysItem.pcss | 108 + src/mobile/styles/components/Charts.pcss | 199 + src/mobile/styles/components/CreateOrder.pcss | 459 + .../styles/components/CreatedApiKeyModal.pcss | 110 + .../styles/components/CurrentMarketInfo.pcss | 201 + .../styles/components/EstimatedValue.pcss | 41 + src/mobile/styles/components/Footer.pcss | 60 + src/mobile/styles/components/Header.pcss | 50 + src/mobile/styles/components/Modal.pcss | 75 + .../components/ModalWithdrawConfirmation.pcss | 52 + src/mobile/styles/components/OpenOrders.pcss | 80 + .../styles/components/OrderButtons.pcss | 40 + src/mobile/styles/components/OrderInput.pcss | 58 + src/mobile/styles/components/Orders.pcss | 115 + src/mobile/styles/components/OrdersItem.pcss | 94 + .../styles/components/ProfileLinks.pcss | 93 + src/mobile/styles/components/RowItem.pcss | 22 + src/mobile/styles/components/Subheader.pcss | 38 + src/mobile/styles/components/TickerTable.pcss | 95 + src/mobile/styles/components/TradingTabs.pcss | 68 + .../styles/components/TwoFactorModal.pcss | 45 + .../styles/components/UserActivityItem.pcss | 82 + src/mobile/styles/components/UserInfo.pcss | 49 + .../styles/components/WalletBanner.pcss | 34 + .../styles/components/WalletDepositBody.pcss | 72 + .../styles/components/WalletHeader.pcss | 34 + src/mobile/styles/components/WalletItem.pcss | 28 + .../styles/components/WalletWithdrawBody.pcss | 180 + .../styles/components/WalletsButtons.pcss | 31 + src/mobile/styles/components/styles.pcss | 29 + .../ChangeForgottenPasswordMobileScreen.pcss | 7 + .../styles/screens/ConfirmMobileScreen.pcss | 197 + .../EmailVerificationMobileScreen.pcss | 55 + src/mobile/styles/screens/ForgotPassword.pcss | 22 + src/mobile/styles/screens/HistoryTable.pcss | 41 + src/mobile/styles/screens/Landing.pcss | 8 + src/mobile/styles/screens/Orders.pcss | 4 + src/mobile/styles/screens/Profile.pcss | 8 + src/mobile/styles/screens/ProfileApiKeys.pcss | 38 + .../screens/ProfileAuthMobileScreen.pcss | 157 + .../styles/screens/ProfileChangePassword.pcss | 8 + .../styles/screens/ProfileColorTheme.pcss | 53 + .../styles/screens/ProfileLanguage.pcss | 53 + .../styles/screens/ProfileUserActivity.pcss | 30 + .../ProfileVerificationMobileScreen.pcss | 43 + .../styles/screens/SignInMobileScreen.pcss | 86 + .../styles/screens/SignUpMobileScreen.pcss | 68 + src/mobile/styles/screens/WalletWithdraw.pcss | 40 + src/mobile/styles/screens/styles.pcss | 18 + src/mobile/styles/style.pcss | 2 + src/mobile/translations/en.ts | 119 + src/mobile/translations/index.ts | 7 + src/mobile/translations/ru.ts | 119 + src/modules/app.ts | 85 + src/modules/helpers.ts | 8 + src/modules/index.ts | 162 + src/modules/public/alert/actions.test.ts | 64 + src/modules/public/alert/actions.ts | 60 + src/modules/public/alert/constants.ts | 4 + src/modules/public/alert/index.ts | 4 + src/modules/public/alert/reducer.test.ts | 67 + src/modules/public/alert/reducer.ts | 33 + .../public/alert/sagas/handleAlertSaga.ts | 93 + .../alert/sagas/handleErrorAlert.test.ts | 226 + .../alert/sagas/handleSuccessAlert.test.ts | 77 + src/modules/public/alert/sagas/index.ts | 7 + src/modules/public/alert/selectors.ts | 4 + .../public/blocklistAccess/actions.test.ts | 38 + src/modules/public/blocklistAccess/actions.ts | 54 + .../public/blocklistAccess/constants.ts | 5 + src/modules/public/blocklistAccess/index.ts | 4 + .../public/blocklistAccess/reducer.test.ts | 48 + src/modules/public/blocklistAccess/reducer.ts | 53 + .../sagas/blocklistAccessFetchSaga.test.ts | 84 + .../sagas/blocklistAccessFetchSaga.ts | 29 + .../public/blocklistAccess/sagas/index.ts | 7 + .../public/blocklistAccess/selectors.ts | 11 + src/modules/public/configs/actions.test.ts | 36 + src/modules/public/configs/actions.ts | 40 + src/modules/public/configs/constants.ts | 3 + src/modules/public/configs/index.ts | 5 + src/modules/public/configs/reducer.test.ts | 46 + src/modules/public/configs/reducer.ts | 53 + .../configs/sagas/configsFetchSaga.test.ts | 89 + .../public/configs/sagas/configsFetchSaga.ts | 25 + src/modules/public/configs/sagas/index.ts | 7 + src/modules/public/configs/selectors.ts | 15 + src/modules/public/configs/types.ts | 5 + src/modules/public/currencies/actions.ts | 36 + src/modules/public/currencies/constants.ts | 3 + src/modules/public/currencies/index.ts | 5 + src/modules/public/currencies/reducer.test.ts | 81 + src/modules/public/currencies/reducer.ts | 43 + .../sagas/currenciesFetchSaga.test.ts | 125 + .../currencies/sagas/currenciesFetchSaga.ts | 28 + src/modules/public/currencies/selectors.ts | 18 + src/modules/public/currencies/types.ts | 20 + .../public/customization/actions.test.ts | 31 + src/modules/public/customization/actions.ts | 55 + src/modules/public/customization/constants.ts | 4 + src/modules/public/customization/index.ts | 5 + .../public/customization/reducer.test.ts | 45 + src/modules/public/customization/reducer.ts | 57 + .../sagas/customizationFetchSaga.test.ts | 88 + .../sagas/customizationFetchSaga.ts | 23 + .../public/customization/sagas/index.ts | 7 + src/modules/public/customization/selectors.ts | 21 + src/modules/public/customization/types.ts | 7 + src/modules/public/errorHandler/actions.ts | 25 + src/modules/public/errorHandler/constants.ts | 2 + .../helpers/getMetaMaskErrorMessage.ts | 17 + src/modules/public/errorHandler/index.ts | 3 + src/modules/public/errorHandler/reducer.ts | 25 + .../errorHandler/sagas/handleErrorSaga.ts | 69 + .../public/errorHandler/sagas/index.ts | 7 + src/modules/public/globalSettings/actions.ts | 60 + .../public/globalSettings/constants.ts | 5 + src/modules/public/globalSettings/index.ts | 3 + .../public/globalSettings/reducer.test.ts | 25 + src/modules/public/globalSettings/reducer.ts | 61 + .../public/globalSettings/selectors.ts | 17 + src/modules/public/gridLayout/actions.test.ts | 27 + src/modules/public/gridLayout/actions.ts | 27 + src/modules/public/gridLayout/constants.ts | 2 + src/modules/public/gridLayout/index.ts | 3 + src/modules/public/gridLayout/reducer.test.ts | 34 + src/modules/public/gridLayout/reducer.ts | 29 + src/modules/public/gridLayout/selectors.ts | 4 + src/modules/public/i18n/actions.ts | 10 + src/modules/public/i18n/constants.ts | 1 + src/modules/public/i18n/index.ts | 3 + src/modules/public/i18n/reducer.test.ts | 13 + src/modules/public/i18n/reducer.ts | 30 + src/modules/public/i18n/selectors.ts | 5 + src/modules/public/kline/actions.test.ts | 38 + src/modules/public/kline/actions.ts | 91 + src/modules/public/kline/constants.ts | 9 + src/modules/public/kline/index.ts | 5 + src/modules/public/kline/reducer.test.ts | 90 + src/modules/public/kline/reducer.ts | 96 + .../kline/sagas/handleKlineFetchSaga.test.ts | 112 + .../kline/sagas/handleKlineFetchSaga.ts | 65 + src/modules/public/kline/sagas/index.ts | 7 + src/modules/public/kline/selectors.ts | 5 + src/modules/public/kline/types.ts | 8 + src/modules/public/markets/actions.ts | 115 + src/modules/public/markets/constants.ts | 9 + src/modules/public/markets/index.ts | 5 + src/modules/public/markets/reducer.test.ts | 144 + src/modules/public/markets/reducer.ts | 113 + .../markets/sagas/marketsFetchSaga.test.ts | 203 + .../public/markets/sagas/marketsFetchSaga.ts | 68 + src/modules/public/markets/selectors.ts | 36 + src/modules/public/markets/types.ts | 58 + .../public/memberLevels/actions.test.ts | 29 + src/modules/public/memberLevels/actions.ts | 36 + src/modules/public/memberLevels/constants.ts | 3 + src/modules/public/memberLevels/index.ts | 5 + .../public/memberLevels/reducer.test.ts | 42 + src/modules/public/memberLevels/reducer.ts | 36 + .../public/memberLevels/sagas/index.ts | 7 + .../sagas/memberLevelsSaga.test.ts | 86 + .../memberLevels/sagas/memberLevelsSaga.ts | 23 + src/modules/public/memberLevels/selectors.ts | 8 + src/modules/public/memberLevels/types.ts | 5 + src/modules/public/orderBook/actions.test.ts | 137 + src/modules/public/orderBook/actions.ts | 122 + src/modules/public/orderBook/constants.ts | 10 + src/modules/public/orderBook/index.ts | 5 + src/modules/public/orderBook/reducer.test.ts | 514 + src/modules/public/orderBook/reducer.ts | 157 + .../public/orderBook/sagas/depthSaga.test.ts | 116 + .../public/orderBook/sagas/depthSaga.ts | 24 + .../sagas/incrementDepthSubscribeSaga.ts | 34 + src/modules/public/orderBook/sagas/index.ts | 11 + .../orderBook/sagas/orderBookSaga.test.ts | 128 + .../public/orderBook/sagas/orderBookSaga.ts | 28 + src/modules/public/orderBook/selectors.ts | 24 + src/modules/public/orderBook/types.ts | 50 + src/modules/public/ranger/actions.ts | 155 + src/modules/public/ranger/constants.ts | 8 + src/modules/public/ranger/helpers.test.ts | 286 + src/modules/public/ranger/helpers.ts | 109 + src/modules/public/ranger/index.ts | 4 + src/modules/public/ranger/reducer.test.ts | 46 + src/modules/public/ranger/reducer.ts | 59 + src/modules/public/ranger/sagas/index.ts | 1 + .../public/ranger/sagas/rangerSaga.test.ts | 771 + src/modules/public/ranger/sagas/rangerSaga.ts | 352 + src/modules/public/ranger/selectors.ts | 14 + src/modules/public/recentTrades/actions.ts | 54 + src/modules/public/recentTrades/constants.ts | 4 + src/modules/public/recentTrades/index.ts | 5 + .../public/recentTrades/reducer.test.ts | 199 + src/modules/public/recentTrades/reducer.ts | 90 + .../public/recentTrades/sagas/index.ts | 7 + .../sagas/recentTradesFetchSaga.test.ts | 130 + .../sagas/recentTradesFetchSaga.ts | 28 + src/modules/public/recentTrades/selectors.ts | 18 + src/modules/public/recentTrades/types.ts | 7 + src/modules/types.ts | 60 + src/modules/user/apiKeys/actions.test.ts | 68 + src/modules/user/apiKeys/actions.ts | 158 + src/modules/user/apiKeys/constants.ts | 10 + src/modules/user/apiKeys/index.ts | 3 + src/modules/user/apiKeys/reducer.test.ts | 43 + src/modules/user/apiKeys/reducer.ts | 110 + .../apiKeys/sagas/apiKeyCreateSaga.test.ts | 101 + .../user/apiKeys/sagas/apiKeyCreateSaga.ts | 29 + .../apiKeys/sagas/apiKeyDeleteSaga.test.ts | 88 + .../user/apiKeys/sagas/apiKeyDeleteSaga.ts | 31 + .../apiKeys/sagas/apiKeyUpdateSaga.test.ts | 104 + .../user/apiKeys/sagas/apiKeyUpdateSaga.ts | 35 + .../user/apiKeys/sagas/apiKeysSaga.test.ts | 109 + src/modules/user/apiKeys/sagas/apiKeysSaga.ts | 34 + src/modules/user/apiKeys/sagas/index.ts | 13 + src/modules/user/apiKeys/selectors.test.ts | 43 + src/modules/user/apiKeys/selectors.ts | 19 + src/modules/user/auth/actions.test.ts | 51 + src/modules/user/auth/actions.ts | 221 + src/modules/user/auth/constants.ts | 22 + src/modules/user/auth/index.ts | 4 + src/modules/user/auth/reducer.test.ts | 84 + src/modules/user/auth/reducer.ts | 90 + .../user/auth/sagas/entropyPassword.ts | 24 + src/modules/user/auth/sagas/index.ts | 21 + .../user/auth/sagas/logoutSaga.test.ts | 79 + src/modules/user/auth/sagas/logoutSaga.ts | 32 + .../user/auth/sagas/signInSaga.test.ts | 105 + src/modules/user/auth/sagas/signInSaga.ts | 50 + src/modules/user/auth/sagas/signUpSaga.ts | 24 + .../user/auth/sagas/verificationSaga.ts | 24 + src/modules/user/auth/selectors.ts | 27 + .../user/authenticationCode/actions.ts | 76 + .../user/authenticationCode/constants.ts | 7 + src/modules/user/authenticationCode/index.ts | 4 + .../user/authenticationCode/reducer.ts | 62 + .../user/authenticationCode/sagas/index.ts | 9 + .../sagas/resendAuthenticationCodeSaga.ts | 28 + .../sagas/sendAuthenticationCodeSaga.ts | 37 + .../user/authenticationCode/selectors.ts | 5 + .../user/beneficiaries/actions.test.ts | 197 + src/modules/user/beneficiaries/actions.ts | 216 + src/modules/user/beneficiaries/constants.ts | 20 + src/modules/user/beneficiaries/index.ts | 5 + .../user/beneficiaries/reducer.test.ts | 348 + src/modules/user/beneficiaries/reducer.ts | 315 + .../sagas/beneficiariesActivateSaga.test.ts | 108 + .../sagas/beneficiariesActivateSaga.ts | 35 + .../sagas/beneficiariesCreateSaga.test.ts | 109 + .../sagas/beneficiariesCreateSaga.ts | 34 + .../sagas/beneficiariesDeleteSaga.test.ts | 94 + .../sagas/beneficiariesDeleteSaga.ts | 28 + .../sagas/beneficiariesResendPinSaga.test.ts | 88 + .../sagas/beneficiariesResendPinSaga.ts | 29 + .../sagas/beneficiariesSaga.test.ts | 111 + .../beneficiaries/sagas/beneficiariesSaga.ts | 29 + src/modules/user/beneficiaries/sagas/index.ts | 21 + src/modules/user/beneficiaries/selectors.ts | 62 + src/modules/user/beneficiaries/types.ts | 28 + src/modules/user/captcha/actions.ts | 97 + src/modules/user/captcha/constants.ts | 9 + src/modules/user/captcha/index.ts | 4 + src/modules/user/captcha/reducer.ts | 84 + .../user/captcha/sagas/geetestCaptchaSaga.ts | 23 + src/modules/user/captcha/sagas/index.ts | 7 + src/modules/user/captcha/selectors.ts | 20 + .../user/customization/actions.test.ts | 32 + src/modules/user/customization/actions.ts | 38 + src/modules/user/customization/constants.ts | 3 + src/modules/user/customization/index.ts | 4 + .../user/customization/reducer.test.ts | 47 + src/modules/user/customization/reducer.ts | 44 + .../sagas/customizationUpdateSaga.test.ts | 88 + .../sagas/customizationUpdateSaga.ts | 25 + src/modules/user/customization/sagas/index.ts | 7 + src/modules/user/customization/selectors.ts | 15 + .../user/documentation/actions.test.ts | 63 + src/modules/user/documentation/actions.ts | 40 + src/modules/user/documentation/constants.ts | 3 + src/modules/user/documentation/index.ts | 5 + .../user/documentation/reducer.test.ts | 73 + src/modules/user/documentation/reducer.ts | 53 + .../sagas/docTradeUserApiFetchSaga.test.ts | 128 + .../sagas/docTradeUserApiFetchSaga.ts | 28 + src/modules/user/documentation/sagas/index.ts | 7 + src/modules/user/documentation/selectors.ts | 21 + src/modules/user/documentation/types.ts | 23 + src/modules/user/emailVerification/actions.ts | 39 + .../user/emailVerification/constants.ts | 3 + src/modules/user/emailVerification/index.ts | 4 + src/modules/user/emailVerification/reducer.ts | 40 + .../sagas/EmailVerificationSaga.test.ts | 80 + .../sagas/emailVerificationSaga.ts | 24 + .../user/emailVerification/sagas/index.ts | 9 + .../user/emailVerification/selectors.ts | 11 + src/modules/user/history/actions.test.ts | 38 + src/modules/user/history/actions.ts | 93 + src/modules/user/history/constants.ts | 6 + src/modules/user/history/index.ts | 5 + src/modules/user/history/reducer.ts | 62 + .../user/history/sagas/historyPushSaga.ts | 13 + .../user/history/sagas/historySaga.test.ts | 109 + src/modules/user/history/sagas/historySaga.ts | 53 + src/modules/user/history/sagas/index.ts | 9 + src/modules/user/history/selectors.ts | 20 + src/modules/user/history/types.ts | 70 + .../user/kyc/addresses/actions.test.ts | 27 + src/modules/user/kyc/addresses/actions.ts | 38 + src/modules/user/kyc/addresses/constants.ts | 3 + src/modules/user/kyc/addresses/index.ts | 4 + .../user/kyc/addresses/reducer.test.ts | 49 + src/modules/user/kyc/addresses/reducer.ts | 38 + src/modules/user/kyc/addresses/sagas/index.ts | 7 + .../addresses/sagas/sendAddressesSaga.test.ts | 89 + .../kyc/addresses/sagas/sendAddressesSaga.ts | 30 + .../user/kyc/addresses/selectors.test.ts | 15 + src/modules/user/kyc/addresses/selectors.ts | 8 + src/modules/user/kyc/documents/actions.ts | 38 + src/modules/user/kyc/documents/constants.ts | 3 + src/modules/user/kyc/documents/index.ts | 4 + .../user/kyc/documents/reducer.test.ts | 40 + src/modules/user/kyc/documents/reducer.ts | 38 + src/modules/user/kyc/documents/sagas/index.ts | 7 + .../documents/sagas/sendDocumentsSaga.test.ts | 89 + .../kyc/documents/sagas/sendDocumentsSaga.ts | 30 + src/modules/user/kyc/documents/selectors.ts | 8 + src/modules/user/kyc/identity/actions.ts | 81 + src/modules/user/kyc/identity/constants.ts | 7 + src/modules/user/kyc/identity/index.ts | 4 + src/modules/user/kyc/identity/reducer.test.ts | 89 + src/modules/user/kyc/identity/reducer.ts | 99 + .../kyc/identity/sagas/editIdentity.test.ts | 93 + .../kyc/identity/sagas/editIdentitySaga.ts | 30 + src/modules/user/kyc/identity/sagas/index.ts | 9 + .../kyc/identity/sagas/sendIdentity.test.ts | 93 + .../kyc/identity/sagas/sendIdentitySaga.ts | 30 + src/modules/user/kyc/identity/selectors.ts | 14 + src/modules/user/kyc/identity/types.ts | 13 + src/modules/user/kyc/index.ts | 13 + src/modules/user/kyc/label/actions.ts | 43 + src/modules/user/kyc/label/constants.ts | 3 + src/modules/user/kyc/label/index.ts | 4 + src/modules/user/kyc/label/reducer.test.ts | 42 + src/modules/user/kyc/label/reducer.ts | 42 + src/modules/user/kyc/label/sagas/index.ts | 7 + .../user/kyc/label/sagas/labelSaga.test.ts | 88 + src/modules/user/kyc/label/sagas/labelSaga.ts | 23 + src/modules/user/kyc/label/selectors.ts | 8 + src/modules/user/kyc/phone/actions.ts | 117 + src/modules/user/kyc/phone/constants.ts | 11 + src/modules/user/kyc/phone/index.ts | 4 + src/modules/user/kyc/phone/reducer.test.ts | 99 + src/modules/user/kyc/phone/reducer.ts | 77 + .../user/kyc/phone/sagas/confirmPhoneSaga.ts | 30 + src/modules/user/kyc/phone/sagas/index.ts | 11 + .../user/kyc/phone/sagas/resendCodeSaga.ts | 28 + .../user/kyc/phone/sagas/sendCodeSaga.test.ts | 82 + .../user/kyc/phone/sagas/sendCodeSaga.ts | 37 + src/modules/user/kyc/phone/selectors.ts | 8 + src/modules/user/openOrders/actions.test.ts | 130 + src/modules/user/openOrders/actions.ts | 118 + src/modules/user/openOrders/constants.ts | 10 + src/modules/user/openOrders/helpers.ts | 48 + src/modules/user/openOrders/index.ts | 4 + src/modules/user/openOrders/reducer.test.ts | 327 + src/modules/user/openOrders/reducer.ts | 65 + src/modules/user/openOrders/sagas/index.ts | 9 + .../sagas/openOrdersCancelSaga.test.ts | 167 + .../openOrders/sagas/openOrdersCancelSaga.ts | 52 + .../sagas/userOpenOrdersFetchSaga.test.ts | 124 + .../sagas/userOpenOrdersFetchSaga.ts | 25 + src/modules/user/openOrders/selectors.ts | 11 + src/modules/user/orders/actions.ts | 87 + src/modules/user/orders/constants.ts | 7 + src/modules/user/orders/index.ts | 4 + src/modules/user/orders/reducer.test.ts | 98 + src/modules/user/orders/reducer.ts | 64 + src/modules/user/orders/sagas/index.ts | 7 + .../orders/sagas/ordersExecuteSaga.test.ts | 107 + .../user/orders/sagas/ordersExecuteSaga.ts | 48 + src/modules/user/orders/selectors.ts | 16 + .../user/ordersHistory/actions.test.ts | 94 + src/modules/user/ordersHistory/actions.ts | 159 + src/modules/user/ordersHistory/constants.ts | 15 + src/modules/user/ordersHistory/helpers.ts | 50 + src/modules/user/ordersHistory/index.ts | 4 + .../user/ordersHistory/reducer.test.ts | 167 + src/modules/user/ordersHistory/reducer.ts | 81 + src/modules/user/ordersHistory/sagas/index.ts | 11 + .../sagas/ordersCancelAllSaga.test.ts | 82 + .../sagas/ordersCancelAllSaga.ts | 28 + .../sagas/ordersHistoryCancelSaga.test.ts | 111 + .../sagas/ordersHistoryCancelSaga.ts | 34 + .../sagas/ordersHistorySaga.test.ts | 121 + .../ordersHistory/sagas/ordersHistorySaga.ts | 35 + src/modules/user/ordersHistory/selectors.ts | 32 + src/modules/user/password/actions.test.ts | 57 + src/modules/user/password/actions.ts | 68 + src/modules/user/password/constants.ts | 6 + src/modules/user/password/index.ts | 4 + src/modules/user/password/reducer.test.ts | 52 + src/modules/user/password/reducer.ts | 58 + .../sagas/changeForgotPasswordSaga.test.ts | 123 + .../sagas/changeForgotPasswordSaga.ts | 24 + .../password/sagas/forgotPasswordSaga.test.ts | 120 + .../user/password/sagas/forgotPasswordSaga.ts | 24 + src/modules/user/password/sagas/index.ts | 9 + src/modules/user/password/selectors.ts | 14 + src/modules/user/profile/actions.test.ts | 169 + src/modules/user/profile/actions.ts | 228 + src/modules/user/profile/constants.ts | 26 + src/modules/user/profile/index.ts | 5 + src/modules/user/profile/reducer.test.ts | 278 + src/modules/user/profile/reducer.ts | 265 + .../profile/sagas/changePasswordSaga.test.ts | 88 + .../user/profile/sagas/changePasswordSaga.ts | 28 + .../profile/sagas/changeUserDataSaga.test.ts | 95 + .../user/profile/sagas/changeUserDataSaga.ts | 27 + .../profile/sagas/generate2faQRSaga.test.ts | 89 + .../user/profile/sagas/generate2faQRSaga.ts | 36 + src/modules/user/profile/sagas/index.ts | 21 + .../user/profile/sagas/toggle2faSaga.test.ts | 88 + .../user/profile/sagas/toggle2faSaga.ts | 32 + .../user/profile/sagas/userSaga.test.ts | 98 + src/modules/user/profile/sagas/userSaga.ts | 23 + src/modules/user/profile/selectors.ts | 29 + src/modules/user/profile/types.ts | 39 + src/modules/user/userActivity/actions.test.ts | 23 + src/modules/user/userActivity/actions.ts | 60 + src/modules/user/userActivity/constants.ts | 3 + src/modules/user/userActivity/index.ts | 4 + src/modules/user/userActivity/reducer.test.ts | 71 + src/modules/user/userActivity/reducer.ts | 49 + src/modules/user/userActivity/sagas/index.ts | 7 + .../sagas/userActivitySaga.test.ts | 113 + .../userActivity/sagas/userActivitySaga.ts | 25 + .../user/userActivity/selectors.test.ts | 51 + src/modules/user/userActivity/selectors.ts | 31 + src/modules/user/wallets/actions.ts | 160 + src/modules/user/wallets/constants.ts | 20 + src/modules/user/wallets/index.ts | 5 + src/modules/user/wallets/reducer.test.ts | 221 + src/modules/user/wallets/reducer.ts | 202 + src/modules/user/wallets/sagas/index.ts | 11 + .../user/wallets/sagas/walletsAddressSaga.ts | 25 + .../user/wallets/sagas/walletsSaga.test.ts | 268 + src/modules/user/wallets/sagas/walletsSaga.ts | 50 + .../user/wallets/sagas/walletsWithdrawSaga.ts | 28 + src/modules/user/wallets/selectors.ts | 20 + src/modules/user/wallets/types.ts | 42 + src/modules/user/withdrawLimit/actions.ts | 35 + src/modules/user/withdrawLimit/constants.ts | 3 + src/modules/user/withdrawLimit/index.ts | 5 + .../user/withdrawLimit/reducer.test.ts | 56 + src/modules/user/withdrawLimit/reducer.ts | 48 + src/modules/user/withdrawLimit/sagas/index.ts | 7 + .../sagas/withdrawLimitSaga.test.ts | 89 + .../withdrawLimit/sagas/withdrawLimitSaga.ts | 24 + .../user/withdrawLimit/selectors.test.ts | 28 + src/modules/user/withdrawLimit/selectors.ts | 16 + src/modules/user/withdrawLimit/types.ts | 6 + src/react-app-env.d.ts | 1 + src/routes/Layout/Layout.pcss | 49 + src/routes/Layout/index.tsx | 521 + src/routes/index.ts | 1 + src/screens/AboutUsScreen/AboutUsScreen.pcss | 826 + src/screens/AboutUsScreen/index.tsx | 215 + .../ChangeForgottenPasswordScreen.pcss | 101 + .../ChangeForgottenPasswordScreen/index.tsx | 143 + src/screens/ConfirmScreen/ConfirmScreen.pcss | 277 + src/screens/ConfirmScreen/index.tsx | 111 + .../DocumentationScreen.pcss | 125 + src/screens/DocumentationScreen/index.tsx | 21 + .../EmailVerification/EmailVerification.pcss | 74 + src/screens/EmailVerification/index.tsx | 192 + .../ForgotPassword/ForgotPassword.pcss | 89 + src/screens/ForgotPassword/index.tsx | 206 + src/screens/History/HistoryTab.pcss | 203 + src/screens/History/index.tsx | 108 + src/screens/LandingScreen/LandingScreen.pcss | 856 + src/screens/LandingScreen/index.tsx | 503 + src/screens/LandingScreen/oldIndex.tsx | 328 + src/screens/MagicLinkScreen/index.tsx | 91 + .../MaintenanceScreen/MaintenanceScreen.pcss | 39 + src/screens/MaintenanceScreen/index.tsx | 67 + .../OrdersTabScreen/OrdersTabScreen.pcss | 250 + src/screens/OrdersTabScreen/index.tsx | 120 + src/screens/ProfileScreen/ProfileScreen.pcss | 808 + src/screens/ProfileScreen/index.tsx | 102 + .../ProfileTwoFactorAuthScreen.pcss | 293 + .../ProfileTwoFactorAuthScreen/close.svg | 3 + .../ProfileTwoFactorAuthScreen/index.tsx | 286 + .../RestrictedScreen/RestrictedScreen.pcss | 22 + src/screens/RestrictedScreen/index.tsx | 55 + src/screens/SignInScreen/SignInScreen.pcss | 106 + src/screens/SignInScreen/index.tsx | 337 + src/screens/SignUpScreen/SignUpScreen.pcss | 176 + src/screens/SignUpScreen/index.tsx | 546 + src/screens/TradingScreen/TradingScreen.pcss | 38 + src/screens/TradingScreen/index.tsx | 262 + src/screens/VerificationScreen/index.tsx | 78 + src/screens/WalletsScreen/WalletsScreen.pcss | 702 + src/screens/WalletsScreen/index.tsx | 716 + src/screens/index.ts | 19 + src/screens/style.pcss | 17 + .../tests/ChangeForgottenPassword.test.tsx | 25 + src/screens/tests/ConfirmScreen.test.tsx | 26 + src/screens/tests/EmailVerification.test.tsx | 25 + src/screens/tests/ForgotPassword.test.tsx | 25 + src/screens/tests/History.test.tsx | 25 + src/screens/tests/MaintenanceScreen.test.tsx | 24 + src/screens/tests/OrdersTabScreen.test.tsx | 25 + src/screens/tests/ProfileScreen.test.tsx | 25 + .../tests/ProfileTwoFactorAuthScreen.test.tsx | 25 + src/screens/tests/RestrictedScreen.test.tsx | 24 + src/screens/tests/SignInScreen.test.tsx | 25 + src/screens/tests/SignUpScreen.test.tsx | 25 + src/screens/tests/VerificationScreen.test.tsx | 36 + src/screens/tests/WalletsScreen.test.tsx | 25 + .../ChangeForgottenPassword.test.tsx.snap | 3 + .../__snapshots__/ConfirmScreen.test.tsx.snap | 3 + .../EmailVerification.test.tsx.snap | 3 + .../ForgotPassword.test.tsx.snap | 3 + .../tests/__snapshots__/History.test.tsx.snap | 3 + .../MaintenanceScreen.test.tsx.snap | 3 + .../OrdersTabScreen.test.tsx.snap | 3 + .../__snapshots__/ProfileScreen.test.tsx.snap | 3 + .../ProfileTwoFactorAuthScreen.test.tsx.snap | 3 + .../RestrictedScreen.test.tsx.snap | 3 + .../__snapshots__/SignInScreen.test.tsx.snap | 3 + .../__snapshots__/SignUpScreen.test.tsx.snap | 3 + .../VerificationScreen.test.tsx.snap | 3 + .../__snapshots__/WalletsScreen.test.tsx.snap | 3 + src/setupTests.js | 4 + src/store.ts | 34 + src/styles/buttons.pcss | 197 + src/styles/colors.pcss | 451 + src/styles/customizationBarColors.pcss | 11 + src/styles/style.pcss | 9 + src/styles/themes/dark.pcss | 51 + src/styles/themes/light.pcss | 50 + src/styles/themes/style.pcss | 2 + src/themes/ColorTitles.ts | 29 + src/themes/index.ts | 23 + src/themes/templates/DarkBlue.tsx | 26 + src/themes/templates/DarkRed.tsx | 26 + src/themes/templates/Green.tsx | 26 + src/themes/templates/Purple.tsx | 26 + src/themes/templates/index.ts | 9 + src/translations/en.ts | 950 ++ src/translations/index.ts | 11 + src/translations/nationalities.ts | 201 + tsconfig.json | 47 + tsconfig.prod.json | 47 + tslint.json | 164 + yarn.lock | 14021 ++++++++++++++++ 2029 files changed, 126991 insertions(+) create mode 100644 .babelrc create mode 100644 .dockerignore create mode 100644 .domains.example create mode 100644 .drone.yml create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 .nvmrc create mode 100644 .prettierrc create mode 100644 .stylelintrc.json create mode 100644 .yarnclean create mode 100644 Dockerfile create mode 100644 Dockerfile.deps create mode 100644 LICENSE.md create mode 100644 README.md create mode 100644 VERSION create mode 100644 __mocks__/fileMock.js create mode 100644 __mocks__/styleMock.js create mode 100644 capacitor.config.json create mode 100644 config-overrides.js create mode 100644 cypress.json create mode 100644 docs/basic_customization.html.md create mode 100644 docs/releases/2.1.0.md create mode 100644 docs/releases/2.2.0.md create mode 100644 docs/roadmap.md create mode 100644 images.d.ts create mode 100644 ionic.config.json create mode 100644 jest.config.js create mode 100644 mocks/api/v2/applogic/customization/GET.mock create mode 100644 mocks/api/v2/applogic/customization/OPTIONS.mock create mode 100644 mocks/api/v2/applogic/customization/POST.mock create mode 100644 mocks/api/v2/dalan/identity/configs/GET.mock create mode 100644 mocks/api/v2/dalan/identity/ping/GET.mock create mode 100644 mocks/api/v2/dalan/identity/sessions/DELETE.mock create mode 100644 mocks/api/v2/dalan/identity/sessions/OPTIONS.mock create mode 100644 mocks/api/v2/dalan/identity/sessions/POST--email=&password=&otp_code=.mock create mode 100644 mocks/api/v2/dalan/identity/sessions/POST--email=accountant@barong.io&password=123123.mock create mode 100644 mocks/api/v2/dalan/identity/sessions/POST--email=admin@barong.io&password=123123&otp_code=&recaptcha_response=.mock create mode 100644 mocks/api/v2/dalan/identity/sessions/POST--email=compliance@barong.io&password=123123&otp_code=.mock create mode 100644 mocks/api/v2/dalan/identity/sessions/POST--email=otp@peatio.tech&password=123123&otp_code=&recaptcha_response=.mock create mode 100644 mocks/api/v2/dalan/identity/sessions/POST--email=otp@peatio.tech&password=123123&otp_code=123456&recaptcha_response=.mock create mode 100644 mocks/api/v2/dalan/identity/sessions/POST--email=superadmin@barong.io&password=123123&otp_code=.mock create mode 100644 mocks/api/v2/dalan/identity/sessions/POST--email=support@barong.io&password=123123&otp_code=.mock create mode 100644 mocks/api/v2/dalan/identity/sessions/POST--email=technical@peatio.tech&password=123123&otp_code=.mock create mode 100644 mocks/api/v2/dalan/identity/sessions/POST--email=toweradmin@barong.io&password=123123&otp_code=.mock create mode 100644 mocks/api/v2/dalan/identity/sessions/POST--email=user1@peatio.tech&password=123123&otp_code=&recaptcha_response=.mock create mode 100644 mocks/api/v2/dalan/identity/sessions/POST--email=user2@peatio.tech&password=123123&otp_code=&recaptcha_response=.mock create mode 100644 mocks/api/v2/dalan/identity/sessions/POST--email=wrong@peatio.tech&password=123123&otp_code=&recaptcha_response=.mock create mode 100644 mocks/api/v2/dalan/identity/sessions/POST.mock create mode 100644 mocks/api/v2/dalan/identity/users/OPTIONS.mock create mode 100644 mocks/api/v2/dalan/identity/users/POST.mock create mode 100644 mocks/api/v2/dalan/identity/users/email/generate_code/OPTIONS.mock create mode 100644 mocks/api/v2/dalan/identity/users/email/generate_code/POST--email=wrong@email.com.mock create mode 100644 mocks/api/v2/dalan/identity/users/email/generate_code/POST.mock create mode 100644 mocks/api/v2/dalan/identity/users/password/confirm_code/OPTIONS.mock create mode 100644 mocks/api/v2/dalan/identity/users/password/confirm_code/POST.mock create mode 100644 mocks/api/v2/dalan/identity/users/password/generate_code/OPTIONS.mock create mode 100644 mocks/api/v2/dalan/identity/users/password/generate_code/POST.mock create mode 100644 mocks/api/v2/dalan/identity/users/register_geetest/GET.mock create mode 100644 mocks/api/v2/dalan/resource/api_keys/GET--page=1&limit=4.mock create mode 100644 mocks/api/v2/dalan/resource/api_keys/GET--page=2&limit=4.mock create mode 100644 mocks/api/v2/dalan/resource/api_keys/GET--page=5&limit=1.mock create mode 100644 mocks/api/v2/dalan/resource/api_keys/GET--totp_code=.mock create mode 100644 mocks/api/v2/dalan/resource/api_keys/GET.mock create mode 100644 mocks/api/v2/dalan/resource/api_keys/OPTIONS.mock create mode 100644 mocks/api/v2/dalan/resource/api_keys/POST--totp_code=&algorithm=HS256.mock create mode 100644 mocks/api/v2/dalan/resource/api_keys/POST.mock create mode 100644 mocks/api/v2/dalan/resource/api_keys/__/DELETE--totp_code=.mock create mode 100644 mocks/api/v2/dalan/resource/api_keys/__/DELETE.mock create mode 100644 mocks/api/v2/dalan/resource/api_keys/__/OPTIONS.mock create mode 100644 mocks/api/v2/dalan/resource/api_keys/__/PATCH--totp_code=000000&state=disabled.mock create mode 100644 mocks/api/v2/dalan/resource/api_keys/__/PATCH.mock create mode 100644 mocks/api/v2/dalan/resource/documents/POST.mock create mode 100644 mocks/api/v2/dalan/resource/labels/GET.mock create mode 100644 mocks/api/v2/dalan/resource/labels/GET03.mock create mode 100644 mocks/api/v2/dalan/resource/labels/GET1.mock create mode 100644 mocks/api/v2/dalan/resource/otp/enable/OPTIONS.mock create mode 100644 mocks/api/v2/dalan/resource/otp/enable/POST--code=0000000.mock create mode 100644 mocks/api/v2/dalan/resource/otp/enable/POST.mock create mode 100644 mocks/api/v2/dalan/resource/otp/generate_qrcode/OPTIONS.mock create mode 100644 mocks/api/v2/dalan/resource/otp/generate_qrcode/POST.mock create mode 100644 mocks/api/v2/dalan/resource/phones/OPTIONS.mock create mode 100644 mocks/api/v2/dalan/resource/phones/POST--phone_number=+1111.mock create mode 100644 mocks/api/v2/dalan/resource/phones/POST--phone_number=+1234.mock create mode 100644 mocks/api/v2/dalan/resource/phones/send_code/OPTIONS.mock create mode 100644 mocks/api/v2/dalan/resource/phones/send_code/POST.mock create mode 100644 mocks/api/v2/dalan/resource/phones/verify/OPTIONS.mock create mode 100644 mocks/api/v2/dalan/resource/phones/verify/POST.mock create mode 100644 mocks/api/v2/dalan/resource/profiles/OPTIONS.mock create mode 100644 mocks/api/v2/dalan/resource/profiles/POST.mock create mode 100644 mocks/api/v2/dalan/resource/users/activity/GET--limit=25&page=1.mock create mode 100644 mocks/api/v2/dalan/resource/users/activity/GET--limit=25&page=2.mock create mode 100644 mocks/api/v2/dalan/resource/users/activity/all/GET--limit=10&page=1.mock create mode 100644 mocks/api/v2/dalan/resource/users/activity/all/GET--limit=10&page=2.mock create mode 100644 mocks/api/v2/dalan/resource/users/activity/all/GET--limit=10&page=3.mock create mode 100644 mocks/api/v2/dalan/resource/users/activity/all/GET--limit=25&page=1.mock create mode 100644 mocks/api/v2/dalan/resource/users/activity/all/GET--limit=25&page=2.mock create mode 100644 mocks/api/v2/dalan/resource/users/activity/all/GET.mock create mode 100644 mocks/api/v2/dalan/resource/users/activity/all/OPTIONS.mock create mode 100644 mocks/api/v2/dalan/resource/users/me/GET.mock create mode 100644 mocks/api/v2/dalan/resource/users/me/GET1.mock create mode 100644 mocks/api/v2/dalan/resource/users/me/OPTIONS.mock create mode 100644 mocks/api/v2/dalan/resource/users/me/PUT.mock create mode 100644 mocks/api/v2/dalan/resource/users/password/OPTIONS.mock create mode 100644 mocks/api/v2/dalan/resource/users/password/PUT--old_password=11111111&new_password=11111111&confirm_password=11111111.mock create mode 100644 mocks/api/v2/dalan/resource/users/password/PUT.mock create mode 100644 mocks/api/v2/dena/account/balances/GET.mock create mode 100644 mocks/api/v2/dena/account/balances/OPTIONS.mock create mode 100644 mocks/api/v2/dena/account/balances/bch/GET.mock create mode 100644 mocks/api/v2/dena/account/balances/bch/OPTIONS.mock create mode 100644 mocks/api/v2/dena/account/balances/btc/GET.mock create mode 100644 mocks/api/v2/dena/account/balances/btc/OPTIONS.mock create mode 100644 mocks/api/v2/dena/account/balances/dash/GET.mock create mode 100644 mocks/api/v2/dena/account/balances/dash/OPTIONS.mock create mode 100644 mocks/api/v2/dena/account/balances/eth/GET.mock create mode 100644 mocks/api/v2/dena/account/balances/eth/OPTIONS.mock create mode 100644 mocks/api/v2/dena/account/balances/eur/GET.mock create mode 100644 mocks/api/v2/dena/account/balances/eur/OPTIONS.mock create mode 100644 mocks/api/v2/dena/account/balances/irt/GET.mock create mode 100644 mocks/api/v2/dena/account/balances/irt/OPTIONS.mock create mode 100644 mocks/api/v2/dena/account/balances/ltc/GET.mock create mode 100644 mocks/api/v2/dena/account/balances/ltc/OPTIONS.mock create mode 100644 mocks/api/v2/dena/account/balances/usd/GET.mock create mode 100644 mocks/api/v2/dena/account/balances/usd/OPTIONS.mock create mode 100644 mocks/api/v2/dena/account/balances/xrp/GET.mock create mode 100644 mocks/api/v2/dena/account/balances/xrp/OPTIONS.mock create mode 100644 mocks/api/v2/dena/account/balances/zar/GET.mock create mode 100644 mocks/api/v2/dena/account/balances/zar/OPTIONS.mock create mode 100644 mocks/api/v2/dena/account/beneficiaries/10/DELETE.mock create mode 100644 mocks/api/v2/dena/account/beneficiaries/10/OPTIONS.mock create mode 100644 mocks/api/v2/dena/account/beneficiaries/10/activate/OPTIONS.mock create mode 100644 mocks/api/v2/dena/account/beneficiaries/10/activate/PATCH--pin=111111&id=10.mock create mode 100644 mocks/api/v2/dena/account/beneficiaries/10/activate/PATCH.mock create mode 100644 mocks/api/v2/dena/account/beneficiaries/10/activate/POST.mock create mode 100644 mocks/api/v2/dena/account/beneficiaries/10/resend_pin/OPTIONS.mock create mode 100644 mocks/api/v2/dena/account/beneficiaries/10/resend_pin/PATCH--id=10.mock create mode 100644 mocks/api/v2/dena/account/beneficiaries/10/resend_pin/PATCH.mock create mode 100644 mocks/api/v2/dena/account/beneficiaries/GET.mock create mode 100644 mocks/api/v2/dena/account/beneficiaries/OPTIONS.mock create mode 100644 mocks/api/v2/dena/account/beneficiaries/POST--currency=btc&name=111&data.address=111.mock create mode 100644 mocks/api/v2/dena/account/beneficiaries/POST.mock create mode 100644 mocks/api/v2/dena/account/deposit_address/bch/GET.mock create mode 100644 mocks/api/v2/dena/account/deposit_address/bch/OPTIONS.mock create mode 100644 mocks/api/v2/dena/account/deposit_address/btc/GET.mock create mode 100644 mocks/api/v2/dena/account/deposit_address/btc/OPTIONS.mock create mode 100644 mocks/api/v2/dena/account/deposit_address/dash/GET.mock create mode 100644 mocks/api/v2/dena/account/deposit_address/dash/OPTIONS.mock create mode 100644 mocks/api/v2/dena/account/deposit_address/eth/GET.mock create mode 100644 mocks/api/v2/dena/account/deposit_address/eth/OPTIONS.mock create mode 100644 mocks/api/v2/dena/account/deposit_address/ltc/GET.mock create mode 100644 mocks/api/v2/dena/account/deposit_address/ltc/OPTIONS.mock create mode 100644 mocks/api/v2/dena/account/deposit_address/xrp/GET.mock create mode 100644 mocks/api/v2/dena/account/deposit_address/xrp/OPTIONS.mock create mode 100644 mocks/api/v2/dena/account/deposits/GET--limit=1¤cy=btc&page=7.mock create mode 100644 mocks/api/v2/dena/account/deposits/GET--limit=100.mock create mode 100644 mocks/api/v2/dena/account/deposits/GET--limit=6¤cy=btc&page=1.mock create mode 100644 mocks/api/v2/dena/account/deposits/GET--limit=6¤cy=btc&page=2.mock create mode 100644 mocks/api/v2/dena/account/deposits/GET--page=1&limit=25.mock create mode 100644 mocks/api/v2/dena/account/deposits/GET--page=2&limit=25.mock create mode 100644 mocks/api/v2/dena/account/deposits/GET.mock create mode 100644 mocks/api/v2/dena/account/deposits/OPTIONS.mock create mode 100644 mocks/api/v2/dena/account/history/GET--currency=btc&sort=date&order=asc&start_date=2019-04-01&end_date=2019-04-08.mock create mode 100644 mocks/api/v2/dena/account/history/GET--currency=btc&sort=date&order=asc.mock create mode 100644 mocks/api/v2/dena/account/history/GET--currency=btc&sort=date&order=desc&start_date=2019-04-01&end_date=2019-04-08.mock create mode 100644 mocks/api/v2/dena/account/history/GET--currency=btc&sort=date&order=desc.mock create mode 100644 mocks/api/v2/dena/account/history/GET--filter=deposit+withdraw¤cy=btc&sort=date&order=asc&start_date=2019-04-01&end_date=2019-04-08.mock create mode 100644 mocks/api/v2/dena/account/history/GET--filter=deposit+withdraw¤cy=btc&sort=date&order=asc.mock create mode 100644 mocks/api/v2/dena/account/history/GET--filter=deposit+withdraw¤cy=btc&sort=date&order=desc&start_date=2019-04-01&end_date=2019-04-08.mock create mode 100644 mocks/api/v2/dena/account/history/GET--filter=deposit+withdraw¤cy=btc&sort=date&order=desc.mock create mode 100644 mocks/api/v2/dena/account/history/GET--filter=trade¤cy=btc&sort=date&order=asc&start_date=2019-04-01&end_date=2019-04-08.mock create mode 100644 mocks/api/v2/dena/account/history/GET--filter=trade¤cy=btc&sort=date&order=asc.mock create mode 100644 mocks/api/v2/dena/account/history/GET--filter=trade¤cy=btc&sort=date&order=desc&start_date=2019-04-01&end_date=2019-04-08.mock create mode 100644 mocks/api/v2/dena/account/history/GET--filter=trade¤cy=btc&sort=date&order=desc.mock create mode 100644 mocks/api/v2/dena/account/history/GET--limit=5¤cy=btc&sort=date&order=asc.mock create mode 100644 mocks/api/v2/dena/account/history/GET--limit=5¤cy=btc&sort=date&order=desc.mock create mode 100644 mocks/api/v2/dena/account/history/GET.mock create mode 100644 mocks/api/v2/dena/account/history/OPTIONS.mock create mode 100644 mocks/api/v2/dena/account/levels/GET.mock create mode 100644 mocks/api/v2/dena/account/levels/OPTIONS.mock create mode 100644 mocks/api/v2/dena/account/withdraws/GET--limit=100.mock create mode 100644 mocks/api/v2/dena/account/withdraws/GET--page=1&limit=25.mock create mode 100644 mocks/api/v2/dena/account/withdraws/GET--page=2&limit=25.mock create mode 100644 mocks/api/v2/dena/account/withdraws/GET.mock create mode 100644 mocks/api/v2/dena/account/withdraws/OPTIONS.mock create mode 100644 mocks/api/v2/dena/account/withdraws/POST.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--limit=25&page=2&state=wait.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--market=bchbtc&state=cancel.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--market=bchbtc&state=done.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--market=bchbtc&state=wait.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--market=bchbtc.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--market=bchzar&state=cancel.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--market=bchzar&state=done.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--market=bchzar&state=wait.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--market=bchzar.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--market=btczar&state=cancel.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--market=btczar&state=done.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--market=btczar&state=wait.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--market=btczar.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--market=dashbtc&state=cancel.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--market=dashbtc&state=done.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--market=dashbtc&state=wait.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--market=dashbtc.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--market=dashzar&state=cancel.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--market=dashzar&state=done.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--market=dashzar&state=wait.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--market=dashzar.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--market=ethbtc&state=cancel.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--market=ethbtc&state=done.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--market=ethbtc&state=wait.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--market=ethbtc.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--market=ethusd&state=cancel.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--market=ethusd&state=done.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--market=ethusd&state=wait.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--market=ethusd.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--market=ethzar&state=cancel.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--market=ethzar&state=done.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--market=ethzar&state=wait.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--market=ethzar.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--market=eurusd&state=cancel.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--market=eurusd&state=done.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--market=eurusd&state=wait.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--market=eurusd.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--market=ltcbtc&state=cancel.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--market=ltcbtc&state=done.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--market=ltcbtc&state=wait.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--market=ltcbtc.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--market=ltczar&state=cancel.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--market=ltczar&state=done.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--market=ltczar&state=wait.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--market=ltczar.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--market=xrpbtc&state=cancel.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--market=xrpbtc&state=done.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--market=xrpbtc&state=wait.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--market=xrpbtc.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--market=xrpzar&state=cancel.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--market=xrpzar&state=done.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--market=xrpzar&state=wait.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--market=xrpzar.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--page=1&limit=25&state=wait.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--page=1&limit=25.mock create mode 100644 mocks/api/v2/dena/market/orders/GET--page=2&limit=25.mock create mode 100644 mocks/api/v2/dena/market/orders/GET.mock create mode 100644 mocks/api/v2/dena/market/orders/OPTIONS.mock create mode 100644 mocks/api/v2/dena/market/orders/POST--market=ethbtc&side=buy&volume=0.5&ord_type=market.mock create mode 100644 mocks/api/v2/dena/market/orders/POST--market=ethbtc&side=buy&volume=1.5&ord_type=market.mock create mode 100644 mocks/api/v2/dena/market/orders/POST--market=ethbtc&side=sell&volume=2&ord_type=limit&price=20.mock create mode 100644 mocks/api/v2/dena/market/orders/POST--market=ethusd&side=buy&volume=0.5&ord_type=market.mock create mode 100644 mocks/api/v2/dena/market/orders/POST--market=ethusd&side=buy&volume=1&ord_type=limit&price=10.mock create mode 100644 mocks/api/v2/dena/market/orders/POST--market=ethusd&side=sell&volume=1&ord_type=market.mock create mode 100644 mocks/api/v2/dena/market/orders/POST--market=ethusd&side=sell&volume=2&ord_type=limit&price=20.mock create mode 100644 mocks/api/v2/dena/market/orders/POST.mock create mode 100644 mocks/api/v2/dena/market/orders/__/cancel/OPTIONS.mock create mode 100644 mocks/api/v2/dena/market/orders/__/cancel/POST.mock create mode 100644 mocks/api/v2/dena/market/orders/cancel/OPTIONS.mock create mode 100644 mocks/api/v2/dena/market/orders/cancel/POST.mock create mode 100644 mocks/api/v2/dena/market/trades/--GET--page=1&limit=25.mock create mode 100644 mocks/api/v2/dena/market/trades/GET--market=bchzar.mock create mode 100644 mocks/api/v2/dena/market/trades/GET--market=btczar.mock create mode 100644 mocks/api/v2/dena/market/trades/GET--market=dashbtc.mock create mode 100644 mocks/api/v2/dena/market/trades/GET--market=ethbtc.mock create mode 100644 mocks/api/v2/dena/market/trades/GET--market=eurusd.mock create mode 100644 mocks/api/v2/dena/market/trades/GET--page=1&limit=25.mock create mode 100644 mocks/api/v2/dena/market/trades/GET.mock create mode 100644 mocks/api/v2/dena/market/trades/OPTIONS.mock create mode 100644 mocks/api/v2/dena/public/currencies/GET.mock create mode 100644 mocks/api/v2/dena/public/markets/GET.mock create mode 100644 mocks/api/v2/dena/public/markets/OPTIONS.mock create mode 100644 mocks/api/v2/dena/public/markets/bchzar/depth/GET.mock create mode 100644 mocks/api/v2/dena/public/markets/bchzar/depth/OPTIONS.mock create mode 100644 mocks/api/v2/dena/public/markets/bchzar/depth/script.js create mode 100644 mocks/api/v2/dena/public/markets/bchzar/k-line/GET.mock create mode 100644 mocks/api/v2/dena/public/markets/bchzar/k-line/OPTIONS.mock create mode 100644 mocks/api/v2/dena/public/markets/bchzar/trades/GET.mock create mode 100644 mocks/api/v2/dena/public/markets/bchzar/trades/OPTIONS.mock create mode 100644 mocks/api/v2/dena/public/markets/btczar/depth/GET.mock create mode 100644 mocks/api/v2/dena/public/markets/btczar/depth/OPTIONS.mock create mode 100644 mocks/api/v2/dena/public/markets/btczar/depth/script.js create mode 100644 mocks/api/v2/dena/public/markets/btczar/k-line/GET.mock create mode 100644 mocks/api/v2/dena/public/markets/btczar/k-line/OPTIONS.mock create mode 100644 mocks/api/v2/dena/public/markets/btczar/trades/GET.mock create mode 100644 mocks/api/v2/dena/public/markets/btczar/trades/OPTIONS.mock create mode 100644 mocks/api/v2/dena/public/markets/dashbtc/depth/GET.mock create mode 100644 mocks/api/v2/dena/public/markets/dashbtc/depth/OPTIONS.mock create mode 100644 mocks/api/v2/dena/public/markets/dashbtc/depth/script.js create mode 100644 mocks/api/v2/dena/public/markets/dashbtc/k-line/GET.mock create mode 100644 mocks/api/v2/dena/public/markets/dashbtc/k-line/OPTIONS.mock create mode 100644 mocks/api/v2/dena/public/markets/dashbtc/trades/GET.mock create mode 100644 mocks/api/v2/dena/public/markets/dashbtc/trades/OPTIONS.mock create mode 100644 mocks/api/v2/dena/public/markets/ethbtc/depth/GET.mock create mode 100644 mocks/api/v2/dena/public/markets/ethbtc/depth/OPTIONS.mock create mode 100644 mocks/api/v2/dena/public/markets/ethbtc/depth/script.js create mode 100644 mocks/api/v2/dena/public/markets/ethbtc/k-line/GET.mock create mode 100644 mocks/api/v2/dena/public/markets/ethbtc/k-line/OPTIONS.mock create mode 100644 mocks/api/v2/dena/public/markets/ethbtc/trades/GET.mock create mode 100644 mocks/api/v2/dena/public/markets/ethbtc/trades/OPTIONS.mock create mode 100644 mocks/api/v2/dena/public/markets/eurusd/depth/GET.mock create mode 100644 mocks/api/v2/dena/public/markets/eurusd/depth/OPTIONS.mock create mode 100644 mocks/api/v2/dena/public/markets/eurusd/k-line/GET.mock create mode 100644 mocks/api/v2/dena/public/markets/eurusd/k-line/OPTIONS.mock create mode 100644 mocks/api/v2/dena/public/markets/eurusd/trades/GET.mock create mode 100644 mocks/api/v2/dena/public/markets/eurusd/trades/OPTIONS.mock create mode 100644 mocks/api/v2/dena/public/markets/k-line.js create mode 100644 mocks/api/v2/dena/public/markets/tickers/GET.mock create mode 100644 mocks/api/v2/dena/public/markets/tickers/OPTIONS.mock create mode 100644 mocks/api/v2/dena/public/markets/tickers/script.js create mode 100644 mocks/api/v2/dena/public/member-levels/GET.mock create mode 100644 mocks/api/v2/dena/public/member-levels/OPTIONS.mock create mode 100644 mocks/api/v2/dena/swagger/GET.mock create mode 100644 mocks/api/v2/finex/public/markets/GET.mock create mode 100644 mocks/api/v2/finex/public/markets/OPTIONS.mock create mode 100644 mocks/helpers.js create mode 100644 mocks/markets.js create mode 100644 mocks/mockAPI.js create mode 100644 mocks/mockWS.js create mode 100644 mocks/mockserver.js create mode 100644 mocks/ranger.js create mode 100644 nginx.conf create mode 100644 package.json create mode 100644 postcss.config.js create mode 100644 public/charting_library/charting_library.min.d.ts create mode 100644 public/charting_library/charting_library.min.js create mode 100644 public/charting_library/datafeed-api.d.ts create mode 100644 public/charting_library/static/ar-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 public/charting_library/static/bundles/0.1d4cbcaddbec7d8c5363.js create mode 100644 public/charting_library/static/bundles/1.2fa13f88d2bf6ae6f3f0.css create mode 100644 public/charting_library/static/bundles/1.2fa13f88d2bf6ae6f3f0.rtl.css create mode 100644 public/charting_library/static/bundles/1.ea828ac684caa2b94a1b.js create mode 100644 public/charting_library/static/bundles/10.0501e55a3ef6aa50aec6.js create mode 100644 public/charting_library/static/bundles/10.c0a8664f16f3834961e4.css create mode 100644 public/charting_library/static/bundles/10.c0a8664f16f3834961e4.rtl.css create mode 100644 public/charting_library/static/bundles/11.b900b9cb8ed6dd3bc321.css create mode 100644 public/charting_library/static/bundles/11.b900b9cb8ed6dd3bc321.rtl.css create mode 100644 public/charting_library/static/bundles/11.dd520838f92e45cd91e3.js create mode 100644 public/charting_library/static/bundles/12.18e3c4b9c329e737cb80.js create mode 100644 public/charting_library/static/bundles/12.87f9777d9fe2086ce090.css create mode 100644 public/charting_library/static/bundles/12.87f9777d9fe2086ce090.rtl.css create mode 100644 public/charting_library/static/bundles/13.46f312828e93b6546d0c.js create mode 100644 public/charting_library/static/bundles/14.579d7892443d1a90180c.js create mode 100644 public/charting_library/static/bundles/15.19c5212d15382007773d.js create mode 100644 public/charting_library/static/bundles/16.cc58f582c191485d9392.css create mode 100644 public/charting_library/static/bundles/16.cc58f582c191485d9392.rtl.css create mode 100644 public/charting_library/static/bundles/16.e0d00f8a564954896734.js create mode 100644 public/charting_library/static/bundles/17.00b04a06a8cd9c6f5f6c.js create mode 100644 public/charting_library/static/bundles/18.183d41ade16dae257526.css create mode 100644 public/charting_library/static/bundles/18.183d41ade16dae257526.rtl.css create mode 100644 public/charting_library/static/bundles/18.e4c458360dbad4de5cf6.js create mode 100644 public/charting_library/static/bundles/19.aba848e28ec755548668.css create mode 100644 public/charting_library/static/bundles/19.aba848e28ec755548668.rtl.css create mode 100644 public/charting_library/static/bundles/19.c5542d290eefbb001433.js create mode 100644 public/charting_library/static/bundles/2.195070ea59b3395625da.js create mode 100644 public/charting_library/static/bundles/2.a3e34146d368d13b6bc1.css create mode 100644 public/charting_library/static/bundles/2.a3e34146d368d13b6bc1.rtl.css create mode 100644 public/charting_library/static/bundles/20.2416da4fc4c075b56691.js create mode 100644 public/charting_library/static/bundles/20.f75162343321d7d9178c.css create mode 100644 public/charting_library/static/bundles/20.f75162343321d7d9178c.rtl.css create mode 100644 public/charting_library/static/bundles/21.7e987db0ed47cc3f789c.css create mode 100644 public/charting_library/static/bundles/21.7e987db0ed47cc3f789c.rtl.css create mode 100644 public/charting_library/static/bundles/21.fc856808959a5b8734f7.js create mode 100644 public/charting_library/static/bundles/22.c118eafc7686081984c8.js create mode 100644 public/charting_library/static/bundles/22.f31ebffc8672752a2d4b.css create mode 100644 public/charting_library/static/bundles/22.f31ebffc8672752a2d4b.rtl.css create mode 100644 public/charting_library/static/bundles/23.7c4be219df640cb3880c.css create mode 100644 public/charting_library/static/bundles/23.7c4be219df640cb3880c.rtl.css create mode 100644 public/charting_library/static/bundles/23.e89d09694523563b8f86.js create mode 100644 public/charting_library/static/bundles/24.319f9ed9725f3cea260a.js create mode 100644 public/charting_library/static/bundles/25.15d449d35706e01821dd.js create mode 100644 public/charting_library/static/bundles/26.16e9146c09ea7d6b839a.js create mode 100644 public/charting_library/static/bundles/27.54aad15135c7ea57b345.js create mode 100644 public/charting_library/static/bundles/28.3f2589cd73664ea3f3e3.js create mode 100644 public/charting_library/static/bundles/29.6a6accc00e80feb13030.js create mode 100644 public/charting_library/static/bundles/3.f41fdd1a128935b63e5b.js create mode 100644 public/charting_library/static/bundles/30.c3cc90c5fbe9a2b87ffb.js create mode 100644 public/charting_library/static/bundles/31.5c895c4f655400b0b4e2.css create mode 100644 public/charting_library/static/bundles/31.5c895c4f655400b0b4e2.rtl.css create mode 100644 public/charting_library/static/bundles/31.d081df3316799b489847.js create mode 100644 public/charting_library/static/bundles/32.48df7a8cdc38d60b308b.js create mode 100644 public/charting_library/static/bundles/32.b92773bfff0363a69bb9.css create mode 100644 public/charting_library/static/bundles/32.b92773bfff0363a69bb9.rtl.css create mode 100644 public/charting_library/static/bundles/33.4a74c62095be3045c87e.js create mode 100644 public/charting_library/static/bundles/33.ac320c107772f8e72252.css create mode 100644 public/charting_library/static/bundles/33.ac320c107772f8e72252.rtl.css create mode 100644 public/charting_library/static/bundles/34.17e0ce399a577f17ba55.js create mode 100644 public/charting_library/static/bundles/34.dd27b311326fd1fc6fde.css create mode 100644 public/charting_library/static/bundles/34.dd27b311326fd1fc6fde.rtl.css create mode 100644 public/charting_library/static/bundles/35.47b9d16b3fa10b495a11.css create mode 100644 public/charting_library/static/bundles/35.47b9d16b3fa10b495a11.rtl.css create mode 100644 public/charting_library/static/bundles/35.58433cec10095e3c1b7e.js create mode 100644 public/charting_library/static/bundles/36.2ee80b40751fcc88a65c.js create mode 100644 public/charting_library/static/bundles/36.e9a6bec06ee11d2c2d4a.css create mode 100644 public/charting_library/static/bundles/36.e9a6bec06ee11d2c2d4a.rtl.css create mode 100644 public/charting_library/static/bundles/37.065a5f2249aafcfe50ec.css create mode 100644 public/charting_library/static/bundles/37.065a5f2249aafcfe50ec.rtl.css create mode 100644 public/charting_library/static/bundles/37.1735365b01406a8d696d.js create mode 100644 public/charting_library/static/bundles/38.4073381c29c4e2bc2209.css create mode 100644 public/charting_library/static/bundles/38.4073381c29c4e2bc2209.rtl.css create mode 100644 public/charting_library/static/bundles/38.9ae2eea9402c30aa3046.js create mode 100644 public/charting_library/static/bundles/39.5f64b4bc2e263edfbf6e.css create mode 100644 public/charting_library/static/bundles/39.5f64b4bc2e263edfbf6e.rtl.css create mode 100644 public/charting_library/static/bundles/39.7e524b82ef9947f0f19f.js create mode 100644 public/charting_library/static/bundles/4.80bf1a925965757be6d4.js create mode 100644 public/charting_library/static/bundles/40.0f54f57304896d7506a2.css create mode 100644 public/charting_library/static/bundles/40.0f54f57304896d7506a2.rtl.css create mode 100644 public/charting_library/static/bundles/40.42bd9598272e9dd24457.js create mode 100644 public/charting_library/static/bundles/41.11c024e8e0504741fd66.js create mode 100644 public/charting_library/static/bundles/41.1dc91fcdd5dbde1247d7.css create mode 100644 public/charting_library/static/bundles/41.1dc91fcdd5dbde1247d7.rtl.css create mode 100644 public/charting_library/static/bundles/42.0491acaaf55887f7fcb3.js create mode 100644 public/charting_library/static/bundles/42.db948a104cb86b7df06e.css create mode 100644 public/charting_library/static/bundles/42.db948a104cb86b7df06e.rtl.css create mode 100644 public/charting_library/static/bundles/43.12df9892872230fa2898.css create mode 100644 public/charting_library/static/bundles/43.12df9892872230fa2898.rtl.css create mode 100644 public/charting_library/static/bundles/43.4ae432f1b8259dbfd0e5.js create mode 100644 public/charting_library/static/bundles/44.01ec30ff4ce8cf7fa8e5.css create mode 100644 public/charting_library/static/bundles/44.01ec30ff4ce8cf7fa8e5.rtl.css create mode 100644 public/charting_library/static/bundles/44.7aabc64d3dfb54c85d60.js create mode 100644 public/charting_library/static/bundles/45.6c1fc3ac2f6063249f97.js create mode 100644 public/charting_library/static/bundles/45.e09d2beed14ffd8995a9.css create mode 100644 public/charting_library/static/bundles/45.e09d2beed14ffd8995a9.rtl.css create mode 100644 public/charting_library/static/bundles/46.75a0e6fecbc3c92a6bc7.js create mode 100644 public/charting_library/static/bundles/46.923fdbea563cd1d28d4c.css create mode 100644 public/charting_library/static/bundles/46.923fdbea563cd1d28d4c.rtl.css create mode 100644 public/charting_library/static/bundles/47.773635a99e184d6dc131.js create mode 100644 public/charting_library/static/bundles/47.b48791ffffadc9c96a10.css create mode 100644 public/charting_library/static/bundles/47.b48791ffffadc9c96a10.rtl.css create mode 100644 public/charting_library/static/bundles/48.912258c9b4f11cd518c3.css create mode 100644 public/charting_library/static/bundles/48.912258c9b4f11cd518c3.rtl.css create mode 100644 public/charting_library/static/bundles/48.9d08141ee2d55bcad3e7.js create mode 100644 public/charting_library/static/bundles/49.0cb5c561f3b28a047912.css create mode 100644 public/charting_library/static/bundles/49.0cb5c561f3b28a047912.rtl.css create mode 100644 public/charting_library/static/bundles/49.929acbc67c2613c57f58.js create mode 100644 public/charting_library/static/bundles/5.1beaffde9123ffaeff74.js create mode 100644 public/charting_library/static/bundles/50.2c50aad369bf63f77061.js create mode 100644 public/charting_library/static/bundles/50.e2f9bc14536ad546e595.css create mode 100644 public/charting_library/static/bundles/50.e2f9bc14536ad546e595.rtl.css create mode 100644 public/charting_library/static/bundles/51.30c5804303a9f1c455e3.js create mode 100644 public/charting_library/static/bundles/51.a35e4c0d0b08a018e307.css create mode 100644 public/charting_library/static/bundles/51.a35e4c0d0b08a018e307.rtl.css create mode 100644 public/charting_library/static/bundles/52.be1d70abe1a172cc5c3a.css create mode 100644 public/charting_library/static/bundles/52.be1d70abe1a172cc5c3a.rtl.css create mode 100644 public/charting_library/static/bundles/52.c212ca3684de16c6f115.js create mode 100644 public/charting_library/static/bundles/53.3f6d736abe33683640bc.css create mode 100644 public/charting_library/static/bundles/53.3f6d736abe33683640bc.rtl.css create mode 100644 public/charting_library/static/bundles/53.7217742e39b70fc9d431.js create mode 100644 public/charting_library/static/bundles/54.9eb4ca2a30197d95fe82.js create mode 100644 public/charting_library/static/bundles/54.cf540e4ba48bf75e96c2.css create mode 100644 public/charting_library/static/bundles/54.cf540e4ba48bf75e96c2.rtl.css create mode 100644 public/charting_library/static/bundles/55.7707e6ae9f2ec8cfb656.js create mode 100644 public/charting_library/static/bundles/55.c11884ad80d526214fb6.css create mode 100644 public/charting_library/static/bundles/55.c11884ad80d526214fb6.rtl.css create mode 100644 public/charting_library/static/bundles/56.83cd8456e872f49059c3.js create mode 100644 public/charting_library/static/bundles/56.ea0c135a2b02b495fbb5.css create mode 100644 public/charting_library/static/bundles/56.ea0c135a2b02b495fbb5.rtl.css create mode 100644 public/charting_library/static/bundles/57.6384b62456dc4fed6ffb.js create mode 100644 public/charting_library/static/bundles/57.651927021db01a7ed13f.css create mode 100644 public/charting_library/static/bundles/57.651927021db01a7ed13f.rtl.css create mode 100644 public/charting_library/static/bundles/58.8077d6b199609737b3d5.js create mode 100644 public/charting_library/static/bundles/58.82b7bef062a290e587d4.css create mode 100644 public/charting_library/static/bundles/58.82b7bef062a290e587d4.rtl.css create mode 100644 public/charting_library/static/bundles/6.35dee0cfeb8a4d70732c.css create mode 100644 public/charting_library/static/bundles/6.35dee0cfeb8a4d70732c.rtl.css create mode 100644 public/charting_library/static/bundles/6.902d5f3923d45b49b876.js create mode 100644 public/charting_library/static/bundles/7.e98fce2ffac2c552565f.css create mode 100644 public/charting_library/static/bundles/7.e98fce2ffac2c552565f.rtl.css create mode 100644 public/charting_library/static/bundles/7.fc0941206f7b7d32812d.js create mode 100644 public/charting_library/static/bundles/8.180c6bdc716e5045b645.css create mode 100644 public/charting_library/static/bundles/8.180c6bdc716e5045b645.rtl.css create mode 100644 public/charting_library/static/bundles/8.62bd4ee21281906a7019.js create mode 100644 public/charting_library/static/bundles/9.855edb9bea2352bd5129.js create mode 100644 public/charting_library/static/bundles/add-compare-dialog.e9db1b14483f3e7358f4.js create mode 100644 public/charting_library/static/bundles/change-interval-dialog.c8c04c297cc329376f2b.js create mode 100644 public/charting_library/static/bundles/chart-bottom-toolbar.da7ac0cc35cc8a26f65a.js create mode 100644 public/charting_library/static/bundles/chart-widget-gui.8005316cfc1f06be4bf0.js create mode 100644 public/charting_library/static/bundles/clipboard.5403f9bd852af06addff.js create mode 100644 public/charting_library/static/bundles/confirm-inputs-dialog.f9823e95a365cd8974c9.js create mode 100644 public/charting_library/static/bundles/confirm-symbol-input-dialog.c72289c830292c73812f.js create mode 100644 public/charting_library/static/bundles/context-menu-renderer.5eff9c34fa03e94b2c1b.js create mode 100644 public/charting_library/static/bundles/create-dialog.472fe015128398f27a86.js create mode 100644 public/charting_library/static/bundles/crosshair.6c091f7d5427d0c5e6d9dc3a90eb2b20.cur create mode 100644 public/charting_library/static/bundles/dialogs-core.c712826575e8ea62d8e0.js create mode 100644 public/charting_library/static/bundles/dialogs-core.e9f630dd3fdeb4ceee21.css create mode 100644 public/charting_library/static/bundles/dialogs-core.e9f630dd3fdeb4ceee21.rtl.css create mode 100644 public/charting_library/static/bundles/dot.ed68e83c16f77203e73dbc4c3a7c7fa1.cur create mode 100644 public/charting_library/static/bundles/drawing-toolbar.35360bdf4aedb7db7287.js create mode 100644 public/charting_library/static/bundles/ds-property-pages.33a0b54c87f584f79681.js create mode 100644 public/charting_library/static/bundles/editobjectdialog.a4fd348616e0724542ac.js create mode 100644 public/charting_library/static/bundles/eraser.0579d40b812fa2c3ffe72e5803a6e14c.cur create mode 100644 public/charting_library/static/bundles/export-data.ea9e219d1d41389ea3b7.js create mode 100644 public/charting_library/static/bundles/floating-toolbars.d7f25f59513991368767.js create mode 100644 public/charting_library/static/bundles/fontawesome-webfont.3293616ec0c605c7c2db25829a0a509e.woff create mode 100644 public/charting_library/static/bundles/fontawesome-webfont.40f9a03d174178efb12303caa9bc7cd8.woff2 create mode 100644 public/charting_library/static/bundles/go-to-date-dialog-impl.51162344726d8956c763.js create mode 100644 public/charting_library/static/bundles/grab.bc156522a6b55a60be9fae15c14b66c5.cur create mode 100644 public/charting_library/static/bundles/grabbing.1c0862a8a8c0fb02885557bc97fdafe7.cur create mode 100644 public/charting_library/static/bundles/hammerjs.46686dd839f22b742351.js create mode 100644 public/charting_library/static/bundles/header-toolbar.743cca210a6a3e37939e.js create mode 100644 public/charting_library/static/bundles/ie-fallback-logos.589046871bfa17cbfbda.js create mode 100644 public/charting_library/static/bundles/lazy-jquery-ui.3a9fe36168ca8e6cacb8.js create mode 100644 public/charting_library/static/bundles/lazy-velocity.d040cf1092d3b2920dde.js create mode 100644 public/charting_library/static/bundles/library.bb7ca756e7cbe50becb3.css create mode 100644 public/charting_library/static/bundles/library.bb7ca756e7cbe50becb3.rtl.css create mode 100644 public/charting_library/static/bundles/library.e964cdc99937c68d0389.js create mode 100644 public/charting_library/static/bundles/line-tools-icons.c89643eed013eb0ff7c1.js create mode 100644 public/charting_library/static/bundles/load-chart-dialog.24806d5c5be9fbdfd103.js create mode 100644 public/charting_library/static/bundles/lt-pane-views.e06093931461762ecd11.js create mode 100644 public/charting_library/static/bundles/moment.fdf50ccef2c78863664d.js create mode 100644 public/charting_library/static/bundles/new-edit-object-dialog.232c44a337440602cba4.js create mode 100644 public/charting_library/static/bundles/objecttreedialog.bb84539d18c87a88a80b.js create mode 100644 public/charting_library/static/bundles/opacity-pattern.a6506134daec7169f68f563f084a9d41.svg create mode 100644 public/charting_library/static/bundles/precache-manifest.60144109bbe17651b1eb050c29e4f6f4.js create mode 100644 public/charting_library/static/bundles/react.cdaa9c19dda854fad341.js create mode 100644 public/charting_library/static/bundles/restricted-toolset.e356a29caff335c91f6b.js create mode 100644 public/charting_library/static/bundles/runtime.d22af752ee0c2111becd.js create mode 100644 public/charting_library/static/bundles/series-icons-map.e3b746e7a7341e8ddb2d.js create mode 100644 public/charting_library/static/bundles/series-pane-views.678a074c53e327c3184a.js create mode 100644 public/charting_library/static/bundles/service-worker.js create mode 100644 public/charting_library/static/bundles/study-market.ff409c6c02ba9edc0151.js create mode 100644 public/charting_library/static/bundles/study-pane-views.ee901b6c4a31f84ba03d.js create mode 100644 public/charting_library/static/bundles/study-template-dialog.a6f710070f1f64f2ef11.js create mode 100644 public/charting_library/static/bundles/symbol-info-dialog-impl.eaddb54cc066d7a021e2.js create mode 100644 public/charting_library/static/bundles/symbolsearch.0057814b113bcee3d957.js create mode 100644 public/charting_library/static/bundles/take-chart-image-dialog-impl.d61e03a87b11d0c1adf1.js create mode 100644 public/charting_library/static/bundles/vendors.267dd414d71e078f822c.js create mode 100644 public/charting_library/static/bundles/zoom.e21f24dd632c7069139bc47ae89c54b5.cur create mode 100644 public/charting_library/static/cs-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 public/charting_library/static/da_DK-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 public/charting_library/static/de-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 public/charting_library/static/el-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 public/charting_library/static/en-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 public/charting_library/static/es-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 public/charting_library/static/et_EE-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 public/charting_library/static/fa-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 public/charting_library/static/fr-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 public/charting_library/static/he_IL-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 public/charting_library/static/hu_HU-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 public/charting_library/static/id_ID-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 public/charting_library/static/images/balloon.png create mode 100644 public/charting_library/static/images/bar-loader.gif create mode 100644 public/charting_library/static/images/button-bg.png create mode 100644 public/charting_library/static/images/charting_library/logo-widget-copyright-faded.png create mode 100644 public/charting_library/static/images/charting_library/logo-widget-copyright.png create mode 100644 public/charting_library/static/images/controlll.png create mode 100644 public/charting_library/static/images/delayed.png create mode 100644 public/charting_library/static/images/dialogs/checkbox.png create mode 100644 public/charting_library/static/images/dialogs/close-flat.png create mode 100644 public/charting_library/static/images/dialogs/large-slider-handle.png create mode 100644 public/charting_library/static/images/dialogs/linewidth-slider.png create mode 100644 public/charting_library/static/images/dialogs/opacity-slider.png create mode 100644 public/charting_library/static/images/icons.png create mode 100644 public/charting_library/static/images/prediction-clock-black.png create mode 100644 public/charting_library/static/images/prediction-clock-white.png create mode 100644 public/charting_library/static/images/prediction-failure-white.png create mode 100644 public/charting_library/static/images/prediction-success-white.png create mode 100644 public/charting_library/static/images/price_label.png create mode 100644 public/charting_library/static/images/select-bg.png create mode 100644 public/charting_library/static/images/svg/chart/bucket2.svg create mode 100644 public/charting_library/static/images/svg/chart/font.svg create mode 100644 public/charting_library/static/images/svg/chart/large-slider-handle.svg create mode 100644 public/charting_library/static/images/svg/chart/pencil2.svg create mode 100644 public/charting_library/static/images/svg/question-mark-rounded.svg create mode 100644 public/charting_library/static/images/tvcolorpicker-bg-gradient.png create mode 100644 public/charting_library/static/images/tvcolorpicker-bg.png create mode 100644 public/charting_library/static/images/tvcolorpicker-check.png create mode 100644 public/charting_library/static/images/tvcolorpicker-sprite.png create mode 100644 public/charting_library/static/it-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 public/charting_library/static/ja-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 public/charting_library/static/ko-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 public/charting_library/static/ms_MY-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 public/charting_library/static/nl_NL-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 public/charting_library/static/no-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 public/charting_library/static/pl-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 public/charting_library/static/pt-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 public/charting_library/static/ro-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 public/charting_library/static/ru-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 public/charting_library/static/sk_SK-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 public/charting_library/static/sv-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 public/charting_library/static/th-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 public/charting_library/static/tr-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 public/charting_library/static/vi-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 public/charting_library/static/zh-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 public/charting_library/static/zh_TW-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 public/css/theme.css create mode 100644 public/css/tradingview.css create mode 100644 public/datafeeds/README.md create mode 100644 public/datafeeds/udf/.npmrc create mode 100644 public/datafeeds/udf/README.md create mode 100644 public/datafeeds/udf/dist/bundle.js create mode 100644 public/datafeeds/udf/dist/polyfills.js create mode 100644 public/datafeeds/udf/lib/data-pulse-provider.js create mode 100644 public/datafeeds/udf/lib/helpers.js create mode 100644 public/datafeeds/udf/lib/history-provider.js create mode 100644 public/datafeeds/udf/lib/iquotes-provider.js create mode 100644 public/datafeeds/udf/lib/quotes-provider.js create mode 100644 public/datafeeds/udf/lib/quotes-pulse-provider.js create mode 100644 public/datafeeds/udf/lib/requester.js create mode 100644 public/datafeeds/udf/lib/symbols-storage.js create mode 100644 public/datafeeds/udf/lib/udf-compatible-datafeed-base.js create mode 100644 public/datafeeds/udf/lib/udf-compatible-datafeed.js create mode 100644 public/datafeeds/udf/package.json create mode 100644 public/datafeeds/udf/rollup.config.js create mode 100644 public/datafeeds/udf/src/data-pulse-provider.js create mode 100644 public/datafeeds/udf/src/data-pulse-provider.ts create mode 100644 public/datafeeds/udf/src/helpers.js create mode 100644 public/datafeeds/udf/src/helpers.ts create mode 100644 public/datafeeds/udf/src/history-provider.js create mode 100644 public/datafeeds/udf/src/history-provider.ts create mode 100644 public/datafeeds/udf/src/iquotes-provider.js create mode 100644 public/datafeeds/udf/src/iquotes-provider.ts create mode 100644 public/datafeeds/udf/src/polyfills.es6 create mode 100644 public/datafeeds/udf/src/quotes-provider.js create mode 100644 public/datafeeds/udf/src/quotes-provider.ts create mode 100644 public/datafeeds/udf/src/quotes-pulse-provider.js create mode 100644 public/datafeeds/udf/src/quotes-pulse-provider.ts create mode 100644 public/datafeeds/udf/src/requester.js create mode 100644 public/datafeeds/udf/src/requester.ts create mode 100644 public/datafeeds/udf/src/symbols-storage.js create mode 100644 public/datafeeds/udf/src/symbols-storage.ts create mode 100644 public/datafeeds/udf/src/udf-compatible-datafeed-base.js create mode 100644 public/datafeeds/udf/src/udf-compatible-datafeed-base.ts create mode 100644 public/datafeeds/udf/src/udf-compatible-datafeed.js create mode 100644 public/datafeeds/udf/src/udf-compatible-datafeed.ts create mode 100644 public/datafeeds/udf/tsconfig.json create mode 100644 public/favicon.ico create mode 100644 public/img/android-chrome-192x192.png create mode 100644 public/img/android-chrome-512x512.png create mode 100644 public/img/apple-touch-icon.png create mode 100644 public/img/favicon-16x16.png create mode 100644 public/img/favicon-32x32.png create mode 100644 public/img/faviconApp.ico create mode 100644 public/img/mstile-150x150.png create mode 100644 public/index.html create mode 100644 public/manifest.json create mode 100644 robots.txt create mode 100644 scripts/build.sh create mode 100644 scripts/validate_commit.js create mode 100644 scripts/verify-security-pins.ps1 create mode 100644 scripts/verify-security-pins.sh create mode 100644 spec/fixtures/example.json create mode 100644 spec/fixtures/profile.json create mode 100644 spec/fixtures/users.json create mode 100644 spec/integration/login_spec.js create mode 100644 spec/plugins/index.js create mode 100644 spec/support/commands.js create mode 100644 spec/support/index.js create mode 100644 src/App.test.tsx create mode 100644 src/App.tsx create mode 100644 src/api/config.ts create mode 100644 src/api/index.ts create mode 100644 src/api/requestBuilder.ts create mode 100644 src/api/tests/requestBuilder.test.ts create mode 100644 src/api/types.ts create mode 100644 src/assets/images/AddIcon.svg create mode 100644 src/assets/images/BackgroundMaintenance.tsx create mode 100644 src/assets/images/ChevronIcon.tsx create mode 100644 src/assets/images/ClockIcon.tsx create mode 100644 src/assets/images/CloseIcon.tsx create mode 100644 src/assets/images/CorrectSelfie1.png create mode 100644 src/assets/images/CorrectSelfie2.png create mode 100644 src/assets/images/LetterIcon.tsx create mode 100644 src/assets/images/LockIcon.tsx create mode 100644 src/assets/images/LockedIcon.tsx create mode 100644 src/assets/images/Logo-dark.svg create mode 100644 src/assets/images/LogoIcon.tsx create mode 100644 src/assets/images/LogoWhite.svg create mode 100644 src/assets/images/LogoutIcon.tsx create mode 100644 src/assets/images/MetaMaskLogo.tsx create mode 100644 src/assets/images/Moon.tsx create mode 100644 src/assets/images/NavBarIcons.tsx create mode 100644 src/assets/images/PendingIcon.tsx create mode 100644 src/assets/images/PlusIcon.tsx create mode 100644 src/assets/images/RejectedIcon.tsx create mode 100644 src/assets/images/SearchFieldCloseIcon.tsx create mode 100644 src/assets/images/SortIcons.tsx create mode 100644 src/assets/images/SuccessfulIcon.tsx create mode 100644 src/assets/images/Sun.tsx create mode 100644 src/assets/images/TipIcon.tsx create mode 100644 src/assets/images/TrashBin.tsx create mode 100644 src/assets/images/TrashIcon.tsx create mode 100644 src/assets/images/Type-dark.svg create mode 100644 src/assets/images/Type-white.svg create mode 100644 src/assets/images/UnSuccessfulIcon.tsx create mode 100644 src/assets/images/X-dark.svg create mode 100644 src/assets/images/X-white.svg create mode 100644 src/assets/images/background.svg create mode 100644 src/assets/images/ceo.jpg create mode 100644 src/assets/images/chart.svg create mode 100644 src/assets/images/customization/ArrowIcon.tsx create mode 100644 src/assets/images/customization/PaletteIcon.tsx create mode 100644 src/assets/images/customization/SettingsIcon.tsx create mode 100644 src/assets/images/hide-password.svg create mode 100644 src/assets/images/kyc/CheckBigIcon.tsx create mode 100644 src/assets/images/kyc/CheckIcon.tsx create mode 100644 src/assets/images/kyc/ClocksIcon.tsx create mode 100644 src/assets/images/kyc/CrossIcon.tsx create mode 100644 src/assets/images/kyc/DocumentBackExample.svg create mode 100644 src/assets/images/kyc/DocumentFrontExample.svg create mode 100644 src/assets/images/kyc/DocumentSelfieExample.svg create mode 100644 src/assets/images/kyc/InfoIcon.tsx create mode 100644 src/assets/images/kyc/TipIcon.tsx create mode 100644 src/assets/images/landing/GridMainBG.svg create mode 100644 src/assets/images/landing/GridSecondBG.svg create mode 100644 src/assets/images/landing/LogoIcon.tsx create mode 100644 src/assets/images/landing/PhoneImage.svg create mode 100644 src/assets/images/landing/TradingUIFullBG.png create mode 100644 src/assets/images/landing/features/API-old.svg create mode 100644 src/assets/images/landing/features/API.svg create mode 100644 src/assets/images/landing/features/Bitcoin.svg create mode 100644 src/assets/images/landing/features/Community.svg create mode 100644 src/assets/images/landing/features/Customize.svg create mode 100644 src/assets/images/landing/features/Exchange.svg create mode 100644 src/assets/images/landing/features/Fee.svg create mode 100644 src/assets/images/landing/features/Security.svg create mode 100644 src/assets/images/landing/features/Types.svg create mode 100644 src/assets/images/landing/headerIMG.png create mode 100644 src/assets/images/landing/headerIMG.svg create mode 100644 src/assets/images/landing/social/CoinMarket.svg create mode 100644 src/assets/images/landing/social/Facebook.svg create mode 100644 src/assets/images/landing/social/LinkedIn.svg create mode 100644 src/assets/images/landing/social/Medium.svg create mode 100644 src/assets/images/landing/social/Reddit.svg create mode 100644 src/assets/images/landing/social/Telegram.svg create mode 100644 src/assets/images/landing/social/Twitter.svg create mode 100644 src/assets/images/landing/social/YouTube.svg create mode 100644 src/assets/images/landing/tradeAnywhere.svg create mode 100644 src/assets/images/openwareLogo.svg create mode 100644 src/assets/images/show-password.svg create mode 100644 src/assets/images/sidebar/LogoutIcon.tsx create mode 100644 src/assets/images/sidebar/ProfileIcon.tsx create mode 100644 src/assets/images/sidebar/SidebarIcons.tsx create mode 100644 src/assets/images/sidebar/en.svg create mode 100644 src/assets/images/sidebar/ru.svg create mode 100644 src/charting_library/charting_library.min.d.ts create mode 100644 src/charting_library/charting_library.min.js create mode 100644 src/charting_library/datafeed-api.d.ts create mode 100644 src/charting_library/static/ar-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 src/charting_library/static/bundles/0.1d4cbcaddbec7d8c5363.js create mode 100644 src/charting_library/static/bundles/1.2fa13f88d2bf6ae6f3f0.css create mode 100644 src/charting_library/static/bundles/1.2fa13f88d2bf6ae6f3f0.rtl.css create mode 100644 src/charting_library/static/bundles/1.ea828ac684caa2b94a1b.js create mode 100644 src/charting_library/static/bundles/10.0501e55a3ef6aa50aec6.js create mode 100644 src/charting_library/static/bundles/10.c0a8664f16f3834961e4.css create mode 100644 src/charting_library/static/bundles/10.c0a8664f16f3834961e4.rtl.css create mode 100644 src/charting_library/static/bundles/11.b900b9cb8ed6dd3bc321.css create mode 100644 src/charting_library/static/bundles/11.b900b9cb8ed6dd3bc321.rtl.css create mode 100644 src/charting_library/static/bundles/11.dd520838f92e45cd91e3.js create mode 100644 src/charting_library/static/bundles/12.18e3c4b9c329e737cb80.js create mode 100644 src/charting_library/static/bundles/12.87f9777d9fe2086ce090.css create mode 100644 src/charting_library/static/bundles/12.87f9777d9fe2086ce090.rtl.css create mode 100644 src/charting_library/static/bundles/13.46f312828e93b6546d0c.js create mode 100644 src/charting_library/static/bundles/14.579d7892443d1a90180c.js create mode 100644 src/charting_library/static/bundles/15.19c5212d15382007773d.js create mode 100644 src/charting_library/static/bundles/16.cc58f582c191485d9392.css create mode 100644 src/charting_library/static/bundles/16.cc58f582c191485d9392.rtl.css create mode 100644 src/charting_library/static/bundles/16.e0d00f8a564954896734.js create mode 100644 src/charting_library/static/bundles/17.00b04a06a8cd9c6f5f6c.js create mode 100644 src/charting_library/static/bundles/18.183d41ade16dae257526.css create mode 100644 src/charting_library/static/bundles/18.183d41ade16dae257526.rtl.css create mode 100644 src/charting_library/static/bundles/18.e4c458360dbad4de5cf6.js create mode 100644 src/charting_library/static/bundles/19.aba848e28ec755548668.css create mode 100644 src/charting_library/static/bundles/19.aba848e28ec755548668.rtl.css create mode 100644 src/charting_library/static/bundles/19.c5542d290eefbb001433.js create mode 100644 src/charting_library/static/bundles/2.195070ea59b3395625da.js create mode 100644 src/charting_library/static/bundles/2.a3e34146d368d13b6bc1.css create mode 100644 src/charting_library/static/bundles/2.a3e34146d368d13b6bc1.rtl.css create mode 100644 src/charting_library/static/bundles/20.2416da4fc4c075b56691.js create mode 100644 src/charting_library/static/bundles/20.f75162343321d7d9178c.css create mode 100644 src/charting_library/static/bundles/20.f75162343321d7d9178c.rtl.css create mode 100644 src/charting_library/static/bundles/21.7e987db0ed47cc3f789c.css create mode 100644 src/charting_library/static/bundles/21.7e987db0ed47cc3f789c.rtl.css create mode 100644 src/charting_library/static/bundles/21.fc856808959a5b8734f7.js create mode 100644 src/charting_library/static/bundles/22.c118eafc7686081984c8.js create mode 100644 src/charting_library/static/bundles/22.f31ebffc8672752a2d4b.css create mode 100644 src/charting_library/static/bundles/22.f31ebffc8672752a2d4b.rtl.css create mode 100644 src/charting_library/static/bundles/23.7c4be219df640cb3880c.css create mode 100644 src/charting_library/static/bundles/23.7c4be219df640cb3880c.rtl.css create mode 100644 src/charting_library/static/bundles/23.e89d09694523563b8f86.js create mode 100644 src/charting_library/static/bundles/24.319f9ed9725f3cea260a.js create mode 100644 src/charting_library/static/bundles/25.15d449d35706e01821dd.js create mode 100644 src/charting_library/static/bundles/26.16e9146c09ea7d6b839a.js create mode 100644 src/charting_library/static/bundles/27.54aad15135c7ea57b345.js create mode 100644 src/charting_library/static/bundles/28.3f2589cd73664ea3f3e3.js create mode 100644 src/charting_library/static/bundles/29.6a6accc00e80feb13030.js create mode 100644 src/charting_library/static/bundles/3.f41fdd1a128935b63e5b.js create mode 100644 src/charting_library/static/bundles/30.c3cc90c5fbe9a2b87ffb.js create mode 100644 src/charting_library/static/bundles/31.5c895c4f655400b0b4e2.css create mode 100644 src/charting_library/static/bundles/31.5c895c4f655400b0b4e2.rtl.css create mode 100644 src/charting_library/static/bundles/31.d081df3316799b489847.js create mode 100644 src/charting_library/static/bundles/32.48df7a8cdc38d60b308b.js create mode 100644 src/charting_library/static/bundles/32.b92773bfff0363a69bb9.css create mode 100644 src/charting_library/static/bundles/32.b92773bfff0363a69bb9.rtl.css create mode 100644 src/charting_library/static/bundles/33.4a74c62095be3045c87e.js create mode 100644 src/charting_library/static/bundles/33.ac320c107772f8e72252.css create mode 100644 src/charting_library/static/bundles/33.ac320c107772f8e72252.rtl.css create mode 100644 src/charting_library/static/bundles/34.17e0ce399a577f17ba55.js create mode 100644 src/charting_library/static/bundles/34.dd27b311326fd1fc6fde.css create mode 100644 src/charting_library/static/bundles/34.dd27b311326fd1fc6fde.rtl.css create mode 100644 src/charting_library/static/bundles/35.47b9d16b3fa10b495a11.css create mode 100644 src/charting_library/static/bundles/35.47b9d16b3fa10b495a11.rtl.css create mode 100644 src/charting_library/static/bundles/35.58433cec10095e3c1b7e.js create mode 100644 src/charting_library/static/bundles/36.2ee80b40751fcc88a65c.js create mode 100644 src/charting_library/static/bundles/36.e9a6bec06ee11d2c2d4a.css create mode 100644 src/charting_library/static/bundles/36.e9a6bec06ee11d2c2d4a.rtl.css create mode 100644 src/charting_library/static/bundles/37.065a5f2249aafcfe50ec.css create mode 100644 src/charting_library/static/bundles/37.065a5f2249aafcfe50ec.rtl.css create mode 100644 src/charting_library/static/bundles/37.1735365b01406a8d696d.js create mode 100644 src/charting_library/static/bundles/38.4073381c29c4e2bc2209.css create mode 100644 src/charting_library/static/bundles/38.4073381c29c4e2bc2209.rtl.css create mode 100644 src/charting_library/static/bundles/38.9ae2eea9402c30aa3046.js create mode 100644 src/charting_library/static/bundles/39.5f64b4bc2e263edfbf6e.css create mode 100644 src/charting_library/static/bundles/39.5f64b4bc2e263edfbf6e.rtl.css create mode 100644 src/charting_library/static/bundles/39.7e524b82ef9947f0f19f.js create mode 100644 src/charting_library/static/bundles/4.80bf1a925965757be6d4.js create mode 100644 src/charting_library/static/bundles/40.0f54f57304896d7506a2.css create mode 100644 src/charting_library/static/bundles/40.0f54f57304896d7506a2.rtl.css create mode 100644 src/charting_library/static/bundles/40.42bd9598272e9dd24457.js create mode 100644 src/charting_library/static/bundles/41.11c024e8e0504741fd66.js create mode 100644 src/charting_library/static/bundles/41.1dc91fcdd5dbde1247d7.css create mode 100644 src/charting_library/static/bundles/41.1dc91fcdd5dbde1247d7.rtl.css create mode 100644 src/charting_library/static/bundles/42.0491acaaf55887f7fcb3.js create mode 100644 src/charting_library/static/bundles/42.db948a104cb86b7df06e.css create mode 100644 src/charting_library/static/bundles/42.db948a104cb86b7df06e.rtl.css create mode 100644 src/charting_library/static/bundles/43.12df9892872230fa2898.css create mode 100644 src/charting_library/static/bundles/43.12df9892872230fa2898.rtl.css create mode 100644 src/charting_library/static/bundles/43.4ae432f1b8259dbfd0e5.js create mode 100644 src/charting_library/static/bundles/44.01ec30ff4ce8cf7fa8e5.css create mode 100644 src/charting_library/static/bundles/44.01ec30ff4ce8cf7fa8e5.rtl.css create mode 100644 src/charting_library/static/bundles/44.7aabc64d3dfb54c85d60.js create mode 100644 src/charting_library/static/bundles/45.6c1fc3ac2f6063249f97.js create mode 100644 src/charting_library/static/bundles/45.e09d2beed14ffd8995a9.css create mode 100644 src/charting_library/static/bundles/45.e09d2beed14ffd8995a9.rtl.css create mode 100644 src/charting_library/static/bundles/46.75a0e6fecbc3c92a6bc7.js create mode 100644 src/charting_library/static/bundles/46.923fdbea563cd1d28d4c.css create mode 100644 src/charting_library/static/bundles/46.923fdbea563cd1d28d4c.rtl.css create mode 100644 src/charting_library/static/bundles/47.773635a99e184d6dc131.js create mode 100644 src/charting_library/static/bundles/47.b48791ffffadc9c96a10.css create mode 100644 src/charting_library/static/bundles/47.b48791ffffadc9c96a10.rtl.css create mode 100644 src/charting_library/static/bundles/48.912258c9b4f11cd518c3.css create mode 100644 src/charting_library/static/bundles/48.912258c9b4f11cd518c3.rtl.css create mode 100644 src/charting_library/static/bundles/48.9d08141ee2d55bcad3e7.js create mode 100644 src/charting_library/static/bundles/49.0cb5c561f3b28a047912.css create mode 100644 src/charting_library/static/bundles/49.0cb5c561f3b28a047912.rtl.css create mode 100644 src/charting_library/static/bundles/49.929acbc67c2613c57f58.js create mode 100644 src/charting_library/static/bundles/5.1beaffde9123ffaeff74.js create mode 100644 src/charting_library/static/bundles/50.2c50aad369bf63f77061.js create mode 100644 src/charting_library/static/bundles/50.e2f9bc14536ad546e595.css create mode 100644 src/charting_library/static/bundles/50.e2f9bc14536ad546e595.rtl.css create mode 100644 src/charting_library/static/bundles/51.30c5804303a9f1c455e3.js create mode 100644 src/charting_library/static/bundles/51.a35e4c0d0b08a018e307.css create mode 100644 src/charting_library/static/bundles/51.a35e4c0d0b08a018e307.rtl.css create mode 100644 src/charting_library/static/bundles/52.be1d70abe1a172cc5c3a.css create mode 100644 src/charting_library/static/bundles/52.be1d70abe1a172cc5c3a.rtl.css create mode 100644 src/charting_library/static/bundles/52.c212ca3684de16c6f115.js create mode 100644 src/charting_library/static/bundles/53.3f6d736abe33683640bc.css create mode 100644 src/charting_library/static/bundles/53.3f6d736abe33683640bc.rtl.css create mode 100644 src/charting_library/static/bundles/53.7217742e39b70fc9d431.js create mode 100644 src/charting_library/static/bundles/54.9eb4ca2a30197d95fe82.js create mode 100644 src/charting_library/static/bundles/54.cf540e4ba48bf75e96c2.css create mode 100644 src/charting_library/static/bundles/54.cf540e4ba48bf75e96c2.rtl.css create mode 100644 src/charting_library/static/bundles/55.7707e6ae9f2ec8cfb656.js create mode 100644 src/charting_library/static/bundles/55.c11884ad80d526214fb6.css create mode 100644 src/charting_library/static/bundles/55.c11884ad80d526214fb6.rtl.css create mode 100644 src/charting_library/static/bundles/56.83cd8456e872f49059c3.js create mode 100644 src/charting_library/static/bundles/56.ea0c135a2b02b495fbb5.css create mode 100644 src/charting_library/static/bundles/56.ea0c135a2b02b495fbb5.rtl.css create mode 100644 src/charting_library/static/bundles/57.6384b62456dc4fed6ffb.js create mode 100644 src/charting_library/static/bundles/57.651927021db01a7ed13f.css create mode 100644 src/charting_library/static/bundles/57.651927021db01a7ed13f.rtl.css create mode 100644 src/charting_library/static/bundles/58.8077d6b199609737b3d5.js create mode 100644 src/charting_library/static/bundles/58.82b7bef062a290e587d4.css create mode 100644 src/charting_library/static/bundles/58.82b7bef062a290e587d4.rtl.css create mode 100644 src/charting_library/static/bundles/6.35dee0cfeb8a4d70732c.css create mode 100644 src/charting_library/static/bundles/6.35dee0cfeb8a4d70732c.rtl.css create mode 100644 src/charting_library/static/bundles/6.902d5f3923d45b49b876.js create mode 100644 src/charting_library/static/bundles/7.e98fce2ffac2c552565f.css create mode 100644 src/charting_library/static/bundles/7.e98fce2ffac2c552565f.rtl.css create mode 100644 src/charting_library/static/bundles/7.fc0941206f7b7d32812d.js create mode 100644 src/charting_library/static/bundles/8.180c6bdc716e5045b645.css create mode 100644 src/charting_library/static/bundles/8.180c6bdc716e5045b645.rtl.css create mode 100644 src/charting_library/static/bundles/8.62bd4ee21281906a7019.js create mode 100644 src/charting_library/static/bundles/9.855edb9bea2352bd5129.js create mode 100644 src/charting_library/static/bundles/add-compare-dialog.e9db1b14483f3e7358f4.js create mode 100644 src/charting_library/static/bundles/change-interval-dialog.c8c04c297cc329376f2b.js create mode 100644 src/charting_library/static/bundles/chart-bottom-toolbar.da7ac0cc35cc8a26f65a.js create mode 100644 src/charting_library/static/bundles/chart-widget-gui.8005316cfc1f06be4bf0.js create mode 100644 src/charting_library/static/bundles/clipboard.5403f9bd852af06addff.js create mode 100644 src/charting_library/static/bundles/confirm-inputs-dialog.f9823e95a365cd8974c9.js create mode 100644 src/charting_library/static/bundles/confirm-symbol-input-dialog.c72289c830292c73812f.js create mode 100644 src/charting_library/static/bundles/context-menu-renderer.5eff9c34fa03e94b2c1b.js create mode 100644 src/charting_library/static/bundles/create-dialog.472fe015128398f27a86.js create mode 100644 src/charting_library/static/bundles/crosshair.6c091f7d5427d0c5e6d9dc3a90eb2b20.cur create mode 100644 src/charting_library/static/bundles/dialogs-core.c712826575e8ea62d8e0.js create mode 100644 src/charting_library/static/bundles/dialogs-core.e9f630dd3fdeb4ceee21.css create mode 100644 src/charting_library/static/bundles/dialogs-core.e9f630dd3fdeb4ceee21.rtl.css create mode 100644 src/charting_library/static/bundles/dot.ed68e83c16f77203e73dbc4c3a7c7fa1.cur create mode 100644 src/charting_library/static/bundles/drawing-toolbar.35360bdf4aedb7db7287.js create mode 100644 src/charting_library/static/bundles/ds-property-pages.33a0b54c87f584f79681.js create mode 100644 src/charting_library/static/bundles/editobjectdialog.a4fd348616e0724542ac.js create mode 100644 src/charting_library/static/bundles/eraser.0579d40b812fa2c3ffe72e5803a6e14c.cur create mode 100644 src/charting_library/static/bundles/export-data.ea9e219d1d41389ea3b7.js create mode 100644 src/charting_library/static/bundles/floating-toolbars.d7f25f59513991368767.js create mode 100644 src/charting_library/static/bundles/fontawesome-webfont.3293616ec0c605c7c2db25829a0a509e.woff create mode 100644 src/charting_library/static/bundles/fontawesome-webfont.40f9a03d174178efb12303caa9bc7cd8.woff2 create mode 100644 src/charting_library/static/bundles/go-to-date-dialog-impl.51162344726d8956c763.js create mode 100644 src/charting_library/static/bundles/grab.bc156522a6b55a60be9fae15c14b66c5.cur create mode 100644 src/charting_library/static/bundles/grabbing.1c0862a8a8c0fb02885557bc97fdafe7.cur create mode 100644 src/charting_library/static/bundles/hammerjs.46686dd839f22b742351.js create mode 100644 src/charting_library/static/bundles/header-toolbar.743cca210a6a3e37939e.js create mode 100644 src/charting_library/static/bundles/ie-fallback-logos.589046871bfa17cbfbda.js create mode 100644 src/charting_library/static/bundles/lazy-jquery-ui.3a9fe36168ca8e6cacb8.js create mode 100644 src/charting_library/static/bundles/lazy-velocity.d040cf1092d3b2920dde.js create mode 100644 src/charting_library/static/bundles/library.bb7ca756e7cbe50becb3.css create mode 100644 src/charting_library/static/bundles/library.bb7ca756e7cbe50becb3.rtl.css create mode 100644 src/charting_library/static/bundles/library.e964cdc99937c68d0389.js create mode 100644 src/charting_library/static/bundles/line-tools-icons.c89643eed013eb0ff7c1.js create mode 100644 src/charting_library/static/bundles/load-chart-dialog.24806d5c5be9fbdfd103.js create mode 100644 src/charting_library/static/bundles/lt-pane-views.e06093931461762ecd11.js create mode 100644 src/charting_library/static/bundles/moment.fdf50ccef2c78863664d.js create mode 100644 src/charting_library/static/bundles/new-edit-object-dialog.232c44a337440602cba4.js create mode 100644 src/charting_library/static/bundles/objecttreedialog.bb84539d18c87a88a80b.js create mode 100644 src/charting_library/static/bundles/opacity-pattern.a6506134daec7169f68f563f084a9d41.svg create mode 100644 src/charting_library/static/bundles/precache-manifest.60144109bbe17651b1eb050c29e4f6f4.js create mode 100644 src/charting_library/static/bundles/react.cdaa9c19dda854fad341.js create mode 100644 src/charting_library/static/bundles/restricted-toolset.e356a29caff335c91f6b.js create mode 100644 src/charting_library/static/bundles/runtime.d22af752ee0c2111becd.js create mode 100644 src/charting_library/static/bundles/series-icons-map.e3b746e7a7341e8ddb2d.js create mode 100644 src/charting_library/static/bundles/series-pane-views.678a074c53e327c3184a.js create mode 100644 src/charting_library/static/bundles/service-worker.js create mode 100644 src/charting_library/static/bundles/study-market.ff409c6c02ba9edc0151.js create mode 100644 src/charting_library/static/bundles/study-pane-views.ee901b6c4a31f84ba03d.js create mode 100644 src/charting_library/static/bundles/study-template-dialog.a6f710070f1f64f2ef11.js create mode 100644 src/charting_library/static/bundles/symbol-info-dialog-impl.eaddb54cc066d7a021e2.js create mode 100644 src/charting_library/static/bundles/symbolsearch.0057814b113bcee3d957.js create mode 100644 src/charting_library/static/bundles/take-chart-image-dialog-impl.d61e03a87b11d0c1adf1.js create mode 100644 src/charting_library/static/bundles/vendors.267dd414d71e078f822c.js create mode 100644 src/charting_library/static/bundles/zoom.e21f24dd632c7069139bc47ae89c54b5.cur create mode 100644 src/charting_library/static/cs-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 src/charting_library/static/da_DK-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 src/charting_library/static/de-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 src/charting_library/static/el-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 src/charting_library/static/en-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 src/charting_library/static/es-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 src/charting_library/static/et_EE-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 src/charting_library/static/fa-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 src/charting_library/static/fr-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 src/charting_library/static/he_IL-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 src/charting_library/static/hu_HU-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 src/charting_library/static/id_ID-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 src/charting_library/static/images/balloon.png create mode 100644 src/charting_library/static/images/bar-loader.gif create mode 100644 src/charting_library/static/images/button-bg.png create mode 100644 src/charting_library/static/images/charting_library/logo-widget-copyright-faded.png create mode 100644 src/charting_library/static/images/charting_library/logo-widget-copyright.png create mode 100644 src/charting_library/static/images/controlll.png create mode 100644 src/charting_library/static/images/delayed.png create mode 100644 src/charting_library/static/images/dialogs/checkbox.png create mode 100644 src/charting_library/static/images/dialogs/close-flat.png create mode 100644 src/charting_library/static/images/dialogs/large-slider-handle.png create mode 100644 src/charting_library/static/images/dialogs/linewidth-slider.png create mode 100644 src/charting_library/static/images/dialogs/opacity-slider.png create mode 100644 src/charting_library/static/images/icons.png create mode 100644 src/charting_library/static/images/prediction-clock-black.png create mode 100644 src/charting_library/static/images/prediction-clock-white.png create mode 100644 src/charting_library/static/images/prediction-failure-white.png create mode 100644 src/charting_library/static/images/prediction-success-white.png create mode 100644 src/charting_library/static/images/price_label.png create mode 100644 src/charting_library/static/images/select-bg.png create mode 100644 src/charting_library/static/images/svg/chart/bucket2.svg create mode 100644 src/charting_library/static/images/svg/chart/font.svg create mode 100644 src/charting_library/static/images/svg/chart/large-slider-handle.svg create mode 100644 src/charting_library/static/images/svg/chart/pencil2.svg create mode 100644 src/charting_library/static/images/svg/question-mark-rounded.svg create mode 100644 src/charting_library/static/images/tvcolorpicker-bg-gradient.png create mode 100644 src/charting_library/static/images/tvcolorpicker-bg.png create mode 100644 src/charting_library/static/images/tvcolorpicker-check.png create mode 100644 src/charting_library/static/images/tvcolorpicker-sprite.png create mode 100644 src/charting_library/static/it-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 src/charting_library/static/ja-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 src/charting_library/static/ko-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 src/charting_library/static/ms_MY-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 src/charting_library/static/nl_NL-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 src/charting_library/static/no-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 src/charting_library/static/pl-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 src/charting_library/static/pt-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 src/charting_library/static/ro-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 src/charting_library/static/ru-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 src/charting_library/static/sk_SK-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 src/charting_library/static/sv-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 src/charting_library/static/th-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 src/charting_library/static/tr-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 src/charting_library/static/vi-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 src/charting_library/static/zh-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 src/charting_library/static/zh_TW-tv-chart.8562c7b8f7bdb50c1f5d.html create mode 100644 src/components/BankResponse/BankResponse.pcss create mode 100644 src/components/BankResponse/index.tsx create mode 100644 src/components/Beneficiaries/Beneficiaries.pcss create mode 100644 src/components/Beneficiaries/BeneficiariesActivateModal.tsx create mode 100644 src/components/Beneficiaries/BeneficiariesAddModal.tsx create mode 100644 src/components/Beneficiaries/BeneficiariesFailAddModal.tsx create mode 100644 src/components/Beneficiaries/index.tsx create mode 100644 src/components/Blur/Blur.pcss create mode 100644 src/components/Blur/index.tsx create mode 100644 src/components/Captcha/Captcha.pcss create mode 100644 src/components/Captcha/index.tsx create mode 100644 src/components/ChangePassword/ChangePassword.pcss create mode 100644 src/components/ChangePassword/index.tsx create mode 100644 src/components/CombinedOrderBook/CombinedOrderBook.pcss create mode 100644 src/components/CombinedOrderBook/CombinedOrderBook.test.tsx create mode 100644 src/components/CombinedOrderBook/__snapshots__/CombinedOrderBook.test.tsx.snap create mode 100644 src/components/CombinedOrderBook/index.tsx create mode 100644 src/components/CombinedOrderBook/readme.md create mode 100644 src/components/CopyableTextField/CopyableTextField.pcss create mode 100644 src/components/CopyableTextField/CopyableTextField.test.tsx create mode 100644 src/components/CopyableTextField/__snapshots__/CopyableTextField.test.tsx.snap create mode 100644 src/components/CopyableTextField/index.tsx create mode 100644 src/components/CryptoIcon/CryptoIcon.pcss create mode 100644 src/components/CryptoIcon/CryptoIcon.test.tsx create mode 100644 src/components/CryptoIcon/__snapshots__/CryptoIcon.test.tsx.snap create mode 100644 src/components/CryptoIcon/index.tsx create mode 100644 src/components/CryptoIcon/readme.md create mode 100644 src/components/CurrencyInfo/CurrencyInfo.pcss create mode 100644 src/components/CurrencyInfo/index.tsx create mode 100644 src/components/CustomInput/CustomInput.pcss create mode 100644 src/components/CustomInput/CustomInput.test.tsx create mode 100644 src/components/CustomInput/__snapshots__/CustomInput.test.tsx.snap create mode 100644 src/components/CustomInput/index.tsx create mode 100644 src/components/Customization/Fonts/index.tsx create mode 100644 src/components/Customization/Images/index.tsx create mode 100644 src/components/Customization/Spacing/index.tsx create mode 100644 src/components/Customization/Themes/ColorSettings/ColorSettings.pcss create mode 100644 src/components/Customization/Themes/ColorSettings/index.tsx create mode 100644 src/components/Customization/Themes/Themes.pcss create mode 100644 src/components/Customization/Themes/index.tsx create mode 100644 src/components/Customization/index.ts create mode 100644 src/components/Customization/style.pcss create mode 100644 src/components/Decimal/Decimal.pcss create mode 100644 src/components/Decimal/Decimal.test.tsx create mode 100644 src/components/Decimal/__snapshots__/Decimal.test.tsx.snap create mode 100644 src/components/Decimal/index.tsx create mode 100644 src/components/Decimal/readme.md create mode 100644 src/components/DepositCrypto/DepositCrypto.pcss create mode 100644 src/components/DepositCrypto/DepositCrypto.test.tsx create mode 100644 src/components/DepositCrypto/__snapshots__/DepositCrypto.test.tsx.snap create mode 100644 src/components/DepositCrypto/index.tsx create mode 100644 src/components/DepositFiat/DepositFiat.pcss create mode 100644 src/components/DepositFiat/DepositFiat.test.tsx create mode 100644 src/components/DepositFiat/__snapshots__/DepositFiat.test.tsx.snap create mode 100644 src/components/DepositFiat/index.tsx create mode 100644 src/components/Documentation/Documentation.pcss create mode 100644 src/components/Documentation/Endpoints/DocumentationEndpoints.pcss create mode 100644 src/components/Documentation/Endpoints/Item/RequestTypeItem/ParametersItem/index.tsx create mode 100644 src/components/Documentation/Endpoints/Item/RequestTypeItem/ResponsesItem/index.tsx create mode 100644 src/components/Documentation/Endpoints/Item/RequestTypeItem/index.tsx create mode 100644 src/components/Documentation/Endpoints/Item/index.tsx create mode 100644 src/components/Documentation/Endpoints/index.tsx create mode 100644 src/components/Documentation/Header/DocumentationHeader.pcss create mode 100644 src/components/Documentation/Header/index.tsx create mode 100644 src/components/Documentation/Models/DocumentationModels.pcss create mode 100644 src/components/Documentation/Models/Item/DocumentationModelsItem.pcss create mode 100644 src/components/Documentation/Models/Item/index.tsx create mode 100644 src/components/Documentation/Models/index.tsx create mode 100644 src/components/Documentation/index.ts create mode 100644 src/components/Dropdown/Dropdown.pcss create mode 100644 src/components/Dropdown/Dropdown.test.tsx create mode 100644 src/components/Dropdown/__snapshots__/Dropdown.test.tsx.snap create mode 100644 src/components/Dropdown/index.tsx create mode 100644 src/components/Dropdown/readme.md create mode 100644 src/components/EmailForm/EmailForm.pcss create mode 100644 src/components/EmailForm/EmailForm.test.tsx create mode 100644 src/components/EmailForm/__snapshots__/EmailForm.test.tsx.snap create mode 100644 src/components/EmailForm/close.svg create mode 100644 src/components/EmailForm/index.tsx create mode 100644 src/components/ExpiredSessionModal/ExpiredSessionModal.pcss create mode 100644 src/components/ExpiredSessionModal/index.tsx create mode 100644 src/components/FilterInput/FilterInput.pcss create mode 100644 src/components/FilterInput/FilterInput.test.tsx create mode 100644 src/components/FilterInput/Search.svg create mode 100644 src/components/FilterInput/__snapshots__/FilterInput.test.tsx.snap create mode 100644 src/components/FilterInput/index.tsx create mode 100644 src/components/GetAuthenticationCode/GetAuthenticationCode.pcss create mode 100644 src/components/GetAuthenticationCode/index.tsx create mode 100644 src/components/GetAuthenticationCodePublic/index.tsx create mode 100644 src/components/GetBankInfo/GetBankInfo.pcss create mode 100644 src/components/GetBankInfo/index.tsx create mode 100644 src/components/GridItem/GriItem.test.tsx create mode 100644 src/components/GridItem/GridItem.pcss create mode 100644 src/components/GridItem/__snapshots__/GriItem.test.tsx.snap create mode 100644 src/components/GridItem/index.tsx create mode 100644 src/components/GridItem/readme.md create mode 100644 src/components/History/History.pcss create mode 100644 src/components/History/History.test.tsx create mode 100644 src/components/History/__snapshots__/History.test.tsx.snap create mode 100644 src/components/History/index.tsx create mode 100644 src/components/IdentityVerification/IdentityVerification.pcss create mode 100644 src/components/IdentityVerification/index.tsx create mode 100644 src/components/MarketDepths/MarketDepths.pcss create mode 100644 src/components/MarketDepths/MarketDepths.test.tsx create mode 100644 src/components/MarketDepths/__snapshots__/MarketDepths.test.tsx.snap create mode 100644 src/components/MarketDepths/index.tsx create mode 100644 src/components/MarketDepths/readme.md create mode 100644 src/components/Markets/Markets.pcss create mode 100644 src/components/Markets/Markets.test.tsx create mode 100644 src/components/Markets/__snapshots__/Markets.test.tsx.snap create mode 100644 src/components/Markets/index.tsx create mode 100644 src/components/Markets/readme.md create mode 100644 src/components/MetaMaskButton/MetaMaskButton.pcss create mode 100644 src/components/MetaMaskButton/index.tsx create mode 100644 src/components/Modal/Modal.pcss create mode 100644 src/components/Modal/Modal.test.tsx create mode 100644 src/components/Modal/__snapshots__/Modal.test.tsx.snap create mode 100644 src/components/Modal/index.tsx create mode 100644 src/components/OpenOrders/OpenOrders.pcss create mode 100644 src/components/OpenOrders/OpenOrders.test.tsx create mode 100644 src/components/OpenOrders/__snapshots__/OpenOrders.test.tsx.snap create mode 100644 src/components/OpenOrders/index.tsx create mode 100644 src/components/Order/Order.pcss create mode 100644 src/components/Order/Order.test.tsx create mode 100644 src/components/Order/__snapshots__/Order.test.tsx.snap create mode 100644 src/components/Order/index.tsx create mode 100644 src/components/OrderBook/OrderBook.pcss create mode 100644 src/components/OrderBook/OrderBook.test.tsx create mode 100644 src/components/OrderBook/__snapshots__/OrderBook.test.tsx.snap create mode 100644 src/components/OrderBook/index.tsx create mode 100644 src/components/OrderBook/readme.md create mode 100644 src/components/OrderForm/OrderForm.pcss create mode 100644 src/components/OrderForm/OrderForm.test.tsx create mode 100644 src/components/OrderForm/__snapshots__/OrderForm.test.tsx.snap create mode 100644 src/components/OrderForm/index.tsx create mode 100644 src/components/OrderInput/OrderInput.pcss create mode 100644 src/components/OrderInput/OrderInput.test.tsx create mode 100644 src/components/OrderInput/__snapshots__/OrderInput.test.tsx.snap create mode 100644 src/components/OrderInput/index.tsx create mode 100644 src/components/OrderInput/readme.md create mode 100644 src/components/Pagination/Pagination.pcss create mode 100644 src/components/Pagination/Pagination.test.tsx create mode 100644 src/components/Pagination/__snapshots__/Pagination.test.tsx.snap create mode 100644 src/components/Pagination/index.tsx create mode 100644 src/components/Pagination/readme.md create mode 100644 src/components/PasswordStrengthMeter/PasswordStrengthMeter.pcss create mode 100644 src/components/PasswordStrengthMeter/PasswordStrengthMeter.test.tsx create mode 100644 src/components/PasswordStrengthMeter/Readme.md create mode 100644 src/components/PasswordStrengthMeter/__snapshots__/PasswordStrengthMeter.test.tsx.snap create mode 100644 src/components/PasswordStrengthMeter/index.tsx create mode 100644 src/components/PasswordStrengthTip/PasswordStrengthTip.pcss create mode 100644 src/components/PasswordStrengthTip/PasswordStrengthTip.test.tsx create mode 100644 src/components/PasswordStrengthTip/Readme.md create mode 100644 src/components/PasswordStrengthTip/__snapshots__/PasswordStrengthTip.test.tsx.snap create mode 100644 src/components/PasswordStrengthTip/index.tsx create mode 100644 src/components/PercentageButton/PercentageButton.pcss create mode 100644 src/components/PercentageButton/PercentageButton.test.tsx create mode 100644 src/components/PercentageButton/__snapshots__/PercentageButton.test.tsx.snap create mode 100644 src/components/PercentageButton/index.tsx create mode 100644 src/components/PercentageButton/readme.md create mode 100644 src/components/QRCode/QRCode.pcss create mode 100644 src/components/QRCode/QRCode.test.tsx create mode 100644 src/components/QRCode/__snapshots__/QRCode.test.tsx.snap create mode 100644 src/components/QRCode/index.tsx create mode 100644 src/components/QRCode/readme.md create mode 100644 src/components/ResetPassword/index.tsx create mode 100644 src/components/SearchDropdown/SearchDropdown.pcss create mode 100644 src/components/SearchDropdown/index.tsx create mode 100644 src/components/SignIn/SignIn.pcss create mode 100644 src/components/SignIn/SignIn.test.tsx create mode 100644 src/components/SignIn/__snapshots__/SignIn.test.tsx.snap create mode 100644 src/components/SignIn/index.tsx create mode 100644 src/components/SignUp/SignUp.pcss create mode 100644 src/components/SignUp/SignUp.test.tsx create mode 100644 src/components/SignUp/__snapshots__/SignUp.test.tsx.snap create mode 100644 src/components/SignUp/index.tsx create mode 100644 src/components/SummaryField/SummaryField.pcss create mode 100644 src/components/SummaryField/SummaryField.test.tsx create mode 100644 src/components/SummaryField/__snapshots__/SummaryField.test.tsx.snap create mode 100644 src/components/SummaryField/index.tsx create mode 100644 src/components/TabPanel/TabPanel.pcss create mode 100644 src/components/TabPanel/TabPanel.test.tsx create mode 100644 src/components/TabPanel/__snapshots__/TabPanel.test.tsx.snap create mode 100644 src/components/TabPanel/index.tsx create mode 100644 src/components/Table/Table.pcss create mode 100644 src/components/Table/Table.test.tsx create mode 100644 src/components/Table/index.tsx create mode 100644 src/components/Table/readme.md create mode 100644 src/components/TickerTable/TickerTable.pcss create mode 100644 src/components/TickerTable/index.tsx create mode 100644 src/components/Tooltip/Tooltip.pcss create mode 100644 src/components/Tooltip/index.tsx create mode 100644 src/components/TwoFactorAuth/TwoFactorAuth.test.tsx create mode 100644 src/components/TwoFactorAuth/__snapshots__/TwoFactorAuth.test.tsx.snap create mode 100644 src/components/TwoFactorAuth/index.tsx create mode 100644 src/components/UploadFile/UploadFile.pcss create mode 100644 src/components/UploadFile/index.tsx create mode 100644 src/components/WalletItem/WalletItem.pcss create mode 100644 src/components/WalletItem/WalletItem.test.tsx create mode 100644 src/components/WalletItem/__snapshots__/WalletItem.test.tsx.snap create mode 100644 src/components/WalletItem/index.tsx create mode 100644 src/components/WalletList/WalletList.pcss create mode 100644 src/components/WalletList/WalletList.test.tsx create mode 100644 src/components/WalletList/__snapshots__/WalletList.test.tsx.snap create mode 100644 src/components/WalletList/fixtures.ts create mode 100644 src/components/WalletList/index.tsx create mode 100644 src/components/index.ts create mode 100644 src/components/style.pcss create mode 100644 src/constants/constants.test.ts create mode 100644 src/constants/index.ts create mode 100644 src/containers/Alerts/Alerts.pcss create mode 100644 src/containers/Alerts/index.tsx create mode 100644 src/containers/ChangePassword/ChangePassword.pcss create mode 100644 src/containers/ChangePassword/index.tsx create mode 100644 src/containers/Charts/Charts.pcss create mode 100644 src/containers/Charts/index.tsx create mode 100644 src/containers/Confirm/Address/index.tsx create mode 100644 src/containers/Confirm/Documents/Documents.pcss create mode 100644 src/containers/Confirm/Documents/index.tsx create mode 100644 src/containers/Confirm/Identity/Identity.pcss create mode 100644 src/containers/Confirm/Identity/index.tsx create mode 100644 src/containers/Confirm/Mobile/Mobile.pcss create mode 100644 src/containers/Confirm/Mobile/index.tsx create mode 100644 src/containers/Confirm/Phone/Phone.pcss create mode 100644 src/containers/Confirm/Phone/index.tsx create mode 100644 src/containers/Confirm/index.ts create mode 100644 src/containers/Customization/Customization.pcss create mode 100644 src/containers/Customization/index.tsx create mode 100644 src/containers/Errors/index.tsx create mode 100644 src/containers/Footer/Footer.pcss create mode 100644 src/containers/Footer/index.tsx create mode 100644 src/containers/GeetestCaptcha/index.tsx create mode 100644 src/containers/Header/Header.pcss create mode 100644 src/containers/Header/arrows/arrowBottom.svg create mode 100644 src/containers/Header/arrows/arrowBottomLight.svg create mode 100644 src/containers/Header/arrows/arrowRight.svg create mode 100644 src/containers/Header/arrows/arrowRightLight.svg create mode 100644 src/containers/Header/back.svg create mode 100644 src/containers/Header/backLight.svg create mode 100644 src/containers/Header/index.tsx create mode 100644 src/containers/HeaderToolbar/index.tsx create mode 100644 src/containers/HistoryElement/index.tsx create mode 100644 src/containers/LegalDocuments/LegalDocuments.pcss create mode 100644 src/containers/LegalDocuments/index.tsx create mode 100644 src/containers/MarketDepth/MarketDepth.pcss create mode 100644 src/containers/MarketDepth/index.tsx create mode 100644 src/containers/Markets/Markets.pcss create mode 100644 src/containers/Markets/index.tsx create mode 100644 src/containers/MarketsTable/index.tsx create mode 100644 src/containers/ModalWithdrawConfirmation/ModalWithdrawConfirmation.pcss create mode 100644 src/containers/ModalWithdrawConfirmation/index.tsx create mode 100644 src/containers/ModalWithdrawSubmit/ModalWithdrawSubmit.pcss create mode 100644 src/containers/ModalWithdrawSubmit/index.tsx create mode 100644 src/containers/NavBar/NavBar.pcss create mode 100644 src/containers/NavBar/close-avatar.svg create mode 100644 src/containers/NavBar/close-icon.svg create mode 100644 src/containers/NavBar/close.svg create mode 100644 src/containers/NavBar/down-arrow.svg create mode 100644 src/containers/NavBar/index.tsx create mode 100644 src/containers/NavBar/open-avatar.svg create mode 100644 src/containers/NavBar/open-icon.svg create mode 100644 src/containers/OpenOrders/OpenOrders.pcss create mode 100644 src/containers/OpenOrders/OpenOrders.test.tsx create mode 100644 src/containers/OpenOrders/__snapshots__/OpenOrders.test.tsx.snap create mode 100644 src/containers/OpenOrders/index.tsx create mode 100644 src/containers/Order/Order.pcss create mode 100644 src/containers/Order/index.tsx create mode 100644 src/containers/OrderBook/OrderBook.pcss create mode 100644 src/containers/OrderBook/index.tsx create mode 100644 src/containers/OrdersElement/index.tsx create mode 100644 src/containers/ProfileAccountActivity/ProfileAccountActivity.pcss create mode 100644 src/containers/ProfileAccountActivity/index.tsx create mode 100644 src/containers/ProfileApiKeys/ProfileApiKeys.pcss create mode 100644 src/containers/ProfileApiKeys/index.tsx create mode 100644 src/containers/ProfileAuthDetails/close.svg create mode 100644 src/containers/ProfileAuthDetails/index.tsx create mode 100644 src/containers/ProfileTwoFactorAuth/ProfileTwoFactorAuth.pcss create mode 100644 src/containers/ProfileTwoFactorAuth/index.tsx create mode 100644 src/containers/ProfileVerification/ProfileVerification.pcss create mode 100644 src/containers/ProfileVerification/index.tsx create mode 100644 src/containers/RecentTrades/Market.tsx create mode 100644 src/containers/RecentTrades/RecentTrades.pcss create mode 100644 src/containers/RecentTrades/RecentTrades.test.tsx create mode 100644 src/containers/RecentTrades/Yours.tsx create mode 100644 src/containers/RecentTrades/__snapshots__/RecentTrades.test.tsx.snap create mode 100644 src/containers/RecentTrades/index.tsx create mode 100644 src/containers/ReferralProgram/ReferralProgram.pcss create mode 100644 src/containers/ReferralProgram/index.tsx create mode 100644 src/containers/ReferralReport/ReferralReport.pcss create mode 100644 src/containers/ReferralReport/index.tsx create mode 100644 src/containers/Sidebar/Sidebar.pcss create mode 100644 src/containers/Sidebar/index.tsx create mode 100644 src/containers/ToolBar/MarketSelector/MarketSelector.pcss create mode 100644 src/containers/ToolBar/MarketSelector/MarketsList/MarketsList.pcss create mode 100644 src/containers/ToolBar/MarketSelector/MarketsList/index.tsx create mode 100644 src/containers/ToolBar/MarketSelector/MarketsTabs/MarketsTabs.pcss create mode 100644 src/containers/ToolBar/MarketSelector/MarketsTabs/index.tsx create mode 100644 src/containers/ToolBar/MarketSelector/index.tsx create mode 100644 src/containers/ToolBar/PriceBar/PriceBar.pcss create mode 100644 src/containers/ToolBar/PriceBar/index.tsx create mode 100644 src/containers/ToolBar/ProgressLabel/ProgressLabel.pcss create mode 100644 src/containers/ToolBar/ProgressLabel/index.tsx create mode 100644 src/containers/ToolBar/ToolBar.pcss create mode 100644 src/containers/ToolBar/icons/ArrowIcon.tsx create mode 100644 src/containers/ToolBar/icons/hidden.svg create mode 100644 src/containers/ToolBar/icons/search.svg create mode 100644 src/containers/ToolBar/index.tsx create mode 100644 src/containers/TradingChart/TradingChart.pcss create mode 100644 src/containers/TradingChart/api.ts create mode 100644 src/containers/TradingChart/config.ts create mode 100644 src/containers/TradingChart/index.tsx create mode 100644 src/containers/TradingChart/timezones.test.tsx create mode 100644 src/containers/TradingChart/timezones.ts create mode 100644 src/containers/TwoFactorAuth/TwoFactorAuth.pcss create mode 100644 src/containers/Wallets/EstimatedValue/EstimatedValue.pcss create mode 100644 src/containers/Wallets/EstimatedValue/index.tsx create mode 100644 src/containers/Wallets/FailIcon.tsx create mode 100644 src/containers/Wallets/History.tsx create mode 100644 src/containers/Wallets/SucceedIcon.tsx create mode 100644 src/containers/WalletsFetch/WalletsFetch.test.tsx create mode 100644 src/containers/WalletsFetch/__snapshots__/WalletsFetch.test.tsx.snap create mode 100644 src/containers/WalletsFetch/index.tsx create mode 100644 src/containers/Withdraw/index.tsx create mode 100644 src/containers/index.ts create mode 100644 src/containers/style.pcss create mode 100644 src/custom/helpers/layout.ts create mode 100644 src/custom/styles/colors.pcss create mode 100644 src/custom/styles/fonts.pcss create mode 100644 src/custom/styles/style.pcss create mode 100644 src/custom/styles/themes/style.pcss create mode 100644 src/custom/tradingChartConfig.ts create mode 100644 src/custom/translations/en.ts create mode 100644 src/custom/translations/index.ts create mode 100644 src/custom/translations/nationalities.ts create mode 100644 src/custom/translations/ru.ts create mode 100644 src/filters/FilterPrice/FilterPriceCustomStep.ts create mode 100644 src/filters/FilterPrice/FilterPriceSignificantDigit.ts create mode 100644 src/filters/FilterPrice/index.test.ts create mode 100644 src/filters/FilterPrice/index.ts create mode 100644 src/filters/index.ts create mode 100644 src/helpers/accumulateVolume.ts create mode 100644 src/helpers/apiKeyDevBypass.ts create mode 100644 src/helpers/areEqualProps.ts create mode 100644 src/helpers/areEqualSelectedProps.ts create mode 100644 src/helpers/buildQueryString.test.ts create mode 100644 src/helpers/buildQueryString.ts create mode 100644 src/helpers/calcMaxVolume.ts create mode 100644 src/helpers/changeElementPosition.ts create mode 100644 src/helpers/checkDate.ts create mode 100644 src/helpers/cleanPositiveFloatInput.ts create mode 100644 src/helpers/convertRgbToHex.test.ts create mode 100644 src/helpers/convertRgbToHex.ts create mode 100644 src/helpers/copy.ts create mode 100644 src/helpers/emailValidation.ts create mode 100644 src/helpers/estimateValue.test.ts create mode 100644 src/helpers/estimateValue.ts create mode 100644 src/helpers/filterData.ts create mode 100644 src/helpers/formatCCYAddress.ts create mode 100644 src/helpers/formatDate.ts create mode 100644 src/helpers/geetest.js create mode 100644 src/helpers/getCsrfToken.ts create mode 100644 src/helpers/getHistorySagaParam.ts create mode 100644 src/helpers/getLanguageByCode.ts create mode 100644 src/helpers/getOrderAPI.ts create mode 100644 src/helpers/getStylesValueByKey.ts create mode 100644 src/helpers/getTimestampPeriod.ts create mode 100644 src/helpers/getTotalPrice.ts create mode 100644 src/helpers/getUnique.ts create mode 100644 src/helpers/getUrlPart.ts create mode 100644 src/helpers/getUserAgent.ts create mode 100644 src/helpers/getVerificationStep.ts create mode 100644 src/helpers/handleCCYPrecision.ts create mode 100644 src/helpers/handleIncrementalUpdate.test.ts create mode 100644 src/helpers/handleIncrementalUpdate.ts create mode 100644 src/helpers/helpers.test.ts create mode 100644 src/helpers/historyTableUtils.ts create mode 100644 src/helpers/index.ts create mode 100644 src/helpers/jest.ts create mode 100644 src/helpers/layout.ts create mode 100644 src/helpers/localeDate.ts create mode 100644 src/helpers/passwordValidation.ts create mode 100644 src/helpers/providers.tsx create mode 100644 src/helpers/randomSecretHex.ts create mode 100644 src/helpers/regExp.test.ts create mode 100644 src/helpers/regExp.ts create mode 100644 src/helpers/setDocumentTitle.ts create mode 100644 src/helpers/setTradeColor.ts create mode 100644 src/helpers/sliceArray.ts create mode 100644 src/helpers/sliceString.ts create mode 100644 src/helpers/sortByDate.ts create mode 100644 src/helpers/sortByPrice.ts create mode 100644 src/helpers/timeConvert.ts create mode 100644 src/helpers/timezone.ts create mode 100644 src/helpers/toggleColorTheme.ts create mode 100644 src/helpers/truncateMiddle.ts create mode 100644 src/helpers/usernameValidation.ts create mode 100644 src/helpers/validateBeneficiaryAddress.test.ts create mode 100644 src/helpers/validateBeneficiaryAddress.ts create mode 100644 src/hooks/index.ts create mode 100644 src/hooks/useApiKeysFetch.ts create mode 100644 src/hooks/useBeneficiariesFetch.ts create mode 100644 src/hooks/useCurrenciesFetch.ts create mode 100644 src/hooks/useDepthFetch.ts create mode 100644 src/hooks/useDocumentTitle.ts create mode 100644 src/hooks/useDocumentationFetch.ts create mode 100644 src/hooks/useHistoryFetch.ts create mode 100644 src/hooks/useMarketsFetch.ts create mode 100644 src/hooks/usePrevious.ts create mode 100644 src/hooks/useResetCaptchaState.ts create mode 100644 src/hooks/useSetMobileDevice.ts create mode 100644 src/hooks/useSetShouldGeetestReset.ts create mode 100644 src/hooks/useTickersFetch.ts create mode 100644 src/hooks/useUserActivityFetch.ts create mode 100644 src/hooks/useUserOrdersHistoryFetch.ts create mode 100644 src/hooks/useWalletsFetch.ts create mode 100644 src/index.pcss create mode 100644 src/index.tsx create mode 100644 src/mobile/assets/images/AddIcon.tsx create mode 100644 src/mobile/assets/images/CheckIcon.tsx create mode 100644 src/mobile/assets/images/ChevronIcon.tsx create mode 100644 src/mobile/assets/images/MinusIcon.tsx create mode 100644 src/mobile/assets/images/PlusIcon.tsx create mode 100644 src/mobile/assets/images/WarningIcon.tsx create mode 100644 src/mobile/assets/images/footer/HomeIcon.tsx create mode 100644 src/mobile/assets/images/footer/OrderIcon.tsx create mode 100644 src/mobile/assets/images/footer/ProfileIcon.tsx create mode 100644 src/mobile/assets/images/footer/TradeIcon.tsx create mode 100644 src/mobile/assets/images/footer/WalletIcon.tsx create mode 100644 src/mobile/components/CreatedApiKeyModal/index.tsx create mode 100644 src/mobile/components/CurrentMarketInfo/index.tsx create mode 100644 src/mobile/components/EstimatedValue/index.tsx create mode 100644 src/mobile/components/Footer/index.tsx create mode 100644 src/mobile/components/Header/index.tsx create mode 100644 src/mobile/components/HistoryTable/Rowitem.tsx create mode 100644 src/mobile/components/HistoryTable/index.tsx create mode 100644 src/mobile/components/Modal/index.tsx create mode 100644 src/mobile/components/ModalWithdrawConfirmation/index.tsx create mode 100644 src/mobile/components/OpenOrders/index.tsx create mode 100644 src/mobile/components/OrderButtons/index.tsx create mode 100644 src/mobile/components/OrderInput/index.tsx create mode 100644 src/mobile/components/Orders/OrdersItem.tsx create mode 100644 src/mobile/components/Orders/index.tsx create mode 100644 src/mobile/components/Profile/ApiKeysItem/index.tsx create mode 100644 src/mobile/components/Profile/ProfileLinks/index.tsx create mode 100644 src/mobile/components/Profile/UserActivityItem/index.tsx create mode 100644 src/mobile/components/Profile/UserInfo/index.tsx create mode 100644 src/mobile/components/Profile/index.ts create mode 100644 src/mobile/components/Subheader/index.tsx create mode 100644 src/mobile/components/TradingTabs/Charts/index.tsx create mode 100644 src/mobile/components/TradingTabs/CreateOrder/index.tsx create mode 100644 src/mobile/components/TradingTabs/index.tsx create mode 100644 src/mobile/components/TwoFactorModal/index.tsx create mode 100644 src/mobile/components/WalletBanner/index.tsx create mode 100644 src/mobile/components/WalletDepositBody/index.tsx create mode 100644 src/mobile/components/WalletHeader/index.tsx create mode 100644 src/mobile/components/WalletItem/index.tsx create mode 100644 src/mobile/components/WalletWithdrawBody/index.tsx create mode 100644 src/mobile/components/WalletsButtons/index.tsx create mode 100644 src/mobile/components/index.ts create mode 100644 src/mobile/screens/ChangeForgottenPasswordScreen/index.tsx create mode 100644 src/mobile/screens/ConfirmScreen/index.tsx create mode 100644 src/mobile/screens/EmailVerificationScreen/index.tsx create mode 100644 src/mobile/screens/ForgotPassword/index.tsx create mode 100644 src/mobile/screens/Landing/index.tsx create mode 100644 src/mobile/screens/Orders/index.tsx create mode 100644 src/mobile/screens/Profile/index.tsx create mode 100644 src/mobile/screens/ProfileAccountActivity/index.tsx create mode 100644 src/mobile/screens/ProfileApiKeys/index.tsx create mode 100644 src/mobile/screens/ProfileAuth/index.tsx create mode 100644 src/mobile/screens/ProfileChangePassword/index.tsx create mode 100644 src/mobile/screens/ProfileColorTheme/index.tsx create mode 100644 src/mobile/screens/ProfileLanguage/index.tsx create mode 100644 src/mobile/screens/ProfileVerificationScreen/index.tsx create mode 100644 src/mobile/screens/SelectedWalletScreen/index.tsx create mode 100644 src/mobile/screens/SignInScreen/index.tsx create mode 100644 src/mobile/screens/SignUpScreen/index.tsx create mode 100644 src/mobile/screens/Trading/index.tsx create mode 100644 src/mobile/screens/WalletDeposit/index.tsx create mode 100644 src/mobile/screens/WalletWithdraw/index.tsx create mode 100644 src/mobile/screens/WalletsHistory/index.tsx create mode 100644 src/mobile/screens/WalletsScreen/index.tsx create mode 100644 src/mobile/screens/index.ts create mode 100644 src/mobile/styles/components/ApiKeysItem.pcss create mode 100644 src/mobile/styles/components/Charts.pcss create mode 100644 src/mobile/styles/components/CreateOrder.pcss create mode 100644 src/mobile/styles/components/CreatedApiKeyModal.pcss create mode 100644 src/mobile/styles/components/CurrentMarketInfo.pcss create mode 100644 src/mobile/styles/components/EstimatedValue.pcss create mode 100644 src/mobile/styles/components/Footer.pcss create mode 100644 src/mobile/styles/components/Header.pcss create mode 100644 src/mobile/styles/components/Modal.pcss create mode 100644 src/mobile/styles/components/ModalWithdrawConfirmation.pcss create mode 100644 src/mobile/styles/components/OpenOrders.pcss create mode 100644 src/mobile/styles/components/OrderButtons.pcss create mode 100644 src/mobile/styles/components/OrderInput.pcss create mode 100644 src/mobile/styles/components/Orders.pcss create mode 100644 src/mobile/styles/components/OrdersItem.pcss create mode 100644 src/mobile/styles/components/ProfileLinks.pcss create mode 100644 src/mobile/styles/components/RowItem.pcss create mode 100644 src/mobile/styles/components/Subheader.pcss create mode 100644 src/mobile/styles/components/TickerTable.pcss create mode 100644 src/mobile/styles/components/TradingTabs.pcss create mode 100644 src/mobile/styles/components/TwoFactorModal.pcss create mode 100644 src/mobile/styles/components/UserActivityItem.pcss create mode 100644 src/mobile/styles/components/UserInfo.pcss create mode 100644 src/mobile/styles/components/WalletBanner.pcss create mode 100644 src/mobile/styles/components/WalletDepositBody.pcss create mode 100644 src/mobile/styles/components/WalletHeader.pcss create mode 100644 src/mobile/styles/components/WalletItem.pcss create mode 100644 src/mobile/styles/components/WalletWithdrawBody.pcss create mode 100644 src/mobile/styles/components/WalletsButtons.pcss create mode 100644 src/mobile/styles/components/styles.pcss create mode 100644 src/mobile/styles/screens/ChangeForgottenPasswordMobileScreen.pcss create mode 100644 src/mobile/styles/screens/ConfirmMobileScreen.pcss create mode 100644 src/mobile/styles/screens/EmailVerificationMobileScreen.pcss create mode 100644 src/mobile/styles/screens/ForgotPassword.pcss create mode 100644 src/mobile/styles/screens/HistoryTable.pcss create mode 100644 src/mobile/styles/screens/Landing.pcss create mode 100644 src/mobile/styles/screens/Orders.pcss create mode 100644 src/mobile/styles/screens/Profile.pcss create mode 100644 src/mobile/styles/screens/ProfileApiKeys.pcss create mode 100644 src/mobile/styles/screens/ProfileAuthMobileScreen.pcss create mode 100644 src/mobile/styles/screens/ProfileChangePassword.pcss create mode 100644 src/mobile/styles/screens/ProfileColorTheme.pcss create mode 100644 src/mobile/styles/screens/ProfileLanguage.pcss create mode 100644 src/mobile/styles/screens/ProfileUserActivity.pcss create mode 100644 src/mobile/styles/screens/ProfileVerificationMobileScreen.pcss create mode 100644 src/mobile/styles/screens/SignInMobileScreen.pcss create mode 100644 src/mobile/styles/screens/SignUpMobileScreen.pcss create mode 100644 src/mobile/styles/screens/WalletWithdraw.pcss create mode 100644 src/mobile/styles/screens/styles.pcss create mode 100644 src/mobile/styles/style.pcss create mode 100644 src/mobile/translations/en.ts create mode 100644 src/mobile/translations/index.ts create mode 100644 src/mobile/translations/ru.ts create mode 100644 src/modules/app.ts create mode 100644 src/modules/helpers.ts create mode 100644 src/modules/index.ts create mode 100644 src/modules/public/alert/actions.test.ts create mode 100644 src/modules/public/alert/actions.ts create mode 100644 src/modules/public/alert/constants.ts create mode 100644 src/modules/public/alert/index.ts create mode 100644 src/modules/public/alert/reducer.test.ts create mode 100644 src/modules/public/alert/reducer.ts create mode 100644 src/modules/public/alert/sagas/handleAlertSaga.ts create mode 100644 src/modules/public/alert/sagas/handleErrorAlert.test.ts create mode 100644 src/modules/public/alert/sagas/handleSuccessAlert.test.ts create mode 100644 src/modules/public/alert/sagas/index.ts create mode 100644 src/modules/public/alert/selectors.ts create mode 100644 src/modules/public/blocklistAccess/actions.test.ts create mode 100644 src/modules/public/blocklistAccess/actions.ts create mode 100644 src/modules/public/blocklistAccess/constants.ts create mode 100644 src/modules/public/blocklistAccess/index.ts create mode 100644 src/modules/public/blocklistAccess/reducer.test.ts create mode 100644 src/modules/public/blocklistAccess/reducer.ts create mode 100644 src/modules/public/blocklistAccess/sagas/blocklistAccessFetchSaga.test.ts create mode 100644 src/modules/public/blocklistAccess/sagas/blocklistAccessFetchSaga.ts create mode 100644 src/modules/public/blocklistAccess/sagas/index.ts create mode 100644 src/modules/public/blocklistAccess/selectors.ts create mode 100644 src/modules/public/configs/actions.test.ts create mode 100644 src/modules/public/configs/actions.ts create mode 100644 src/modules/public/configs/constants.ts create mode 100644 src/modules/public/configs/index.ts create mode 100644 src/modules/public/configs/reducer.test.ts create mode 100644 src/modules/public/configs/reducer.ts create mode 100644 src/modules/public/configs/sagas/configsFetchSaga.test.ts create mode 100644 src/modules/public/configs/sagas/configsFetchSaga.ts create mode 100644 src/modules/public/configs/sagas/index.ts create mode 100644 src/modules/public/configs/selectors.ts create mode 100644 src/modules/public/configs/types.ts create mode 100644 src/modules/public/currencies/actions.ts create mode 100644 src/modules/public/currencies/constants.ts create mode 100644 src/modules/public/currencies/index.ts create mode 100644 src/modules/public/currencies/reducer.test.ts create mode 100644 src/modules/public/currencies/reducer.ts create mode 100644 src/modules/public/currencies/sagas/currenciesFetchSaga.test.ts create mode 100644 src/modules/public/currencies/sagas/currenciesFetchSaga.ts create mode 100644 src/modules/public/currencies/selectors.ts create mode 100644 src/modules/public/currencies/types.ts create mode 100644 src/modules/public/customization/actions.test.ts create mode 100644 src/modules/public/customization/actions.ts create mode 100644 src/modules/public/customization/constants.ts create mode 100644 src/modules/public/customization/index.ts create mode 100644 src/modules/public/customization/reducer.test.ts create mode 100644 src/modules/public/customization/reducer.ts create mode 100644 src/modules/public/customization/sagas/customizationFetchSaga.test.ts create mode 100644 src/modules/public/customization/sagas/customizationFetchSaga.ts create mode 100644 src/modules/public/customization/sagas/index.ts create mode 100644 src/modules/public/customization/selectors.ts create mode 100644 src/modules/public/customization/types.ts create mode 100644 src/modules/public/errorHandler/actions.ts create mode 100644 src/modules/public/errorHandler/constants.ts create mode 100644 src/modules/public/errorHandler/helpers/getMetaMaskErrorMessage.ts create mode 100644 src/modules/public/errorHandler/index.ts create mode 100644 src/modules/public/errorHandler/reducer.ts create mode 100644 src/modules/public/errorHandler/sagas/handleErrorSaga.ts create mode 100644 src/modules/public/errorHandler/sagas/index.ts create mode 100644 src/modules/public/globalSettings/actions.ts create mode 100644 src/modules/public/globalSettings/constants.ts create mode 100644 src/modules/public/globalSettings/index.ts create mode 100644 src/modules/public/globalSettings/reducer.test.ts create mode 100644 src/modules/public/globalSettings/reducer.ts create mode 100644 src/modules/public/globalSettings/selectors.ts create mode 100644 src/modules/public/gridLayout/actions.test.ts create mode 100644 src/modules/public/gridLayout/actions.ts create mode 100644 src/modules/public/gridLayout/constants.ts create mode 100644 src/modules/public/gridLayout/index.ts create mode 100644 src/modules/public/gridLayout/reducer.test.ts create mode 100644 src/modules/public/gridLayout/reducer.ts create mode 100644 src/modules/public/gridLayout/selectors.ts create mode 100644 src/modules/public/i18n/actions.ts create mode 100644 src/modules/public/i18n/constants.ts create mode 100644 src/modules/public/i18n/index.ts create mode 100644 src/modules/public/i18n/reducer.test.ts create mode 100644 src/modules/public/i18n/reducer.ts create mode 100644 src/modules/public/i18n/selectors.ts create mode 100644 src/modules/public/kline/actions.test.ts create mode 100644 src/modules/public/kline/actions.ts create mode 100644 src/modules/public/kline/constants.ts create mode 100644 src/modules/public/kline/index.ts create mode 100644 src/modules/public/kline/reducer.test.ts create mode 100644 src/modules/public/kline/reducer.ts create mode 100644 src/modules/public/kline/sagas/handleKlineFetchSaga.test.ts create mode 100644 src/modules/public/kline/sagas/handleKlineFetchSaga.ts create mode 100644 src/modules/public/kline/sagas/index.ts create mode 100644 src/modules/public/kline/selectors.ts create mode 100644 src/modules/public/kline/types.ts create mode 100644 src/modules/public/markets/actions.ts create mode 100644 src/modules/public/markets/constants.ts create mode 100644 src/modules/public/markets/index.ts create mode 100644 src/modules/public/markets/reducer.test.ts create mode 100644 src/modules/public/markets/reducer.ts create mode 100644 src/modules/public/markets/sagas/marketsFetchSaga.test.ts create mode 100644 src/modules/public/markets/sagas/marketsFetchSaga.ts create mode 100644 src/modules/public/markets/selectors.ts create mode 100644 src/modules/public/markets/types.ts create mode 100644 src/modules/public/memberLevels/actions.test.ts create mode 100644 src/modules/public/memberLevels/actions.ts create mode 100644 src/modules/public/memberLevels/constants.ts create mode 100644 src/modules/public/memberLevels/index.ts create mode 100644 src/modules/public/memberLevels/reducer.test.ts create mode 100644 src/modules/public/memberLevels/reducer.ts create mode 100644 src/modules/public/memberLevels/sagas/index.ts create mode 100644 src/modules/public/memberLevels/sagas/memberLevelsSaga.test.ts create mode 100644 src/modules/public/memberLevels/sagas/memberLevelsSaga.ts create mode 100644 src/modules/public/memberLevels/selectors.ts create mode 100644 src/modules/public/memberLevels/types.ts create mode 100644 src/modules/public/orderBook/actions.test.ts create mode 100644 src/modules/public/orderBook/actions.ts create mode 100644 src/modules/public/orderBook/constants.ts create mode 100644 src/modules/public/orderBook/index.ts create mode 100644 src/modules/public/orderBook/reducer.test.ts create mode 100644 src/modules/public/orderBook/reducer.ts create mode 100644 src/modules/public/orderBook/sagas/depthSaga.test.ts create mode 100644 src/modules/public/orderBook/sagas/depthSaga.ts create mode 100644 src/modules/public/orderBook/sagas/incrementDepthSubscribeSaga.ts create mode 100644 src/modules/public/orderBook/sagas/index.ts create mode 100644 src/modules/public/orderBook/sagas/orderBookSaga.test.ts create mode 100644 src/modules/public/orderBook/sagas/orderBookSaga.ts create mode 100644 src/modules/public/orderBook/selectors.ts create mode 100644 src/modules/public/orderBook/types.ts create mode 100644 src/modules/public/ranger/actions.ts create mode 100644 src/modules/public/ranger/constants.ts create mode 100644 src/modules/public/ranger/helpers.test.ts create mode 100644 src/modules/public/ranger/helpers.ts create mode 100644 src/modules/public/ranger/index.ts create mode 100644 src/modules/public/ranger/reducer.test.ts create mode 100644 src/modules/public/ranger/reducer.ts create mode 100644 src/modules/public/ranger/sagas/index.ts create mode 100644 src/modules/public/ranger/sagas/rangerSaga.test.ts create mode 100644 src/modules/public/ranger/sagas/rangerSaga.ts create mode 100644 src/modules/public/ranger/selectors.ts create mode 100644 src/modules/public/recentTrades/actions.ts create mode 100644 src/modules/public/recentTrades/constants.ts create mode 100644 src/modules/public/recentTrades/index.ts create mode 100644 src/modules/public/recentTrades/reducer.test.ts create mode 100644 src/modules/public/recentTrades/reducer.ts create mode 100644 src/modules/public/recentTrades/sagas/index.ts create mode 100644 src/modules/public/recentTrades/sagas/recentTradesFetchSaga.test.ts create mode 100644 src/modules/public/recentTrades/sagas/recentTradesFetchSaga.ts create mode 100644 src/modules/public/recentTrades/selectors.ts create mode 100644 src/modules/public/recentTrades/types.ts create mode 100644 src/modules/types.ts create mode 100644 src/modules/user/apiKeys/actions.test.ts create mode 100644 src/modules/user/apiKeys/actions.ts create mode 100644 src/modules/user/apiKeys/constants.ts create mode 100644 src/modules/user/apiKeys/index.ts create mode 100644 src/modules/user/apiKeys/reducer.test.ts create mode 100644 src/modules/user/apiKeys/reducer.ts create mode 100644 src/modules/user/apiKeys/sagas/apiKeyCreateSaga.test.ts create mode 100644 src/modules/user/apiKeys/sagas/apiKeyCreateSaga.ts create mode 100644 src/modules/user/apiKeys/sagas/apiKeyDeleteSaga.test.ts create mode 100644 src/modules/user/apiKeys/sagas/apiKeyDeleteSaga.ts create mode 100644 src/modules/user/apiKeys/sagas/apiKeyUpdateSaga.test.ts create mode 100644 src/modules/user/apiKeys/sagas/apiKeyUpdateSaga.ts create mode 100644 src/modules/user/apiKeys/sagas/apiKeysSaga.test.ts create mode 100644 src/modules/user/apiKeys/sagas/apiKeysSaga.ts create mode 100644 src/modules/user/apiKeys/sagas/index.ts create mode 100644 src/modules/user/apiKeys/selectors.test.ts create mode 100644 src/modules/user/apiKeys/selectors.ts create mode 100644 src/modules/user/auth/actions.test.ts create mode 100644 src/modules/user/auth/actions.ts create mode 100644 src/modules/user/auth/constants.ts create mode 100644 src/modules/user/auth/index.ts create mode 100644 src/modules/user/auth/reducer.test.ts create mode 100644 src/modules/user/auth/reducer.ts create mode 100644 src/modules/user/auth/sagas/entropyPassword.ts create mode 100644 src/modules/user/auth/sagas/index.ts create mode 100644 src/modules/user/auth/sagas/logoutSaga.test.ts create mode 100644 src/modules/user/auth/sagas/logoutSaga.ts create mode 100644 src/modules/user/auth/sagas/signInSaga.test.ts create mode 100644 src/modules/user/auth/sagas/signInSaga.ts create mode 100644 src/modules/user/auth/sagas/signUpSaga.ts create mode 100644 src/modules/user/auth/sagas/verificationSaga.ts create mode 100644 src/modules/user/auth/selectors.ts create mode 100644 src/modules/user/authenticationCode/actions.ts create mode 100644 src/modules/user/authenticationCode/constants.ts create mode 100644 src/modules/user/authenticationCode/index.ts create mode 100644 src/modules/user/authenticationCode/reducer.ts create mode 100644 src/modules/user/authenticationCode/sagas/index.ts create mode 100644 src/modules/user/authenticationCode/sagas/resendAuthenticationCodeSaga.ts create mode 100644 src/modules/user/authenticationCode/sagas/sendAuthenticationCodeSaga.ts create mode 100644 src/modules/user/authenticationCode/selectors.ts create mode 100644 src/modules/user/beneficiaries/actions.test.ts create mode 100644 src/modules/user/beneficiaries/actions.ts create mode 100644 src/modules/user/beneficiaries/constants.ts create mode 100644 src/modules/user/beneficiaries/index.ts create mode 100644 src/modules/user/beneficiaries/reducer.test.ts create mode 100644 src/modules/user/beneficiaries/reducer.ts create mode 100644 src/modules/user/beneficiaries/sagas/beneficiariesActivateSaga.test.ts create mode 100644 src/modules/user/beneficiaries/sagas/beneficiariesActivateSaga.ts create mode 100644 src/modules/user/beneficiaries/sagas/beneficiariesCreateSaga.test.ts create mode 100644 src/modules/user/beneficiaries/sagas/beneficiariesCreateSaga.ts create mode 100644 src/modules/user/beneficiaries/sagas/beneficiariesDeleteSaga.test.ts create mode 100644 src/modules/user/beneficiaries/sagas/beneficiariesDeleteSaga.ts create mode 100644 src/modules/user/beneficiaries/sagas/beneficiariesResendPinSaga.test.ts create mode 100644 src/modules/user/beneficiaries/sagas/beneficiariesResendPinSaga.ts create mode 100644 src/modules/user/beneficiaries/sagas/beneficiariesSaga.test.ts create mode 100644 src/modules/user/beneficiaries/sagas/beneficiariesSaga.ts create mode 100644 src/modules/user/beneficiaries/sagas/index.ts create mode 100644 src/modules/user/beneficiaries/selectors.ts create mode 100644 src/modules/user/beneficiaries/types.ts create mode 100644 src/modules/user/captcha/actions.ts create mode 100644 src/modules/user/captcha/constants.ts create mode 100644 src/modules/user/captcha/index.ts create mode 100644 src/modules/user/captcha/reducer.ts create mode 100644 src/modules/user/captcha/sagas/geetestCaptchaSaga.ts create mode 100644 src/modules/user/captcha/sagas/index.ts create mode 100644 src/modules/user/captcha/selectors.ts create mode 100644 src/modules/user/customization/actions.test.ts create mode 100644 src/modules/user/customization/actions.ts create mode 100644 src/modules/user/customization/constants.ts create mode 100644 src/modules/user/customization/index.ts create mode 100644 src/modules/user/customization/reducer.test.ts create mode 100644 src/modules/user/customization/reducer.ts create mode 100644 src/modules/user/customization/sagas/customizationUpdateSaga.test.ts create mode 100644 src/modules/user/customization/sagas/customizationUpdateSaga.ts create mode 100644 src/modules/user/customization/sagas/index.ts create mode 100644 src/modules/user/customization/selectors.ts create mode 100644 src/modules/user/documentation/actions.test.ts create mode 100644 src/modules/user/documentation/actions.ts create mode 100644 src/modules/user/documentation/constants.ts create mode 100644 src/modules/user/documentation/index.ts create mode 100644 src/modules/user/documentation/reducer.test.ts create mode 100644 src/modules/user/documentation/reducer.ts create mode 100644 src/modules/user/documentation/sagas/docTradeUserApiFetchSaga.test.ts create mode 100644 src/modules/user/documentation/sagas/docTradeUserApiFetchSaga.ts create mode 100644 src/modules/user/documentation/sagas/index.ts create mode 100644 src/modules/user/documentation/selectors.ts create mode 100644 src/modules/user/documentation/types.ts create mode 100644 src/modules/user/emailVerification/actions.ts create mode 100644 src/modules/user/emailVerification/constants.ts create mode 100644 src/modules/user/emailVerification/index.ts create mode 100644 src/modules/user/emailVerification/reducer.ts create mode 100644 src/modules/user/emailVerification/sagas/EmailVerificationSaga.test.ts create mode 100644 src/modules/user/emailVerification/sagas/emailVerificationSaga.ts create mode 100644 src/modules/user/emailVerification/sagas/index.ts create mode 100644 src/modules/user/emailVerification/selectors.ts create mode 100644 src/modules/user/history/actions.test.ts create mode 100644 src/modules/user/history/actions.ts create mode 100644 src/modules/user/history/constants.ts create mode 100644 src/modules/user/history/index.ts create mode 100644 src/modules/user/history/reducer.ts create mode 100644 src/modules/user/history/sagas/historyPushSaga.ts create mode 100644 src/modules/user/history/sagas/historySaga.test.ts create mode 100644 src/modules/user/history/sagas/historySaga.ts create mode 100644 src/modules/user/history/sagas/index.ts create mode 100644 src/modules/user/history/selectors.ts create mode 100644 src/modules/user/history/types.ts create mode 100644 src/modules/user/kyc/addresses/actions.test.ts create mode 100644 src/modules/user/kyc/addresses/actions.ts create mode 100644 src/modules/user/kyc/addresses/constants.ts create mode 100644 src/modules/user/kyc/addresses/index.ts create mode 100644 src/modules/user/kyc/addresses/reducer.test.ts create mode 100644 src/modules/user/kyc/addresses/reducer.ts create mode 100644 src/modules/user/kyc/addresses/sagas/index.ts create mode 100644 src/modules/user/kyc/addresses/sagas/sendAddressesSaga.test.ts create mode 100644 src/modules/user/kyc/addresses/sagas/sendAddressesSaga.ts create mode 100644 src/modules/user/kyc/addresses/selectors.test.ts create mode 100644 src/modules/user/kyc/addresses/selectors.ts create mode 100644 src/modules/user/kyc/documents/actions.ts create mode 100644 src/modules/user/kyc/documents/constants.ts create mode 100644 src/modules/user/kyc/documents/index.ts create mode 100644 src/modules/user/kyc/documents/reducer.test.ts create mode 100644 src/modules/user/kyc/documents/reducer.ts create mode 100644 src/modules/user/kyc/documents/sagas/index.ts create mode 100644 src/modules/user/kyc/documents/sagas/sendDocumentsSaga.test.ts create mode 100644 src/modules/user/kyc/documents/sagas/sendDocumentsSaga.ts create mode 100644 src/modules/user/kyc/documents/selectors.ts create mode 100644 src/modules/user/kyc/identity/actions.ts create mode 100644 src/modules/user/kyc/identity/constants.ts create mode 100644 src/modules/user/kyc/identity/index.ts create mode 100644 src/modules/user/kyc/identity/reducer.test.ts create mode 100644 src/modules/user/kyc/identity/reducer.ts create mode 100644 src/modules/user/kyc/identity/sagas/editIdentity.test.ts create mode 100644 src/modules/user/kyc/identity/sagas/editIdentitySaga.ts create mode 100644 src/modules/user/kyc/identity/sagas/index.ts create mode 100644 src/modules/user/kyc/identity/sagas/sendIdentity.test.ts create mode 100644 src/modules/user/kyc/identity/sagas/sendIdentitySaga.ts create mode 100644 src/modules/user/kyc/identity/selectors.ts create mode 100644 src/modules/user/kyc/identity/types.ts create mode 100644 src/modules/user/kyc/index.ts create mode 100644 src/modules/user/kyc/label/actions.ts create mode 100644 src/modules/user/kyc/label/constants.ts create mode 100644 src/modules/user/kyc/label/index.ts create mode 100644 src/modules/user/kyc/label/reducer.test.ts create mode 100644 src/modules/user/kyc/label/reducer.ts create mode 100644 src/modules/user/kyc/label/sagas/index.ts create mode 100644 src/modules/user/kyc/label/sagas/labelSaga.test.ts create mode 100644 src/modules/user/kyc/label/sagas/labelSaga.ts create mode 100644 src/modules/user/kyc/label/selectors.ts create mode 100644 src/modules/user/kyc/phone/actions.ts create mode 100644 src/modules/user/kyc/phone/constants.ts create mode 100644 src/modules/user/kyc/phone/index.ts create mode 100644 src/modules/user/kyc/phone/reducer.test.ts create mode 100644 src/modules/user/kyc/phone/reducer.ts create mode 100644 src/modules/user/kyc/phone/sagas/confirmPhoneSaga.ts create mode 100644 src/modules/user/kyc/phone/sagas/index.ts create mode 100644 src/modules/user/kyc/phone/sagas/resendCodeSaga.ts create mode 100644 src/modules/user/kyc/phone/sagas/sendCodeSaga.test.ts create mode 100644 src/modules/user/kyc/phone/sagas/sendCodeSaga.ts create mode 100644 src/modules/user/kyc/phone/selectors.ts create mode 100644 src/modules/user/openOrders/actions.test.ts create mode 100644 src/modules/user/openOrders/actions.ts create mode 100644 src/modules/user/openOrders/constants.ts create mode 100644 src/modules/user/openOrders/helpers.ts create mode 100644 src/modules/user/openOrders/index.ts create mode 100644 src/modules/user/openOrders/reducer.test.ts create mode 100644 src/modules/user/openOrders/reducer.ts create mode 100644 src/modules/user/openOrders/sagas/index.ts create mode 100644 src/modules/user/openOrders/sagas/openOrdersCancelSaga.test.ts create mode 100644 src/modules/user/openOrders/sagas/openOrdersCancelSaga.ts create mode 100644 src/modules/user/openOrders/sagas/userOpenOrdersFetchSaga.test.ts create mode 100644 src/modules/user/openOrders/sagas/userOpenOrdersFetchSaga.ts create mode 100644 src/modules/user/openOrders/selectors.ts create mode 100644 src/modules/user/orders/actions.ts create mode 100644 src/modules/user/orders/constants.ts create mode 100644 src/modules/user/orders/index.ts create mode 100644 src/modules/user/orders/reducer.test.ts create mode 100644 src/modules/user/orders/reducer.ts create mode 100644 src/modules/user/orders/sagas/index.ts create mode 100644 src/modules/user/orders/sagas/ordersExecuteSaga.test.ts create mode 100644 src/modules/user/orders/sagas/ordersExecuteSaga.ts create mode 100644 src/modules/user/orders/selectors.ts create mode 100644 src/modules/user/ordersHistory/actions.test.ts create mode 100644 src/modules/user/ordersHistory/actions.ts create mode 100644 src/modules/user/ordersHistory/constants.ts create mode 100644 src/modules/user/ordersHistory/helpers.ts create mode 100644 src/modules/user/ordersHistory/index.ts create mode 100644 src/modules/user/ordersHistory/reducer.test.ts create mode 100644 src/modules/user/ordersHistory/reducer.ts create mode 100644 src/modules/user/ordersHistory/sagas/index.ts create mode 100644 src/modules/user/ordersHistory/sagas/ordersCancelAllSaga.test.ts create mode 100644 src/modules/user/ordersHistory/sagas/ordersCancelAllSaga.ts create mode 100644 src/modules/user/ordersHistory/sagas/ordersHistoryCancelSaga.test.ts create mode 100644 src/modules/user/ordersHistory/sagas/ordersHistoryCancelSaga.ts create mode 100644 src/modules/user/ordersHistory/sagas/ordersHistorySaga.test.ts create mode 100644 src/modules/user/ordersHistory/sagas/ordersHistorySaga.ts create mode 100644 src/modules/user/ordersHistory/selectors.ts create mode 100644 src/modules/user/password/actions.test.ts create mode 100644 src/modules/user/password/actions.ts create mode 100644 src/modules/user/password/constants.ts create mode 100644 src/modules/user/password/index.ts create mode 100644 src/modules/user/password/reducer.test.ts create mode 100644 src/modules/user/password/reducer.ts create mode 100644 src/modules/user/password/sagas/changeForgotPasswordSaga.test.ts create mode 100644 src/modules/user/password/sagas/changeForgotPasswordSaga.ts create mode 100644 src/modules/user/password/sagas/forgotPasswordSaga.test.ts create mode 100644 src/modules/user/password/sagas/forgotPasswordSaga.ts create mode 100644 src/modules/user/password/sagas/index.ts create mode 100644 src/modules/user/password/selectors.ts create mode 100644 src/modules/user/profile/actions.test.ts create mode 100644 src/modules/user/profile/actions.ts create mode 100644 src/modules/user/profile/constants.ts create mode 100644 src/modules/user/profile/index.ts create mode 100644 src/modules/user/profile/reducer.test.ts create mode 100644 src/modules/user/profile/reducer.ts create mode 100644 src/modules/user/profile/sagas/changePasswordSaga.test.ts create mode 100644 src/modules/user/profile/sagas/changePasswordSaga.ts create mode 100644 src/modules/user/profile/sagas/changeUserDataSaga.test.ts create mode 100644 src/modules/user/profile/sagas/changeUserDataSaga.ts create mode 100644 src/modules/user/profile/sagas/generate2faQRSaga.test.ts create mode 100644 src/modules/user/profile/sagas/generate2faQRSaga.ts create mode 100644 src/modules/user/profile/sagas/index.ts create mode 100644 src/modules/user/profile/sagas/toggle2faSaga.test.ts create mode 100644 src/modules/user/profile/sagas/toggle2faSaga.ts create mode 100644 src/modules/user/profile/sagas/userSaga.test.ts create mode 100644 src/modules/user/profile/sagas/userSaga.ts create mode 100644 src/modules/user/profile/selectors.ts create mode 100644 src/modules/user/profile/types.ts create mode 100644 src/modules/user/userActivity/actions.test.ts create mode 100644 src/modules/user/userActivity/actions.ts create mode 100644 src/modules/user/userActivity/constants.ts create mode 100644 src/modules/user/userActivity/index.ts create mode 100644 src/modules/user/userActivity/reducer.test.ts create mode 100644 src/modules/user/userActivity/reducer.ts create mode 100644 src/modules/user/userActivity/sagas/index.ts create mode 100644 src/modules/user/userActivity/sagas/userActivitySaga.test.ts create mode 100644 src/modules/user/userActivity/sagas/userActivitySaga.ts create mode 100644 src/modules/user/userActivity/selectors.test.ts create mode 100644 src/modules/user/userActivity/selectors.ts create mode 100644 src/modules/user/wallets/actions.ts create mode 100644 src/modules/user/wallets/constants.ts create mode 100644 src/modules/user/wallets/index.ts create mode 100644 src/modules/user/wallets/reducer.test.ts create mode 100644 src/modules/user/wallets/reducer.ts create mode 100644 src/modules/user/wallets/sagas/index.ts create mode 100644 src/modules/user/wallets/sagas/walletsAddressSaga.ts create mode 100644 src/modules/user/wallets/sagas/walletsSaga.test.ts create mode 100644 src/modules/user/wallets/sagas/walletsSaga.ts create mode 100644 src/modules/user/wallets/sagas/walletsWithdrawSaga.ts create mode 100644 src/modules/user/wallets/selectors.ts create mode 100644 src/modules/user/wallets/types.ts create mode 100644 src/modules/user/withdrawLimit/actions.ts create mode 100644 src/modules/user/withdrawLimit/constants.ts create mode 100644 src/modules/user/withdrawLimit/index.ts create mode 100644 src/modules/user/withdrawLimit/reducer.test.ts create mode 100644 src/modules/user/withdrawLimit/reducer.ts create mode 100644 src/modules/user/withdrawLimit/sagas/index.ts create mode 100644 src/modules/user/withdrawLimit/sagas/withdrawLimitSaga.test.ts create mode 100644 src/modules/user/withdrawLimit/sagas/withdrawLimitSaga.ts create mode 100644 src/modules/user/withdrawLimit/selectors.test.ts create mode 100644 src/modules/user/withdrawLimit/selectors.ts create mode 100644 src/modules/user/withdrawLimit/types.ts create mode 100644 src/react-app-env.d.ts create mode 100644 src/routes/Layout/Layout.pcss create mode 100644 src/routes/Layout/index.tsx create mode 100644 src/routes/index.ts create mode 100644 src/screens/AboutUsScreen/AboutUsScreen.pcss create mode 100644 src/screens/AboutUsScreen/index.tsx create mode 100644 src/screens/ChangeForgottenPasswordScreen/ChangeForgottenPasswordScreen.pcss create mode 100644 src/screens/ChangeForgottenPasswordScreen/index.tsx create mode 100644 src/screens/ConfirmScreen/ConfirmScreen.pcss create mode 100644 src/screens/ConfirmScreen/index.tsx create mode 100644 src/screens/DocumentationScreen/DocumentationScreen.pcss create mode 100644 src/screens/DocumentationScreen/index.tsx create mode 100644 src/screens/EmailVerification/EmailVerification.pcss create mode 100644 src/screens/EmailVerification/index.tsx create mode 100644 src/screens/ForgotPassword/ForgotPassword.pcss create mode 100644 src/screens/ForgotPassword/index.tsx create mode 100644 src/screens/History/HistoryTab.pcss create mode 100644 src/screens/History/index.tsx create mode 100644 src/screens/LandingScreen/LandingScreen.pcss create mode 100644 src/screens/LandingScreen/index.tsx create mode 100644 src/screens/LandingScreen/oldIndex.tsx create mode 100644 src/screens/MagicLinkScreen/index.tsx create mode 100644 src/screens/MaintenanceScreen/MaintenanceScreen.pcss create mode 100644 src/screens/MaintenanceScreen/index.tsx create mode 100644 src/screens/OrdersTabScreen/OrdersTabScreen.pcss create mode 100644 src/screens/OrdersTabScreen/index.tsx create mode 100644 src/screens/ProfileScreen/ProfileScreen.pcss create mode 100644 src/screens/ProfileScreen/index.tsx create mode 100644 src/screens/ProfileTwoFactorAuthScreen/ProfileTwoFactorAuthScreen.pcss create mode 100644 src/screens/ProfileTwoFactorAuthScreen/close.svg create mode 100644 src/screens/ProfileTwoFactorAuthScreen/index.tsx create mode 100644 src/screens/RestrictedScreen/RestrictedScreen.pcss create mode 100644 src/screens/RestrictedScreen/index.tsx create mode 100644 src/screens/SignInScreen/SignInScreen.pcss create mode 100644 src/screens/SignInScreen/index.tsx create mode 100644 src/screens/SignUpScreen/SignUpScreen.pcss create mode 100644 src/screens/SignUpScreen/index.tsx create mode 100644 src/screens/TradingScreen/TradingScreen.pcss create mode 100644 src/screens/TradingScreen/index.tsx create mode 100644 src/screens/VerificationScreen/index.tsx create mode 100644 src/screens/WalletsScreen/WalletsScreen.pcss create mode 100644 src/screens/WalletsScreen/index.tsx create mode 100644 src/screens/index.ts create mode 100644 src/screens/style.pcss create mode 100644 src/screens/tests/ChangeForgottenPassword.test.tsx create mode 100644 src/screens/tests/ConfirmScreen.test.tsx create mode 100644 src/screens/tests/EmailVerification.test.tsx create mode 100644 src/screens/tests/ForgotPassword.test.tsx create mode 100644 src/screens/tests/History.test.tsx create mode 100644 src/screens/tests/MaintenanceScreen.test.tsx create mode 100644 src/screens/tests/OrdersTabScreen.test.tsx create mode 100644 src/screens/tests/ProfileScreen.test.tsx create mode 100644 src/screens/tests/ProfileTwoFactorAuthScreen.test.tsx create mode 100644 src/screens/tests/RestrictedScreen.test.tsx create mode 100644 src/screens/tests/SignInScreen.test.tsx create mode 100644 src/screens/tests/SignUpScreen.test.tsx create mode 100644 src/screens/tests/VerificationScreen.test.tsx create mode 100644 src/screens/tests/WalletsScreen.test.tsx create mode 100644 src/screens/tests/__snapshots__/ChangeForgottenPassword.test.tsx.snap create mode 100644 src/screens/tests/__snapshots__/ConfirmScreen.test.tsx.snap create mode 100644 src/screens/tests/__snapshots__/EmailVerification.test.tsx.snap create mode 100644 src/screens/tests/__snapshots__/ForgotPassword.test.tsx.snap create mode 100644 src/screens/tests/__snapshots__/History.test.tsx.snap create mode 100644 src/screens/tests/__snapshots__/MaintenanceScreen.test.tsx.snap create mode 100644 src/screens/tests/__snapshots__/OrdersTabScreen.test.tsx.snap create mode 100644 src/screens/tests/__snapshots__/ProfileScreen.test.tsx.snap create mode 100644 src/screens/tests/__snapshots__/ProfileTwoFactorAuthScreen.test.tsx.snap create mode 100644 src/screens/tests/__snapshots__/RestrictedScreen.test.tsx.snap create mode 100644 src/screens/tests/__snapshots__/SignInScreen.test.tsx.snap create mode 100644 src/screens/tests/__snapshots__/SignUpScreen.test.tsx.snap create mode 100644 src/screens/tests/__snapshots__/VerificationScreen.test.tsx.snap create mode 100644 src/screens/tests/__snapshots__/WalletsScreen.test.tsx.snap create mode 100644 src/setupTests.js create mode 100644 src/store.ts create mode 100644 src/styles/buttons.pcss create mode 100644 src/styles/colors.pcss create mode 100644 src/styles/customizationBarColors.pcss create mode 100644 src/styles/style.pcss create mode 100644 src/styles/themes/dark.pcss create mode 100644 src/styles/themes/light.pcss create mode 100644 src/styles/themes/style.pcss create mode 100644 src/themes/ColorTitles.ts create mode 100644 src/themes/index.ts create mode 100644 src/themes/templates/DarkBlue.tsx create mode 100644 src/themes/templates/DarkRed.tsx create mode 100644 src/themes/templates/Green.tsx create mode 100644 src/themes/templates/Purple.tsx create mode 100644 src/themes/templates/index.ts create mode 100644 src/translations/en.ts create mode 100644 src/translations/index.ts create mode 100644 src/translations/nationalities.ts create mode 100644 tsconfig.json create mode 100644 tsconfig.prod.json create mode 100644 tslint.json create mode 100644 yarn.lock diff --git a/.babelrc b/.babelrc new file mode 100644 index 0000000..0e50a22 --- /dev/null +++ b/.babelrc @@ -0,0 +1,6 @@ +{ + "plugins": [ + "transform-es2015-modules-commonjs" + ] +} + diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..db838fa --- /dev/null +++ b/.dockerignore @@ -0,0 +1,3 @@ +*Dockerfile* +*docker-compose* +node_modules diff --git a/.domains.example b/.domains.example new file mode 100644 index 0000000..41a6186 --- /dev/null +++ b/.domains.example @@ -0,0 +1 @@ +localhost,.app.local,.openfinex.io,.devkube.com,.openware.work,.opendax.app diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..78f3cc4 --- /dev/null +++ b/.drone.yml @@ -0,0 +1,204 @@ +--- +kind: pipeline +name: "Push" + +concurrency: + limit: 2 + +steps: + - name: "Test & Build" + image: node:12.13.1 + commands: + - export REACT_APP_GIT_SHA=$(git rev-parse --short HEAD) + - echo $REACT_APP_GIT_SHA > .tags + - export BUILD_DOMAIN=$(test -e .domains && cat .domains) + - export BUILD_EXPIRE=$(date -d "+1 month" +%s000) + - npm -g install yarn + - yarn install + - yarn lint + - yarn test:ci --collectCoverage=true + - yarn build + + # - name: "Stage with mock server" + # image: instrumentisto/rsync-ssh + # environment: + # PRIVATE_KEY: + # from_secret: deploy_key + # commands: + # - echo "$PRIVATE_KEY" | base64 -d > id_rsa + # - chmod 0600 id_rsa + # - cd build/config/ + # - echo "window.env={api:{authUrl:'http://api-v2.mock.openware.work/api/v2/barong',tradeUrl:'http://api-v2.mock.openware.work/api/v2/peatio',applogicUrl:'http://api-v2.mock.openware.work/api/v2/applogic',rangerUrl:'ws://ranger.mock.openware.work/api/v2/ranger'}};" > env.js + # - cat env.js + # - cd /drone/src + # - rsync -avzhre "ssh -i id_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" build/ mock@mock.openware.work:/home/mock/builds/${DRONE_COMMIT_SHA:0:7} + # - rsync -avzhre "ssh -i id_rsa -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" coverage/ mock@mock.openware.work:/home/mock/builds/${DRONE_COMMIT_SHA:0:7}-coverage + # - echo "http://${DRONE_COMMIT_SHA:0:7}.mock.openware.work" + # - echo "http://${DRONE_COMMIT_SHA:0:7}-coverage.mock.openware.work" + + # - name: "Notify staging" + # image: plugins/slack + # settings: + # webhook: + # from_secret: baseapp_slack_webhook + # channel: + # from_secret: baseapp_slack_channel + # template: > + # {{#success build.status}} + # [SUCCESS] (Base Application) Branch {{ build.branch }} by {{ build.author }} staging has succeeded! + # + # Visit http://{{ truncate build.commit 7 }}.mock.openware.work to check it out! + # Coverage report: http://{{ truncate build.commit 7 }}-coverage.mock.openware.work + # {{else}} + # [FAILURE] Branch {{ build.branch }} by {{ build.author }} staging has failed! + # {{/success}} + # Check the build info here: {{ build.link }} + # when: + # status: [success, failure] + +trigger: + event: + - push + branch: + exclude: + - master + - "2-*-stable" + +--- +kind: pipeline +name: "New version" + +concurrency: + limit: 2 + +steps: + - name: "Test" + image: node:12.13.1 + commands: + - npm -g install yarn + - yarn install + - yarn lint + - yarn test:ci --collectCoverage=true + + - name: "Bump & Tag" + image: quay.io/openware/sdk-citools:2.6.7 + environment: + BRANCH_NAME: ${DRONE_BRANCH} + REPO_NAME: ${DRONE_REPO} + GITHUB_API_KEY: + from_secret: kite_bot_key + commands: + - BUNDLE_GEMFILE=/sdk/Gemfile bundle exec rake --rakefile=/sdk/Rakefile ci:prebuild + + - name: "Build Docker image" + image: plugins/docker + settings: + username: + from_secret: quay_username + password: + from_secret: quay_password + repo: + from_secret: quay_repo + registry: quay.io + environment: + REACT_APP_SENTRY_KEY: + from_secret: master_sentry_key + REACT_APP_SENTRY_ORGANIZATION: + from_secret: master_sentry_organization + REACT_APP_SENTRY_PROJECT: + from_secret: master_sentry_project + + - name: "Redeploy on master.devkube.com" + image: rubykube/microkube:0.2.0 + environment: + WEBHOOK_JWT_SECRET: + from_secret: devkube_webhook_secret + DOCKER_REPO: + from_secret: quay_repo + commands: + - export latest_image=$DOCKER_REPO:$(cat .tags) + - cd /home/app + - bundle exec rake payload:send[frontend,$latest_image,http://$DRONE_BRANCH.devkube.com:1337] + when: + branch: + - master + + - name: "Push and Notify" + image: quay.io/openware/sdk-citools:2.6.7 + environment: + BOT_USERNAME: kite-bot + BOT_NAME: Kite Bot + BOT_EMAIL: kite-bot@heliostech.fr + BRANCH_NAME: ${DRONE_BRANCH} + SDK_BRANCH: ${DRONE_BRANCH} + REPO_NAME: ${DRONE_REPO} + TELEGRAM_BOT_TOKEN: + from_secret: baseapp_telegram_bot_token + TELEGRAM_CHAT_ID: + from_secret: baseapp_telegram_chat_id + SLACK_TOKEN: + from_secret: baseapp_slack_token + SLACK_CHANNEL: + from_secret: baseapp_slack_channel + GITHUB_API_KEY: + from_secret: kite_bot_key + commands: + - BUNDLE_GEMFILE=/sdk/Gemfile bundle exec rake --rakefile=/sdk/Rakefile ci:postbuild[/drone/src] + when: + branch: + - master + - "2-*-stable" + + # http://plugins.drone.io/drone-plugins/drone-slack/ + - name: Slack Notify + image: plugins/slack + settings: + webhook: + from_secret: slack_webhook + channel: + from_secret: slack_webhook_channel + template: > + *{{uppercasefirst repo.name}}* + {{#success build.status}} + [SUCCESS] Branch {{ build.branch }} by {{ build.author }}. Good job. + {{else}} + [FAILURE] Branch {{ build.branch }} by {{ build.author }}. Fix me please. + {{/success}} + when: + branch: + - master + - "2-*-stable" + + - name: "Update global OpenDAX version" + image: quay.io/openware/goci:0.0.11 + environment: + GIT_TOKEN: + from_secret: kite_bot_key + commands: + - /app/goci -component=frontend versions + when: + branch: + - "*-stable" + + - name: "Build custom baseapp with assembly line" + image: curlimages/curl + environment: + SERVER: https://ci.openware.work + REPO: openware/assembly-line + BRANCH: master + COMPONENT: baseapp + DRONE_TOKEN: + from_secret: drone_token + commands: + - COMPONENT_VERSION=$(cat .tags) + - "curl -s -XPOST -H \"Authorization: Bearer $DRONE_TOKEN\" -i \"$SERVER/api/repos/$REPO/builds?branch=$BRANCH&ASSEMBLY_COMPONENT_VERSION=$COMPONENT_VERSION&ASSEMBLY_COMPONENT=$COMPONENT\"" + +trigger: + branch: + - master + - "2-*-stable" + event: + - push + +image_pull_secrets: + - dockerconfigjson diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..dfdb8b7 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +*.sh text eol=lf diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..af12903 --- /dev/null +++ b/.gitignore @@ -0,0 +1,31 @@ +/.npmrc + +# dependencies +/node_modules + +# testing +/coverage + +# production +/build +/.idea +/android +/ios +.gradle/ + +# misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local +.env +env.js + +npm-debug.log* +yarn-debug.log* +yarn-error.log* +index.css + +# environment config +public/config/ diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000..65466b8 --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +v10.15.0 diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..d32fbc1 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,21 @@ +{ + "jsxBracketSameLine": true, + "singleQuote": true, + "overrides": [ + { + "files": ["**/*.css", "**/*.scss", "**/*.pcss", "**/*.html"], + "options": { + "singleQuote": false, + "tabWidth": 4 + } + } + ], + "jsxSingleQuote": false, + "printWidth": 120, + "tabWidth": 4, + "endOfLine": "auto", + "semi": true, + "tslintIntegration": true, + "stylelintIntegration": true, + "ignorePath": ".gitignore" +} diff --git a/.stylelintrc.json b/.stylelintrc.json new file mode 100644 index 0000000..4351083 --- /dev/null +++ b/.stylelintrc.json @@ -0,0 +1,15 @@ +{ + "extends": "stylelint-config-standard", + "plugins": [ + "stylelint-order" + ], + "rules": { + "at-rule-no-unknown": null, + "order/order": [ + "custom-properties", + "declarations" + ], + "order/properties-alphabetical-order": true, + "no-descending-specificity": null + } +} diff --git a/.yarnclean b/.yarnclean new file mode 100644 index 0000000..b591611 --- /dev/null +++ b/.yarnclean @@ -0,0 +1,45 @@ +# test directories +__tests__ +test +tests +powered-test + +# asset directories +docs +doc +website +images +assets + +# examples +example +examples + +# code coverage directories +coverage +.nyc_output + +# build scripts +Makefile +Gulpfile.js +Gruntfile.js + +# configs +appveyor.yml +circle.yml +codeship-services.yml +codeship-steps.yml +wercker.yml +.tern-project +.gitattributes +.editorconfig +.*ignore +.eslintrc +.jshintrc +.flowconfig +.documentup.json +.yarn-metadata.json +.travis.yml + +# misc +*.md diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..903767d --- /dev/null +++ b/Dockerfile @@ -0,0 +1,35 @@ +# syntax=docker/dockerfile:1.4 +# Fast app image — node_modules from deps base (custom/gereh-deps:1). +# Rebuild deps when yarn.lock changes: docker build -f Dockerfile.deps -t custom/gereh-deps:1 . +ARG DEPS_IMAGE=custom/gereh-deps:1 +FROM ${DEPS_IMAGE} AS builder + +WORKDIR /home/node + +COPY --chown=node:node . . + +ARG BUILD_EXPIRE +ARG BUILD_DOMAIN +ARG REACT_APP_SKIP_API_KEY_2FA= +ARG REACT_APP_SENTRY_KEY=${REACT_APP_SENTRY_KEY:-"68c679b9cde2452db4d7ceb99b96e20d"} +ARG REACT_APP_SENTRY_ORGANIZATION=${REACT_APP_SENTRY_ORGANIZATION:-"o4504055431430144"} +ARG REACT_APP_SENTRY_PROJECT=${REACT_APP_SENTRY_PROJECT:-"4504055438311424"} + +ENV REACT_APP_SENTRY_KEY=${REACT_APP_SENTRY_KEY} +ENV REACT_APP_SENTRY_ORGANIZATION=${REACT_APP_SENTRY_ORGANIZATION} +ENV REACT_APP_SENTRY_PROJECT=${REACT_APP_SENTRY_PROJECT} +ENV REACT_APP_SKIP_API_KEY_2FA=${REACT_APP_SKIP_API_KEY_2FA} +ENV BUILD_DOMAIN=${BUILD_DOMAIN} + +USER node + +RUN sed -i 's/\r$//' scripts/build.sh && bash scripts/build.sh + +FROM nginx:mainline-alpine + +COPY --from=builder /home/node/build /usr/share/nginx/html +COPY nginx.conf /etc/nginx/conf.d/default.conf +EXPOSE 3000 + +HEALTHCHECK --interval=30s --timeout=5s --start-period=15s --retries=3 \ + CMD wget -q -O /dev/null http://127.0.0.1:3000/health || exit 1 diff --git a/Dockerfile.deps b/Dockerfile.deps new file mode 100644 index 0000000..70b03dd --- /dev/null +++ b/Dockerfile.deps @@ -0,0 +1,20 @@ +# syntax=docker/dockerfile:1.4 +# Heavy layer: yarn install. Rebuild only when yarn.lock changes. +# docker build -f Dockerfile.deps -t custom/gereh-deps:1 . +FROM node:12.13.1 + +WORKDIR /home/node + +RUN npm config set strict-ssl false \ + && yarn config set strict-ssl false \ + && yarn config set network-timeout 600000 + +RUN npm i -g yarn + +COPY package.json yarn.lock ./ + +ENV CYPRESS_INSTALL_BINARY=0 + +USER node + +RUN mkdir -p /home/node/.cache/yarn && yarn install --frozen-lockfile --network-timeout 600000 --non-interactive --verbose diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..68057e3 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,141 @@ +# Creative Commons CC-BY-NC-ND-4.0 International Public License + +By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions. + +## Section 1 – Definitions. + +a. __Adapted Material__ means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image. + +b. __Copyright and Similar Rights__ means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights. + +e. __Effective Technological Measures__ means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements. + +f. __Exceptions and Limitations__ means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material. + +h. __Licensed Material__ means the artistic or literary work, database, or other material to which the Licensor applied this Public License. + +i. __Licensed Rights__ means the rights granted to You subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license. + +h. __Licensor__ means the individual(s) or entity(ies) granting rights under this Public License. + +i. __NonCommercial__ means not primarily intended for or directed towards commercial advantage or monetary compensation. For purposes of this Public License, the exchange of the Licensed Material for other material subject to Copyright and Similar Rights by digital file-sharing or similar means is NonCommercial provided there is no payment of monetary compensation in connection with the exchange. + +j. __Share__ means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them. + +k. __Sui Generis Database Rights__ means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world. + +l. __You__ means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning. + +## Section 2 – Scope. + +a. ___License grant.___ + + 1. Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to: + + A. reproduce and Share the Licensed Material, in whole or in part, for NonCommercial purposes only; and + + B. produce and reproduce, but not Share, Adapted Material for NonCommercial purposes only. + + 2. __Exceptions and Limitations.__ For the avoidance of doubt, where Exceptions and Limitations apply to Your use, this Public License does not apply, and You do not need to comply with its terms and conditions. + + 3. __Term.__ The term of this Public License is specified in Section 6(a). + + 4. __Media and formats; technical modifications allowed.__ The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted Material. + + 5. __Downstream recipients.__ + + A. __Offer from the Licensor – Licensed Material.__ Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License. + + B. __No downstream restrictions.__ You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material. + + 6. __No endorsement.__ Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i). + +b. ___Other rights.___ + + 1. Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights, but not otherwise. + + 2. Patent and trademark rights are not licensed under this Public License. + + 3. To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties, including when the Licensed Material is used other than for NonCommercial purposes. + +## Section 3 – License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the following conditions. + +a. ___Attribution.___ + + 1. If You Share the Licensed Material, You must: + + A. retain the following if it is supplied by the Licensor with the Licensed Material: + + i. identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of warranties; + + v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable; + + B. indicate if You modified the Licensed Material and retain an indication of any previous modifications; and + + C. indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License. + + For the avoidance of doubt, You do not have permission under this Public License to Share Adapted Material. + + 2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information. + + 3. If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable. + +## Section 4 – Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material: + +a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database for NonCommercial purposes only and provided You do not Share Adapted Material; + +b. if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material; and + +c. You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database. + +For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights. + +## Section 5 – Disclaimer of Warranties and Limitation of Liability. + +a. __Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation, warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable. Where disclaimers of warranties are not allowed in full or in part, this disclaimer may not apply to You.__ + +b. __To the extent possible, in no event will the Licensor be liable to You on any legal theory (including, without limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential, punitive, exemplary, or other losses, costs, expenses, or damages arising out of this Public License or use of the Licensed Material, even if the Licensor has been advised of the possibility of such losses, costs, expenses, or damages. Where a limitation of liability is not allowed in full or in part, this limitation may not apply to You.__ + +c. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability. + +## Section 6 – Term and Termination. + +a. This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically. + +b. Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or + + 2. upon express reinstatement by the Licensor. + + For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License. + +c. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License. + +d. Sections 1, 5, 6, 7, and 8 survive termination of this Public License. + +## Section 7 – Other Terms and Conditions. + +a. The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed. + +b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License. + +## Section 8 – Interpretation. + +a. For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License. + +b. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions. + +c. No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor. + +d. Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority. diff --git a/README.md b/README.md new file mode 100644 index 0000000..434abaa --- /dev/null +++ b/README.md @@ -0,0 +1,248 @@ +
+ +# Gereh — فرانت Fibitex (BaseApp) + +**Gereh** فورک BaseApp — UI فعلی staging (`beta.fibitex.com`). + +## راه‌اندازی + +
+ +```bash +yarn install && yarn start-mock +``` + +
+ +مستندات: [`Docs/04-gereh-frontend.md`](../Docs/04-gereh-frontend.md) · [`Docs/Fibitex-staging-deploy.md`](../Docs/Fibitex-staging-deploy.md) + +
+ +--- + +![Cryptocurrency Exchange Platform - Baseapp](https://github.com/openware/meta/raw/main/images/github_baseapp.png) + +

+Guide | +API Docs | +Consulting | +Community +

+
Component part of OpenDAX Trading Platform
+ +--- + +# OpenDAX BaseApp UI +## User Interface for Trading and Wallets Management + +React application to build a trading platform interface for use with OpenDAX: https://github.com/openware/opendax + +You can see an example of a live application running at: https://www.openfinex.io/ +If you need customization from the experts contact us: https://www.openware.com/ + +## License + +Please note, that BaseApp license only allows Non-Commercial use of this component. To purchase the Commercial license, please contact us at hello@openware.com. + +## Install dependencies + +```bash +$ yarn install +``` + +## Run in developement mode + +```bash +$ yarn start-mock +``` +This command will also start a fake api backend for helping development. +Once you happy with the result, save, build an image and run it with OpenDAX docker compose system. + +## Execute tests + +In `` + +```bash +$ yarn test +``` + +Check test coverage: +```bash +$ yarn test -- --coverage --watchAll +``` + +For more options for `jest` run `yarn test --help`. + +## Configuration documentation + +Configuration file is located in `public/config/env.js` + + +| Argument                 | Description                                                 | +| --------------------- | ------------------------------------------------------------ | +| `api`    | URLs of `barong`, `peatio`, `applogic` and `ranger` API endpoints. You can use mockserver () with default `env.js` values | +| `minutesUntilAutoLogout`               | Autologout time in minutes | +| `withCredentials`               | `false` or `true` if you want to include cookies as part of the request(https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Credentials) | +| `gaTrackerKey` | Google Analytics tracker key | +| `ga4TrackerKey` | Google Analytics tracker key V4 | +| `rangerReconnectPeriod` | Reconnection time for the Ranger WS service in minutes | +| `msAlertDisplayTime` |  Alert message display duration in milliseconds | +| `kycSteps` |  List of label names for KYC process | + +## Available Docker build args + +While building a Docker image you can pass build-dependant arguments using `--build-arg`: +`docker build -t baseapp:latest + --build-arg BUILD_DOMAIN="example.com" .` + +| Argument | Description | +| -------------- | ------------------------------------------------------ | +| `BUILD_EXPIRE` | Unix Timestamp of the build expiration date in seconds | +| `BUILD_DOMAIN` | Domain which you'd like to use during the deployment | + +## Build mobile app +Install dependencies using npm. Important for mobile app development. +```bash +npm install +``` +Build frontend +```bash +yarn build +``` +Generate a native project (ios, android) +```bash +ionic capacitor add +``` +To build a native app you should have Xcode or Android studio on your local machine. + +## Build IOS app +**1. Install Xcode** + +Xcode is the IDE for creating native iOS apps. It includes the iOS SDK and Xcode command-line tools. Xcode can be downloaded for free with an Apple account or it can be installed through the App Store. +Once Xcode is installed, make sure the command-line tools are selected for use: +```bash +xcode-select --install +``` +**2. Set up a development team** + +All iOS apps must be code signed, even for development. Luckily, Xcode makes this easy with automatic code signing. The only prerequisite is an Apple ID. + +Open Xcode and navigate to **Xcode » Preferences » Accounts**. Add an Apple ID if none are listed. Once logged in, a Personal Team will appear in the team list of the Apple ID. + +**3. Create an iOS Simulator** + +You can test your mobile application with a connected Iphone device to the Mac or using IOS Simulator. +Open Xcode and navigate to **Window » Devices and Simulators**. Create an **iPhone 11** simulator if one does not already exist. + +**4. Set configs** + +Open the `capacitor.config.json` file and modify the `appId` property. + +Put the name of BE server: +```json + "server": { + "hostname": "example.openware.work" + } +``` + +**5. Open the project in Xcode.** + +Launch Xcode with a prepared app: +```bash +ionic capacitor run ios +``` + +**6. Check Xcode configuration** +In Project navigator, select the project root to open the project editor. Under the **Identity section**, verify that the **Package ID** that was set matches the Bundle Identifier. + +In the same project editor, under the **Signing section**, ensure Automatically manage signing is enabled. Then, select a Development Team. Given a Development Team, Xcode will attempt to automatically prepare provisioning and signing. + +**7. Update native app with the changes** + +With each meaningful change, Ionic apps must be built into web assets before the change can appear on iOS simulators and devices. The web assets then must be copied into the native project: +```bash +ionic capacitor copy ios +``` + +**8. Build IOS app** + +To receive an executable app file run 'build' command on Xcode. You need to have an Apple Developer account to be able to extract an executable file from Xcode. + +## Build Android app +**1. Install Android studio** + +Android Studio is IDE, that provides the fastest tools for building apps on every type of Android device. + +**2. Open the `capacitor.config.json` file and modify the `linuxAndroidStudioPath` property.** + +Run next command +```bash +whereis android-studio +``` + +**3. Build your android application** + +```bash +ionic capacitor add android +``` + +**4. Launch android application with Android Studio** +```bash +ionic capacitor run android +``` + +**5. Android Studio configuration** + +Select connected android device or configure device simulator, which required + +**6. Update app with the changes** +```bash +ionic capacitor copy android [options] +``` + +**7. Set ANDROID_SDK_ROOT variale** + +Set android ask path to ANDROID_SDK_ROOT or write sdk.dir variable in android/local.properties file (it doesn't exist as a default) + +**8. Build android app** + +Build android app using Android Studio Build tab + +or you can build apk file with command line + +Debug build: + +```bash + ionic capacitor copy android && cd android && ./gradlew assembleDebug && cd .. +``` + +Release build: + +For release build you have to create keystore path and keystore alias and run next command: + +```bash + cd android && + ./gradlew assembleRelease && + cd app/build/outputs/apk/release && + jarsigner -keystore YOUR_KEYSTORE_PATH -storepass YOUR_KEYSTORE_PASS app-release-unsigned.apk YOUR_KEYSTORE_ALIAS && + zipalign 4 app-release-unsigned.apk app-release.apk +``` + +## Happy trading with OpenDAX BaseApp UI + +If you have designed something beautiful with it, we would love to see it! + +And if you have any comments, feedback and suggestions - we are happy to hear from you here at GitHub or at https://openware.com + +## Licensing + +This code is open for helping private modification and performing customer demonstration, you can use it for raising capital. +You cannot use it for a live platform without getting a commercial license from us. + +Contact us if you'd like to purchase a commercial license. + +## Partners + +If you would like to fork, and modify this UI to create a BaseApp theme, we would be happy to setup a partnership program and sell your work provided a revenue sharing. + +Made with love from Paris and Kiev. diff --git a/VERSION b/VERSION new file mode 100644 index 0000000..e70b452 --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +2.6.0 diff --git a/__mocks__/fileMock.js b/__mocks__/fileMock.js new file mode 100644 index 0000000..86059f3 --- /dev/null +++ b/__mocks__/fileMock.js @@ -0,0 +1 @@ +module.exports = 'test-file-stub'; diff --git a/__mocks__/styleMock.js b/__mocks__/styleMock.js new file mode 100644 index 0000000..f053ebf --- /dev/null +++ b/__mocks__/styleMock.js @@ -0,0 +1 @@ +module.exports = {}; diff --git a/capacitor.config.json b/capacitor.config.json new file mode 100644 index 0000000..099d2a0 --- /dev/null +++ b/capacitor.config.json @@ -0,0 +1,20 @@ +{ + "appId": "odax.openware.work", + "appName": "Fibitex", + "bundledWebRuntime": false, + "npmClient": "yarn", + "webDir": "build", + "plugins": { + "SplashScreen": { + "launchShowDuration": 0 + } + }, + "ios": { + "contentInset": "always" + }, + "linuxAndroidStudioPath": "/snap/bin/android-studio", + "cordova": {}, + "server": { + "hostname": "odax.openware.work" + } +} diff --git a/config-overrides.js b/config-overrides.js new file mode 100644 index 0000000..289bae9 --- /dev/null +++ b/config-overrides.js @@ -0,0 +1,55 @@ +const JavaScriptObfuscator = require('webpack-obfuscator'); +const webpack = require('webpack'); +const CompressionPlugin = require('compression-webpack-plugin'); + +module.exports = function override(config, env) { + if (!config.plugins) { + config.plugins = []; + } + + // CRA 3 babel/TS 3.8 cannot type-check axios 0.32 bundled .d.ts (needs TS 4.1+). + // Runtime bundle is fine; skip fork-ts-checker during production build. + config.plugins = config.plugins.filter( + plugin => !(plugin && plugin.constructor && plugin.constructor.name === 'ForkTsCheckerWebpackPlugin'), + ); + + config.plugins.push(new webpack.DefinePlugin({ 'process.env.BUILD_EXPIRE': JSON.stringify(process.env.BUILD_EXPIRE) })); + + const version = process.env.REACT_APP_GIT_SHA || 'snapshot'; + const commonJSFilename = `commons.${version}.js`; + + if (process.env.NODE_ENV === 'production') { + config.optimization = { + splitChunks: { + cacheGroups: { + commons: { + chunks: "initial", + minChunks: 1, + name: "commons", + filename: commonJSFilename, + enforce: true + } + } + } + } + + if (`${process.env.BUILD_DOMAIN}` != "") { + const domains = process.env.BUILD_DOMAIN.split(','); + config.plugins.push( + new JavaScriptObfuscator({ rotateUnicodeArray: true, domainLock: domains }, [commonJSFilename]) + ); + } + + config.plugins.push( + new CompressionPlugin({ + filename: "[path].gz[query]", + algorithm: "gzip", + test: /\.js$|\.css$|\.html$/, + threshold: 10240, + minRatio: 0.8 + }) + ); + } + + return config; +}; \ No newline at end of file diff --git a/cypress.json b/cypress.json new file mode 100644 index 0000000..894731b --- /dev/null +++ b/cypress.json @@ -0,0 +1,9 @@ +{ + "baseUrl": "http://www.app.local", + "fixturesFolder": "spec/fixtures", + "integrationFolder": "spec/integration", + "pluginsFile": "spec/plugins/index.js", + "supportFile": "spec/support/index.js", + "screenshotsFolder": "cypress/screenshots", + "videosFolder": "cypress/videos" +} diff --git a/docs/basic_customization.html.md b/docs/basic_customization.html.md new file mode 100644 index 0000000..fd74252 --- /dev/null +++ b/docs/basic_customization.html.md @@ -0,0 +1,112 @@ +## How to change logo + favicon and title + +From this tutorial you will learn how to customize [frontend application](https://github.com/openware/baseapp) for [OpenDAX](https://github.com/openware/opendax), just if you want to make it more personalized. + +**Reminder:** + +* Here is [previous customization tutorial](https://medium.com/openware/change-baseapp-logo-and-deploy-in-opendax-8506c865ee99) where you can find how to update logo for Baseapp version 2.4. + +In newer 2.5 and 2.6 versions exchange logo is represented as SVG element inside React Function Component instead of simple png image from 2.4 version. + +The roadmap is pretty short: + +* clone [Baseapp](https://github.com/openware/baseapp) +* change the logo and favicon +* edit page title + +Should be easy as always. Let’s start. + +### 1. Clone Baseapp +```bash +cd /home/app +git clone https://github.com/openware/baseapp.git +``` + +### 2. Change the logo and favicon + +So to start with, you can download some [random SVG image](https://www.flaticon.com/svg/static/icons/svg/2933/2933116.svg) and [favicon in ICO format](https://icon-icons.com/downloadimage.php\?id\=51091\&root\=516/ICO/512/\&file\=coin_money_icon-icons.com_51091.ico). + +To change the logo follow next steps: + +```bash + #this is the folder where all the default logos and images are + cd /home/app/baseapp/src/assets/images + + # backup the default one, just in case we do something wrong + cp LogoIcon.tsx LogoIcon.tsx.bak + + # download the new SVG logo + curl https://www.flaticon.com/svg/static/icons/svg/2933/2933116.svg -o logo.svg + + # open new logo.svg via vim first and copy whole + vim logo.svg + + # open LogoIcon.tsx, delete everything inside LogoIcon const and paste from logo.svg + vim LogoIcon.tsx +``` + +```javascript + export const LogoIcon: React.FC = (props: LogoIconProps) => ( + // replace + // replace + // replace + // replace + // replace + // replace + // replace + ); +``` + +Last step - add className={props.className} to the opening tag. It should look like this + +```html + +``` + +**Pay attention** that most of the `` images have `width` and `height` attributes which are already preseted so, probably, you will have to change them. +Keep the ratio between width and height for downloaded image, but don’t use height bigger than 60px (it will overflow the Header). + +So in the end my opening SVG tag inside the **LogoIcon.tsx** looks like that: + +```html + +``` + +Now let’s replace favicon.ico: + +```bash + # this is the folder where React stores favicon.ico, index.htm and manifest.json + cd /home/app/baseapp/public + + # backup the default favicon + cp favicon.ico favicon.ico.bak + + # download the new one + curl https://icon-icons.com/downloadimage.php\?id\=51091\&root\=516/ICO/512/\&file\=coin_money_icon-icons.com_51091.ico -o favicon.ico +``` +### 3. Edit the page title + +To edit title of the webpage we have to change it in two files: + +```bash +# open index.html and edit 'Cryptobase' name between tag +cd /home/app/baseapp/public +vim index.html + + + + + ... + Cryptobase // change name here + + +# this is the folder where React application constants stored +cd /home/app/baseapp/src/constants + +# open index.ts file and edit PG_TITLE_PREFIX constant +vim index.ts + +export const PG_TITLE_PREFIX = 'Cryptobase'; // change name here +``` + +And that’s it, now you have your frontend with your own logo, favicon and title. diff --git a/docs/releases/2.1.0.md b/docs/releases/2.1.0.md new file mode 100644 index 0000000..d1fc4fe --- /dev/null +++ b/docs/releases/2.1.0.md @@ -0,0 +1,18 @@ +# BaseApp frontend v2.1.0 (May 6, 2019) + +#### Overview + +BaseApp frontend fully compatible with Barong v2.1.0 and Peatio v2.1.0. + +## New features comparing with v2.0: + + - Improved trading page: + - New resizable order book component; + - New market selector with ability to filter by quote currency and sort by different parameters (volume, percent change, name); + - New create order form (estimated market order price and spent balance, ability to select percentage of your balance); + - improved components layout. + - Added estimated balance in one currency to wallet page; + - Mobile responsiveness; + - Ability to display users with pending documents for admin; + - General UI fixes, platform stabilization and small improvments. + diff --git a/docs/releases/2.2.0.md b/docs/releases/2.2.0.md new file mode 100644 index 0000000..0f14f43 --- /dev/null +++ b/docs/releases/2.2.0.md @@ -0,0 +1,12 @@ +#### Overview + +BaseApp frontend v2.2.0 fully compatible with Barong v2.2.20 and Peatio v2.2.19. + +## New features comparing with v2.1.0: + + - Ability to switch between dark and light themes; + - Added user's trade on recent trades component; + - Improved sorting on market selector component; + - List API keys immediately without providing 2FA code; + - Cancelling orders by event from WS; + - General UI fixes, platform stabilization and small improvements. diff --git a/docs/roadmap.md b/docs/roadmap.md new file mode 100644 index 0000000..5350afc --- /dev/null +++ b/docs/roadmap.md @@ -0,0 +1,23 @@ +# Baseapp + +## v2.4 + + * Integration of bootstrap and refactoring minor style with it + * Remove depedancy to openware/components and merge them + * Support for CSRF (breaking change) + * Password strength indicator + * Integration of a Base Landing page + * Integration of an API documentation for traders and bots + * Finex integration + +## v2.5 + + * New wallet page mobile responsive + * React upgrade + * Unify configuration management from barong/peatio config api + * Stop Loss order form + * Rework login redux flow + +## v3.0 + +Not defined diff --git a/images.d.ts b/images.d.ts new file mode 100644 index 0000000..ada0bb9 --- /dev/null +++ b/images.d.ts @@ -0,0 +1,3 @@ +declare module '*.svg'; +declare module '*.png'; +declare module '*.jpg'; diff --git a/ionic.config.json b/ionic.config.json new file mode 100644 index 0000000..feb1e04 --- /dev/null +++ b/ionic.config.json @@ -0,0 +1,7 @@ +{ + "name": "Fibitex", + "integrations": { + "capacitor": {} + }, + "type": "react" +} diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 0000000..2c10950 --- /dev/null +++ b/jest.config.js @@ -0,0 +1,38 @@ +module.exports = { + 'roots': [ + '' + ], + 'transform': { + '^.+\\.(tsx|ts)$': 'ts-jest', + '^.+\\.(jsx|js)$': 'babel-jest', + '^.+\\.svg$': '/svgTransform.js', + }, + 'testRegex': '(/__tests__/.*|(\\.|/)(test|spec))\\.(tsx|jsx)?$', + 'moduleFileExtensions': [ + 'ts', + 'tsx', + 'js', + 'jsx', + 'json', + 'node', + 'css', + 'scss', + ], + 'snapshotSerializers': ['enzyme-to-json/serializer'], + 'transformIgnorePatterns': [ + "/node_modules/(?!lodash-es)" + ], + 'moduleNameMapper': { + '\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': + '/__mocks__/fileMock.js', + '\\.(css|scss|pcss)$': '/__mocks__/styleMock.js', + }, + 'testURL': "http://localhost", + 'collectCoverageFrom': [ + "/src/**/*.{ts,tsx,js,jsx}", + ], + "coveragePathIgnorePatterns": [ + "/node_modules/", + "/src/charting_library/**", + ] +}; diff --git a/mocks/api/v2/applogic/customization/GET.mock b/mocks/api/v2/applogic/customization/GET.mock new file mode 100644 index 0000000..69f29b6 --- /dev/null +++ b/mocks/api/v2/applogic/customization/GET.mock @@ -0,0 +1,10 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +{ + "settings": "{\"theme_id\": \"1\",\"theme_colors\":[{\"key\":\"--rgb-main-background-color\",\"value\":\"30, 30, 30\"},{\"key\":\"--rgb-body-background-color\",\"value\":\"30, 30, 30\"},{\"key\":\"--rgb-header-background-color\",\"value\":\"30, 30, 30\"},{\"key\":\"--rgb-subheader-background-color\",\"value\":\"30, 30, 30\"},{\"key\":\"--rgb-dropdown-background-color\",\"value\":\"125, 19, 23\"},{\"key\":\"--rgb-icons\",\"value\":\"115, 127, 146\"},{\"key\":\"--rgb-primary-cta-color\",\"value\":\"214, 32, 39\"},{\"key\":\"--rgb-contrast-cta-color\",\"value\":\"214, 32, 39\"},{\"key\":\"--rgb-secondary-contrast-cta-color\",\"value\":\"115, 127, 146\"},{\"key\":\"--rgb-cta-layer-color\",\"value\":\"30, 30, 30\"},{\"key\":\"--rgb-system-green\",\"value\":\"84, 180, 137\"},{\"key\":\"--rgb-system-red\",\"value\":\"232, 94, 89\"},{\"key\":\"--rgb-system-yellow\",\"value\":\"232, 175, 89\"},{\"key\":\"--rgb-asks\",\"value\":\"232, 94, 89\"},{\"key\":\"--rgb-bids\",\"value\":\"84, 180, 137\"},{\"key\":\"--rgb-primary-text-color\",\"value\":\"255, 255, 255\"},{\"key\":\"--rgb-text-contrast-color\",\"value\":\"23, 28, 41\"},{\"key\":\"--rgb-input-background-color\",\"value\":\"30, 40, 65\"},{\"key\":\"--rgb-divider-color\",\"value\":\"214, 32, 39\"},{\"key\":\"--rgb-shadow-color\",\"value\":\"214, 32, 39\"},{\"key\":\"--rgb-landing-background-color\",\"value\":\"251, 251, 251\"},{\"key\":\"--rgb-strength-meter-very-strong\",\"value\":\"108, 239, 239\"}]}" +} diff --git a/mocks/api/v2/applogic/customization/OPTIONS.mock b/mocks/api/v2/applogic/customization/OPTIONS.mock new file mode 100644 index 0000000..7ee5583 --- /dev/null +++ b/mocks/api/v2/applogic/customization/OPTIONS.mock @@ -0,0 +1,4 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization diff --git a/mocks/api/v2/applogic/customization/POST.mock b/mocks/api/v2/applogic/customization/POST.mock new file mode 100644 index 0000000..60e76d1 --- /dev/null +++ b/mocks/api/v2/applogic/customization/POST.mock @@ -0,0 +1,8 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +{ + "settings": "{\"theme_id\": \"1\",\"theme_colors\":[{\"key\":\"--rgb-main-background-color\",\"value\":\"30, 30, 30\"},{\"key\":\"--rgb-body-background-color\",\"value\":\"30, 30, 30\"},{\"key\":\"--rgb-header-background-color\",\"value\":\"30, 30, 30\"},{\"key\":\"--rgb-subheader-background-color\",\"value\":\"30, 30, 30\"},{\"key\":\"--rgb-dropdown-background-color\",\"value\":\"125, 19, 23\"},{\"key\":\"--rgb-icons\",\"value\":\"115, 127, 146\"},{\"key\":\"--rgb-primary-cta-color\",\"value\":\"214, 32, 39\"},{\"key\":\"--rgb-contrast-cta-color\",\"value\":\"214, 32, 39\"},{\"key\":\"--rgb-secondary-contrast-cta-color\",\"value\":\"115, 127, 146\"},{\"key\":\"--rgb-cta-layer-color\",\"value\":\"30, 30, 30\"},{\"key\":\"--rgb-system-green\",\"value\":\"84, 180, 137\"},{\"key\":\"--rgb-system-red\",\"value\":\"232, 94, 89\"},{\"key\":\"--rgb-system-yellow\",\"value\":\"232, 175, 89\"},{\"key\":\"--rgb-asks\",\"value\":\"232, 94, 89\"},{\"key\":\"--rgb-bids\",\"value\":\"84, 180, 137\"},{\"key\":\"--rgb-primary-text-color\",\"value\":\"255, 255, 255\"},{\"key\":\"--rgb-text-contrast-color\",\"value\":\"23, 28, 41\"},{\"key\":\"--rgb-input-background-color\",\"value\":\"30, 40, 65\"},{\"key\":\"--rgb-divider-color\",\"value\":\"214, 32, 39\"},{\"key\":\"--rgb-shadow-color\",\"value\":\"214, 32, 39\"},{\"key\":\"--rgb-landing-background-color\",\"value\":\"251, 251, 251\"},{\"key\":\"--rgb-strength-meter-very-strong\",\"value\":\"108, 239, 239\"}]}" +} diff --git a/mocks/api/v2/dalan/identity/configs/GET.mock b/mocks/api/v2/dalan/identity/configs/GET.mock new file mode 100644 index 0000000..015d218 --- /dev/null +++ b/mocks/api/v2/dalan/identity/configs/GET.mock @@ -0,0 +1,12 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +{ + "session_expire_time": 5000, + "captcha_type": "none", + "captcha_id": "6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI", + "password_min_entropy": 14 +} diff --git a/mocks/api/v2/dalan/identity/ping/GET.mock b/mocks/api/v2/dalan/identity/ping/GET.mock new file mode 100644 index 0000000..17fe023 --- /dev/null +++ b/mocks/api/v2/dalan/identity/ping/GET.mock @@ -0,0 +1,9 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +{ + "ping": "pong" +} diff --git a/mocks/api/v2/dalan/identity/sessions/DELETE.mock b/mocks/api/v2/dalan/identity/sessions/DELETE.mock new file mode 100644 index 0000000..d5caec3 --- /dev/null +++ b/mocks/api/v2/dalan/identity/sessions/DELETE.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Allow-Headers: * diff --git a/mocks/api/v2/dalan/identity/sessions/OPTIONS.mock b/mocks/api/v2/dalan/identity/sessions/OPTIONS.mock new file mode 100644 index 0000000..b604284 --- /dev/null +++ b/mocks/api/v2/dalan/identity/sessions/OPTIONS.mock @@ -0,0 +1,6 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + + diff --git a/mocks/api/v2/dalan/identity/sessions/POST--email=&password=&otp_code=.mock b/mocks/api/v2/dalan/identity/sessions/POST--email=&password=&otp_code=.mock new file mode 100644 index 0000000..48c55cf --- /dev/null +++ b/mocks/api/v2/dalan/identity/sessions/POST--email=&password=&otp_code=.mock @@ -0,0 +1,8 @@ +HTTP/2 400 +content-type: application/json +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + + +{"error":"Email is missing, Password is missing, otp_code is missing, recaptcha response is missing"} diff --git a/mocks/api/v2/dalan/identity/sessions/POST--email=accountant@barong.io&password=123123.mock b/mocks/api/v2/dalan/identity/sessions/POST--email=accountant@barong.io&password=123123.mock new file mode 100644 index 0000000..13797ee --- /dev/null +++ b/mocks/api/v2/dalan/identity/sessions/POST--email=accountant@barong.io&password=123123.mock @@ -0,0 +1,14 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +{ + "email": "accountant@peatio.tech", + "level": 3, + "otp": false, + "role": "accountant", + "state": "active", + "uid": "ID787E387912" +} diff --git a/mocks/api/v2/dalan/identity/sessions/POST--email=admin@barong.io&password=123123&otp_code=&recaptcha_response=.mock b/mocks/api/v2/dalan/identity/sessions/POST--email=admin@barong.io&password=123123&otp_code=&recaptcha_response=.mock new file mode 100644 index 0000000..2f172ea --- /dev/null +++ b/mocks/api/v2/dalan/identity/sessions/POST--email=admin@barong.io&password=123123&otp_code=&recaptcha_response=.mock @@ -0,0 +1,15 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +{ + "username": "Turbo3000", + "email": "admin@barong.io", + "level": 3, + "otp": false, + "role": "admin", + "state": "active", + "uid": "ID787E383938" +} diff --git a/mocks/api/v2/dalan/identity/sessions/POST--email=compliance@barong.io&password=123123&otp_code=.mock b/mocks/api/v2/dalan/identity/sessions/POST--email=compliance@barong.io&password=123123&otp_code=.mock new file mode 100644 index 0000000..8af00fd --- /dev/null +++ b/mocks/api/v2/dalan/identity/sessions/POST--email=compliance@barong.io&password=123123&otp_code=.mock @@ -0,0 +1,14 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +{ + "email": "compliance@peatio.tech", + "level": 3, + "otp": false, + "role": "compliance", + "state": "active", + "uid": "ID787E383912" +} diff --git a/mocks/api/v2/dalan/identity/sessions/POST--email=otp@peatio.tech&password=123123&otp_code=&recaptcha_response=.mock b/mocks/api/v2/dalan/identity/sessions/POST--email=otp@peatio.tech&password=123123&otp_code=&recaptcha_response=.mock new file mode 100644 index 0000000..7d79d7f --- /dev/null +++ b/mocks/api/v2/dalan/identity/sessions/POST--email=otp@peatio.tech&password=123123&otp_code=&recaptcha_response=.mock @@ -0,0 +1,7 @@ +HTTP/2 403 +Content-Type: application/json; charset=utf-8 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +{"error":"The account has enabled 2FA but OTP code is missing"} diff --git a/mocks/api/v2/dalan/identity/sessions/POST--email=otp@peatio.tech&password=123123&otp_code=123456&recaptcha_response=.mock b/mocks/api/v2/dalan/identity/sessions/POST--email=otp@peatio.tech&password=123123&otp_code=123456&recaptcha_response=.mock new file mode 100644 index 0000000..9d6de8b --- /dev/null +++ b/mocks/api/v2/dalan/identity/sessions/POST--email=otp@peatio.tech&password=123123&otp_code=123456&recaptcha_response=.mock @@ -0,0 +1,15 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +{ + "username": "Turbo3000", + "email": "john@barong.io", + "level": 3, + "otp": true, + "role": "member", + "state": "active", + "uid": "ID787E383938" +} diff --git a/mocks/api/v2/dalan/identity/sessions/POST--email=superadmin@barong.io&password=123123&otp_code=.mock b/mocks/api/v2/dalan/identity/sessions/POST--email=superadmin@barong.io&password=123123&otp_code=.mock new file mode 100644 index 0000000..07930ab --- /dev/null +++ b/mocks/api/v2/dalan/identity/sessions/POST--email=superadmin@barong.io&password=123123&otp_code=.mock @@ -0,0 +1,14 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +{ + "email": "superadmin@peatio.tech", + "level": 3, + "otp": false, + "role": "superadmin", + "state": "active", + "uid": "ID787E383012" +} diff --git a/mocks/api/v2/dalan/identity/sessions/POST--email=support@barong.io&password=123123&otp_code=.mock b/mocks/api/v2/dalan/identity/sessions/POST--email=support@barong.io&password=123123&otp_code=.mock new file mode 100644 index 0000000..7382a6f --- /dev/null +++ b/mocks/api/v2/dalan/identity/sessions/POST--email=support@barong.io&password=123123&otp_code=.mock @@ -0,0 +1,14 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +{ + "email": "support@peatio.tech", + "level": 3, + "otp": false, + "role": "support", + "state": "active", + "uid": "ID787E383912" +} diff --git a/mocks/api/v2/dalan/identity/sessions/POST--email=technical@peatio.tech&password=123123&otp_code=.mock b/mocks/api/v2/dalan/identity/sessions/POST--email=technical@peatio.tech&password=123123&otp_code=.mock new file mode 100644 index 0000000..b1ed3ab --- /dev/null +++ b/mocks/api/v2/dalan/identity/sessions/POST--email=technical@peatio.tech&password=123123&otp_code=.mock @@ -0,0 +1,14 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +{ + "email": "technical@peatio.tech", + "level": 3, + "otp": false, + "role": "technical", + "state": "active", + "uid": "ID787E383912" +} diff --git a/mocks/api/v2/dalan/identity/sessions/POST--email=toweradmin@barong.io&password=123123&otp_code=.mock b/mocks/api/v2/dalan/identity/sessions/POST--email=toweradmin@barong.io&password=123123&otp_code=.mock new file mode 100644 index 0000000..fb54d05 --- /dev/null +++ b/mocks/api/v2/dalan/identity/sessions/POST--email=toweradmin@barong.io&password=123123&otp_code=.mock @@ -0,0 +1,14 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +{ + "email": "toweradmin@peatio.tech", + "level": 3, + "otp": false, + "role": "admin", + "state": "active", + "uid": "ID787E383912" +} diff --git a/mocks/api/v2/dalan/identity/sessions/POST--email=user1@peatio.tech&password=123123&otp_code=&recaptcha_response=.mock b/mocks/api/v2/dalan/identity/sessions/POST--email=user1@peatio.tech&password=123123&otp_code=&recaptcha_response=.mock new file mode 100644 index 0000000..d6be294 --- /dev/null +++ b/mocks/api/v2/dalan/identity/sessions/POST--email=user1@peatio.tech&password=123123&otp_code=&recaptcha_response=.mock @@ -0,0 +1,15 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +{ + "username": "Turbo3000", + "email": "user1@peatio.tech", + "level": 1, + "otp": false, + "role": "member", + "state": "active", + "uid": "ID787E383938" +} diff --git a/mocks/api/v2/dalan/identity/sessions/POST--email=user2@peatio.tech&password=123123&otp_code=&recaptcha_response=.mock b/mocks/api/v2/dalan/identity/sessions/POST--email=user2@peatio.tech&password=123123&otp_code=&recaptcha_response=.mock new file mode 100644 index 0000000..4f8fb20 --- /dev/null +++ b/mocks/api/v2/dalan/identity/sessions/POST--email=user2@peatio.tech&password=123123&otp_code=&recaptcha_response=.mock @@ -0,0 +1,15 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +{ + "username": "Turbo3000", + "email": "user2@peatio.tech", + "level": 2, + "otp": false, + "role": "member", + "state": "active", + "uid": "ID787E383938" +} diff --git a/mocks/api/v2/dalan/identity/sessions/POST--email=wrong@peatio.tech&password=123123&otp_code=&recaptcha_response=.mock b/mocks/api/v2/dalan/identity/sessions/POST--email=wrong@peatio.tech&password=123123&otp_code=&recaptcha_response=.mock new file mode 100644 index 0000000..695c2e0 --- /dev/null +++ b/mocks/api/v2/dalan/identity/sessions/POST--email=wrong@peatio.tech&password=123123&otp_code=&recaptcha_response=.mock @@ -0,0 +1,8 @@ +HTTP/2 401 +Content-Type: application/json; charset=utf-8 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + + +{"error":"Invalid Email or Password"} diff --git a/mocks/api/v2/dalan/identity/sessions/POST.mock b/mocks/api/v2/dalan/identity/sessions/POST.mock new file mode 100644 index 0000000..3d17ef5 --- /dev/null +++ b/mocks/api/v2/dalan/identity/sessions/POST.mock @@ -0,0 +1,82 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +{ + "email":"admin@barong.io", + "uid":"ID489F525B1D", + "role":"admin", + "level": 1, + "otp":true, + "state":"active", + "referral_uid":null, + "data":"{\"language\":\"en\"}", + "created_at":"2019-10-30T11:15:07Z", + "updated_at":"2020-01-13T11:59:31Z", + "labels":[ + {"key":"email","value":"verified","scope":"private","created_at":"2019-10-30T11:15:07Z","updated_at":"2019-10-30T11:15:07Z"}, + {"key":"phone","value":"","scope":"private","created_at":"2019-12-24T12:05:26Z","updated_at":"2019-12-24T12:05:26Z"}, + {"key":"profile","value":"","scope":"private","created_at":"2020-01-15T19:33:17Z","updated_at":"2020-01-15T19:33:17Z"}, + {"key":"document","value":"pending","scope":"private","created_at":"2020-01-15T19:34:04Z","updated_at":"2020-01-15T19:34:04Z"} + ], + "phones":[ + {"country":"UA","number":"380504403893","validated_at":"2019-12-24T12:05:26.000Z"} + ], + "data_storages":[], + "csrf_token": "wddwew33r", + "profiles": [ + { + "address": null, + "city": null, + "country": null, + "dob": "1999-05-21", + "first_name": "Louisa", + "last_name": "Break", + "postcode": null, + "state": "verified", + "updated_at":"2019-01-10T17:06:37Z", + "created_at":"2019-01-10T17:06:37Z", + "metadata": "{\"nationality\": \"Ukrainian\"}" + }, + { + "address": null, + "city": null, + "country": null, + "dob": "1999-05-21", + "first_name": "Marianna", + "last_name": "The Best", + "postcode": null, + "state": "verified", + "updated_at":"2019-02-10T17:06:37Z", + "created_at":"2019-02-10T17:06:37Z", + "metadata": "{\"nationality\": \"Ukrainian\"}" + }, + { + "address": null, + "city": null, + "country": null, + "dob": "1999-05-21", + "first_name": "Rejected", + "last_name": "The Best", + "postcode": null, + "state": "rejected", + "updated_at":"2019-02-10T17:06:37Z", + "created_at":"2019-02-10T17:06:37Z", + "metadata": "{\"nationality\": \"Ukrainian\"}" + }, + { + "address": null, + "city": null, + "country": null, + "dob": "1999-05-21", + "first_name": "Antoinette", + "last_name": "Ferguson", + "postcode": null, + "state": "verified", + "updated_at":"2019-03-10T17:06:37Z", + "created_at":"2019-03-10T17:06:37Z", + "metadata": "{\"nationality\": \"Ukrainian\"}" + } + ] +} diff --git a/mocks/api/v2/dalan/identity/users/OPTIONS.mock b/mocks/api/v2/dalan/identity/users/OPTIONS.mock new file mode 100644 index 0000000..80d3368 --- /dev/null +++ b/mocks/api/v2/dalan/identity/users/OPTIONS.mock @@ -0,0 +1,6 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: content-type, x-csrf-token diff --git a/mocks/api/v2/dalan/identity/users/POST.mock b/mocks/api/v2/dalan/identity/users/POST.mock new file mode 100644 index 0000000..8a29b6f --- /dev/null +++ b/mocks/api/v2/dalan/identity/users/POST.mock @@ -0,0 +1,25 @@ +HTTP/2 201 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: content-type, x-csrf-token + +{ + "email":"admin@barong.io", + "uid":"ID489F525B1D", + "role": "member", + "level": 0, + "otp": false, + "state": "pending", + "referral_uid": null, + "csrf_token": "8b281b3032013f1fcf3c", + "data": "{\"language\":\"en\"}", + "created_at": "2021-01-18T15:28:54Z", + "updated_at": "2021-01-18T15:28:54Z", + "labels": [], + "phones": [], + "profiles": [], + "data_storages": [] +} diff --git a/mocks/api/v2/dalan/identity/users/email/generate_code/OPTIONS.mock b/mocks/api/v2/dalan/identity/users/email/generate_code/OPTIONS.mock new file mode 100644 index 0000000..b604284 --- /dev/null +++ b/mocks/api/v2/dalan/identity/users/email/generate_code/OPTIONS.mock @@ -0,0 +1,6 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + + diff --git a/mocks/api/v2/dalan/identity/users/email/generate_code/POST--email=wrong@email.com.mock b/mocks/api/v2/dalan/identity/users/email/generate_code/POST--email=wrong@email.com.mock new file mode 100644 index 0000000..c07fb2c --- /dev/null +++ b/mocks/api/v2/dalan/identity/users/email/generate_code/POST--email=wrong@email.com.mock @@ -0,0 +1,8 @@ +HTTP/2 422 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +{ + "error": "User doesn't exist or has already been activated" +} diff --git a/mocks/api/v2/dalan/identity/users/email/generate_code/POST.mock b/mocks/api/v2/dalan/identity/users/email/generate_code/POST.mock new file mode 100644 index 0000000..a45a95b --- /dev/null +++ b/mocks/api/v2/dalan/identity/users/email/generate_code/POST.mock @@ -0,0 +1,6 @@ +HTTP/2 201 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +201 diff --git a/mocks/api/v2/dalan/identity/users/password/confirm_code/OPTIONS.mock b/mocks/api/v2/dalan/identity/users/password/confirm_code/OPTIONS.mock new file mode 100644 index 0000000..b604284 --- /dev/null +++ b/mocks/api/v2/dalan/identity/users/password/confirm_code/OPTIONS.mock @@ -0,0 +1,6 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + + diff --git a/mocks/api/v2/dalan/identity/users/password/confirm_code/POST.mock b/mocks/api/v2/dalan/identity/users/password/confirm_code/POST.mock new file mode 100644 index 0000000..a45a95b --- /dev/null +++ b/mocks/api/v2/dalan/identity/users/password/confirm_code/POST.mock @@ -0,0 +1,6 @@ +HTTP/2 201 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +201 diff --git a/mocks/api/v2/dalan/identity/users/password/generate_code/OPTIONS.mock b/mocks/api/v2/dalan/identity/users/password/generate_code/OPTIONS.mock new file mode 100644 index 0000000..b604284 --- /dev/null +++ b/mocks/api/v2/dalan/identity/users/password/generate_code/OPTIONS.mock @@ -0,0 +1,6 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + + diff --git a/mocks/api/v2/dalan/identity/users/password/generate_code/POST.mock b/mocks/api/v2/dalan/identity/users/password/generate_code/POST.mock new file mode 100644 index 0000000..a45a95b --- /dev/null +++ b/mocks/api/v2/dalan/identity/users/password/generate_code/POST.mock @@ -0,0 +1,6 @@ +HTTP/2 201 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +201 diff --git a/mocks/api/v2/dalan/identity/users/register_geetest/GET.mock b/mocks/api/v2/dalan/identity/users/register_geetest/GET.mock new file mode 100644 index 0000000..637f00d --- /dev/null +++ b/mocks/api/v2/dalan/identity/users/register_geetest/GET.mock @@ -0,0 +1,10 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +{ + "gt": "0c4ab8ac2ed12c1c3f4a023dff99cd87", + "challenge": "25e8fe07feed0b02eb88634a7b052be4" +} diff --git a/mocks/api/v2/dalan/resource/api_keys/GET--page=1&limit=4.mock b/mocks/api/v2/dalan/resource/api_keys/GET--page=1&limit=4.mock new file mode 100644 index 0000000..509c6d6 --- /dev/null +++ b/mocks/api/v2/dalan/resource/api_keys/GET--page=1&limit=4.mock @@ -0,0 +1,39 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +[ + { + "algorithm": "HS256", + "created_at": "2019-02-14T15:56:57Z", + "kid": "5c3933e8c8f97071", + "scope": [], + "state": "active", + "updated_at": "2019-02-14T15:56:57Z" + }, + { + "algorithm": "HS256", + "created_at": "2019-02-14T15:58:06Z", + "kid": "16da7aa20353e449", + "scope": [], + "state": "active", + "updated_at": "2019-02-14T15:58:06Z" + }, + { + "algorithm": "HS256", + "created_at": "2019-02-14T15:58:06Z", + "kid": "26da7aa20353e449", + "scope": [], + "state": "active", + "updated_at": "2019-02-14T15:58:06Z" + }, + { + "algorithm": "HS256", + "created_at": "2019-02-14T15:58:06Z", + "kid": "36da7aa20353e449", + "scope": [], + "state": "active", + "updated_at": "2019-02-14T15:58:06Z" + } +] diff --git a/mocks/api/v2/dalan/resource/api_keys/GET--page=2&limit=4.mock b/mocks/api/v2/dalan/resource/api_keys/GET--page=2&limit=4.mock new file mode 100644 index 0000000..c750f44 --- /dev/null +++ b/mocks/api/v2/dalan/resource/api_keys/GET--page=2&limit=4.mock @@ -0,0 +1,15 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +[ + { + "algorithm": "HS256", + "created_at": "2019-02-14T15:58:06Z", + "kid": "46da7aa20353e449", + "scope": [], + "state": "active", + "updated_at": "2019-02-14T15:58:06Z" + } +] diff --git a/mocks/api/v2/dalan/resource/api_keys/GET--page=5&limit=1.mock b/mocks/api/v2/dalan/resource/api_keys/GET--page=5&limit=1.mock new file mode 100644 index 0000000..c750f44 --- /dev/null +++ b/mocks/api/v2/dalan/resource/api_keys/GET--page=5&limit=1.mock @@ -0,0 +1,15 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +[ + { + "algorithm": "HS256", + "created_at": "2019-02-14T15:58:06Z", + "kid": "46da7aa20353e449", + "scope": [], + "state": "active", + "updated_at": "2019-02-14T15:58:06Z" + } +] diff --git a/mocks/api/v2/dalan/resource/api_keys/GET--totp_code=.mock b/mocks/api/v2/dalan/resource/api_keys/GET--totp_code=.mock new file mode 100644 index 0000000..7aa0fe0 --- /dev/null +++ b/mocks/api/v2/dalan/resource/api_keys/GET--totp_code=.mock @@ -0,0 +1,8 @@ +HTTP/2 422 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +{ + "error": "This code was already used. Wait until the next time period" +} diff --git a/mocks/api/v2/dalan/resource/api_keys/GET.mock b/mocks/api/v2/dalan/resource/api_keys/GET.mock new file mode 100644 index 0000000..1841bc0 --- /dev/null +++ b/mocks/api/v2/dalan/resource/api_keys/GET.mock @@ -0,0 +1,47 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +[ + { + "algorithm": "HS256", + "created_at": "2019-02-14T15:56:57Z", + "kid": "5c3933e8c8f97071", + "scope": [], + "state": "active", + "updated_at": "2019-02-14T15:56:57Z" + }, + { + "algorithm": "HS256", + "created_at": "2019-02-14T15:58:06Z", + "kid": "16da7aa20353e449", + "scope": [], + "state": "active", + "updated_at": "2019-02-14T15:58:06Z" + }, + { + "algorithm": "HS256", + "created_at": "2019-02-14T15:58:06Z", + "kid": "26da7aa20353e449", + "scope": [], + "state": "active", + "updated_at": "2019-02-14T15:58:06Z" + }, + { + "algorithm": "HS256", + "created_at": "2019-02-14T15:58:06Z", + "kid": "36da7aa20353e449", + "scope": [], + "state": "active", + "updated_at": "2019-02-14T15:58:06Z" + }, + { + "algorithm": "HS256", + "created_at": "2019-02-14T15:58:06Z", + "kid": "46da7aa20353e449", + "scope": [], + "state": "active", + "updated_at": "2019-02-14T15:58:06Z" + } +] diff --git a/mocks/api/v2/dalan/resource/api_keys/OPTIONS.mock b/mocks/api/v2/dalan/resource/api_keys/OPTIONS.mock new file mode 100644 index 0000000..fe9d915 --- /dev/null +++ b/mocks/api/v2/dalan/resource/api_keys/OPTIONS.mock @@ -0,0 +1,4 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization diff --git a/mocks/api/v2/dalan/resource/api_keys/POST--totp_code=&algorithm=HS256.mock b/mocks/api/v2/dalan/resource/api_keys/POST--totp_code=&algorithm=HS256.mock new file mode 100644 index 0000000..fbc26da --- /dev/null +++ b/mocks/api/v2/dalan/resource/api_keys/POST--totp_code=&algorithm=HS256.mock @@ -0,0 +1,9 @@ +HTTP/2 422 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Allow-Headers: * + +{ + "error": "This code was already used. Wait until the next time period" +} diff --git a/mocks/api/v2/dalan/resource/api_keys/POST.mock b/mocks/api/v2/dalan/resource/api_keys/POST.mock new file mode 100644 index 0000000..c178d05 --- /dev/null +++ b/mocks/api/v2/dalan/resource/api_keys/POST.mock @@ -0,0 +1,15 @@ +HTTP/2 201 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Allow-Headers: * + +{ + "algorithm": "HS256", + "created_at": "2019-02-14T15:56:57Z", + "kid": "5c3933e8c8f97071", + "scope": [], + "secret": "27757139646497bf91389d9e70cf973c", + "state": "active", + "updated_at": "2019-02-14T15:56:57Z" +} diff --git a/mocks/api/v2/dalan/resource/api_keys/__/DELETE--totp_code=.mock b/mocks/api/v2/dalan/resource/api_keys/__/DELETE--totp_code=.mock new file mode 100644 index 0000000..fbc26da --- /dev/null +++ b/mocks/api/v2/dalan/resource/api_keys/__/DELETE--totp_code=.mock @@ -0,0 +1,9 @@ +HTTP/2 422 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Allow-Headers: * + +{ + "error": "This code was already used. Wait until the next time period" +} diff --git a/mocks/api/v2/dalan/resource/api_keys/__/DELETE.mock b/mocks/api/v2/dalan/resource/api_keys/__/DELETE.mock new file mode 100644 index 0000000..052e006 --- /dev/null +++ b/mocks/api/v2/dalan/resource/api_keys/__/DELETE.mock @@ -0,0 +1,5 @@ +HTTP/2 204 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Allow-Headers: * diff --git a/mocks/api/v2/dalan/resource/api_keys/__/OPTIONS.mock b/mocks/api/v2/dalan/resource/api_keys/__/OPTIONS.mock new file mode 100644 index 0000000..b4a3c40 --- /dev/null +++ b/mocks/api/v2/dalan/resource/api_keys/__/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Allow-Headers: * diff --git a/mocks/api/v2/dalan/resource/api_keys/__/PATCH--totp_code=000000&state=disabled.mock b/mocks/api/v2/dalan/resource/api_keys/__/PATCH--totp_code=000000&state=disabled.mock new file mode 100644 index 0000000..fbc26da --- /dev/null +++ b/mocks/api/v2/dalan/resource/api_keys/__/PATCH--totp_code=000000&state=disabled.mock @@ -0,0 +1,9 @@ +HTTP/2 422 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Allow-Headers: * + +{ + "error": "This code was already used. Wait until the next time period" +} diff --git a/mocks/api/v2/dalan/resource/api_keys/__/PATCH.mock b/mocks/api/v2/dalan/resource/api_keys/__/PATCH.mock new file mode 100644 index 0000000..4d0b3d7 --- /dev/null +++ b/mocks/api/v2/dalan/resource/api_keys/__/PATCH.mock @@ -0,0 +1,14 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Allow-Headers: * + +{ + "algorithm": "HS256", + "created_at": "2019-02-14T15:56:57Z", + "kid": "5c3933e8c8f97071", + "scope": [], + "state": "disabled", + "updated_at": "2019-02-14T15:56:57Z" +} diff --git a/mocks/api/v2/dalan/resource/documents/POST.mock b/mocks/api/v2/dalan/resource/documents/POST.mock new file mode 100644 index 0000000..21418ea --- /dev/null +++ b/mocks/api/v2/dalan/resource/documents/POST.mock @@ -0,0 +1,7 @@ +HTTP/2 201 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Allow-Headers: * + +201 diff --git a/mocks/api/v2/dalan/resource/labels/GET.mock b/mocks/api/v2/dalan/resource/labels/GET.mock new file mode 100644 index 0000000..7dae1a6 --- /dev/null +++ b/mocks/api/v2/dalan/resource/labels/GET.mock @@ -0,0 +1,28 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +[ + { + "key":"email", + "value":"verified", + "scope":"private", + "created_at":"2019-02-12T15:00:40Z", + "updated_at":"2019-02-12T15:00:40Z" + }, + { + "key":"profile", + "value":"verified", + "scope":"private", + "created_at":"2019-02-25T12:41:14Z", + "updated_at":"2019-02-25T12:41:14Z" + }, + { + "key":"access_phone", + "value":"verified", + "scope":"private", + "created_at":"2019-02-25T12:47:07Z", + "updated_at":"2019-02-25T12:47:07Z" + } +] diff --git a/mocks/api/v2/dalan/resource/labels/GET03.mock b/mocks/api/v2/dalan/resource/labels/GET03.mock new file mode 100644 index 0000000..c457aa1 --- /dev/null +++ b/mocks/api/v2/dalan/resource/labels/GET03.mock @@ -0,0 +1,57 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +[ + { + "key":"email", + "value":"verified", + "scope":"private", + "created_at":"2019-02-12T15:00:40Z", + "updated_at":"2019-02-12T15:00:40Z" + }, + { + "key":"profile", + "value":"verified", + "scope":"private", + "created_at":"2019-02-25T12:41:14Z", + "updated_at":"2019-02-25T12:41:14Z" + }, + { + "key":"access_phone", + "value":"verified", + "scope":"private", + "created_at":"2019-02-25T12:47:07Z", + "updated_at":"2019-02-25T12:47:07Z" + }, + { + "key":"card", + "value":"verified", + "scope":"private", + "created_at":"2019-02-25T12:47:07Z", + "updated_at":"2019-02-25T12:47:07Z" + }, + { + "key":"iban", + "value":"verified", + "scope":"private", + "created_at":"2019-02-25T12:47:07Z", + "updated_at":"2019-02-25T12:47:07Z" + }, + { + "key":"poa", + "value":"verified", + "scope":"private", + "created_at":"2019-02-25T12:47:07Z", + "updated_at":"2019-02-25T12:47:07Z" + }, + { + "key":"telephone", + "value":"verified", + "scope":"private", + "created_at":"2019-02-25T12:47:07Z", + "updated_at":"2019-02-25T12:47:07Z" + } + +] diff --git a/mocks/api/v2/dalan/resource/labels/GET1.mock b/mocks/api/v2/dalan/resource/labels/GET1.mock new file mode 100644 index 0000000..6a2c721 --- /dev/null +++ b/mocks/api/v2/dalan/resource/labels/GET1.mock @@ -0,0 +1,49 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +[ + { + "key":"email", + "value":"verified", + "scope":"private", + "created_at":"2019-02-12T15:00:40Z", + "updated_at":"2019-02-12T15:00:40Z" + }, + { + "key":"profile", + "value":"verified", + "scope":"private", + "created_at":"2019-02-25T12:41:14Z", + "updated_at":"2019-02-25T12:41:14Z" + }, + { + "key":"access_phone", + "value":"verified", + "scope":"private", + "created_at":"2019-02-25T12:47:07Z", + "updated_at":"2019-02-25T12:47:07Z" + }, + { + "key":"card", + "value":"verified", + "scope":"private", + "created_at":"2019-02-25T12:47:07Z", + "updated_at":"2019-02-25T12:47:07Z" + }, + { + "key":"iban", + "value":"verified", + "scope":"private", + "created_at":"2019-02-25T12:47:07Z", + "updated_at":"2019-02-25T12:47:07Z" + }, + { + "key":"poa", + "value":"verified", + "scope":"private", + "created_at":"2019-02-25T12:47:07Z", + "updated_at":"2019-02-25T12:47:07Z" + } +] diff --git a/mocks/api/v2/dalan/resource/otp/enable/OPTIONS.mock b/mocks/api/v2/dalan/resource/otp/enable/OPTIONS.mock new file mode 100644 index 0000000..fe9d915 --- /dev/null +++ b/mocks/api/v2/dalan/resource/otp/enable/OPTIONS.mock @@ -0,0 +1,4 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization diff --git a/mocks/api/v2/dalan/resource/otp/enable/POST--code=0000000.mock b/mocks/api/v2/dalan/resource/otp/enable/POST--code=0000000.mock new file mode 100644 index 0000000..f9aa6e7 --- /dev/null +++ b/mocks/api/v2/dalan/resource/otp/enable/POST--code=0000000.mock @@ -0,0 +1,9 @@ +HTTP/2 422 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Allow-Headers: * + +{ + "error": "OTP code is invalid" +} diff --git a/mocks/api/v2/dalan/resource/otp/enable/POST.mock b/mocks/api/v2/dalan/resource/otp/enable/POST.mock new file mode 100644 index 0000000..ae0da69 --- /dev/null +++ b/mocks/api/v2/dalan/resource/otp/enable/POST.mock @@ -0,0 +1,7 @@ +HTTP/2 201 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Allow-Headers: * + +200 diff --git a/mocks/api/v2/dalan/resource/otp/generate_qrcode/OPTIONS.mock b/mocks/api/v2/dalan/resource/otp/generate_qrcode/OPTIONS.mock new file mode 100644 index 0000000..fe9d915 --- /dev/null +++ b/mocks/api/v2/dalan/resource/otp/generate_qrcode/OPTIONS.mock @@ -0,0 +1,4 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization diff --git a/mocks/api/v2/dalan/resource/otp/generate_qrcode/POST.mock b/mocks/api/v2/dalan/resource/otp/generate_qrcode/POST.mock new file mode 100644 index 0000000..346af5c --- /dev/null +++ b/mocks/api/v2/dalan/resource/otp/generate_qrcode/POST.mock @@ -0,0 +1,7 @@ +HTTP/2 201 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Allow-Headers: * + +{"auth":null,"data":{"barcode":"iVBORw0KGgoAAAANSUhEUgAAASwAAAEsEAAAAAAMhg3qAAAH7UlEQVR4nOzdy27jOhaG0U6j3v+VqwepgQCbMRnyk5PGWpMDBLKkOD94aoOX/efv3//Acf999wvw/0mwSPz5/M/Hx/lbn/qf7PXdrvcc/fyU0Xey86yZe878XqvvNvMdnvJ5fyMWCcEiIVgkBIuEYJH48/ijouo5dZ+dCnHnmuvPV9/hVHU5893ufP9n/+5GLBKCRUKwSAgWCcEi8aQqvJqpMmaqidVKaqfaWp1D3KnmdubgVu8/umb1/jP2/+5GLBKCRUKwSAgWCcEi8aIqfJedamtnheSdFeJMZTczXzlzz/u3zBixSAgWCcEiIVgkBIvEm6vCnYrv6s49gMVevBl3/u77jFgkBIuEYJEQLBKCReJFVVhXFqf2A56qLlevKfY5nlr5ufO32/+7G7FICBYJwSIhWCQEi8STqvBdc2Gjd1hdpXnq5zPvs+onv//Zv7sRi4RgkRAsEoJFQrBI/KsKf2Orpp0Vnqu/750rUe/sxNH93Y1YJASLhGCRECwSgkXi47MuKFYzFp0XZu5/alXnqp1zQXe+q1OdOFY5g5Q3ECwSgkVCsEgIFomPr/9tv1OpnaryZt6n2Ff4rvucOn91Rvd9GrFICBYJwSIhWCQEi8S/FaQ7nReuTlUZO3ZWXZ7axzfzbqPnFu9z52c/f27EIiFYJASLhGCRECwST06bqef7Vq8vqtHVs0xPnX16Vc9F7nx29LvPfz9GLBKCRUKwSAgWCcEi8WQFaTHfNLrPjlN761afNbKzd++ec0Efn7VaUc5fb8QiIVgkBIuEYJEQLBIvTpsZfizunH6qWplx54rQU/c8tUp29Nz9uVcjFgnBIiFYJASLhGCReFIVjty/N23enVXkSNFncOZZV6e+w/13M2KRECwSgkVCsEgIFokn/Qrrk09m7rlz/c6K1lN79Hb2J47uufPcke/tGZy5xohFQrBICBYJwSIhWCSenEG6c2JM0StwpnLZMfPOOxXxqfnK1cp91dk5XCMWCcEiIVgkBIuEYJF4cdrMqfm71et3VoTWKyfrU2XOztl97z2vzBXygwgWCcEiIVgkBIvEQlW4U6EUFdOMYs5upN4/eGfvxf2/uxGLhGCRECwSgkVCsEgsdKaYUZ+NObr+1Ek4M97VaaKumnee+3i9EYuEYJEQLBKCRUKwSBzoYl/3Maw76d85f1ecuXpqFe7MNfPflRGLhGCRECwSgkVCsEg8OW3maqY6ONWlYsadHStOnQtaK85lnfH138KIRUKwSAgWCcEiIVgknswV7tipmO5cQVpXdjsrZle/h2I/4/5cpBGLhGCRECwSgkVCsEi8WEF6VffyW73nzLvdeZ7qT+vgP3Jqj6czSHkDwSIhWCQEi4RgkXhSFe6s/Lyz7+GOYu6sPhVnxs85o9WIRUKwSAgWCcEiIVgkXqwgPXVizCmn7l/Ph44++645zZGdk2e+ZsQiIVgkBIuEYJEQLBLf7GL/ru4VI3f2JRx5VweNn/B7PV5vxCIhWCQEi4RgkRAsEgudKVZXTl7N7L871dXiVDeNmXcbXTN61s47zDhVXe7PyRqxSAgWCcEiIVgkBIvEk84UO3NeI8U82k/Yi3fqPu/67NXZVbVGLBKCRUKwSAgWCcEi8c19hfWZmXfurTtV1e5Upmfn6R7t9J38XvVtxCIhWCQEi4RgkRAsEv+qwpn5uJ0TV652egjOONX94dSc6WpVVe8rPHW9fYW8gWCRECwSgkVCsEi8WEG60wtvpzr7yas0d/ZXjhTV69WplbrzjFgkBIuEYJEQLBKCReLFXOHVzlzhTkeGe05HebzP6orZU2eK7swJnnrWqsff3YhFQrBICBYJwSIhWCT+daZYXf1YryYtTpKpO+MXPQ1PVesz73O22jVikRAsEoJFQrBICBaJhc4UV3eeGLNTMZ3aA1icj7o6f3dqP6bOFPxigkVCsEgIFgnBIvHNM0jvrJ5G77P6njP3qavOkXoOcWY17Nm5SCMWCcEiIVgkBIuEYJH4+N6/+U91c9i5fvWzxUk4dbX7G1fVWkFKSLBICBYJwSIhWCSe7Cs8VSWNrhmpq57iWTPvcPWuarQ4p/RrRiwSgkVCsEgIFgnBIvFkrrA4VWbkVAV3ag/juzpxjNTzjzPXz7zb432MWCQEi4RgkRAsEoJF4kVVOHKqgrjTqZ6JM/ecuX70rOJ81xn2FfILCBYJwSIhWCQEi8STLvYjpzovzHx2Z57r1NzczvWr54UW+xNPVeLfe2cjFgnBIiFYJASLhGCReNLFfke9J2616rlzVero56fmE0fXnOpMcbXfTcOIRUKwSAgWCcEiIVgkFuYKV42qudE1xb68ugPFzrNG14wU84bdylUjFgnBIiFYJASLhGCReNHFftWp6mP1fXbm5urVs6NrduYE6472q9c8MmKRECwSgkVCsEgIFokXXeyLU01mFHsDVyu7emXmzhziTs/HU3snv36uEYuEYJEQLBKCRUKwSLyoCms7Kzln1PvvroquFqfOLC16QX79PkYsEoJFQrBICBYJwSLx5qqw7sE386xT99yx8w5nO0o8fnZmftNcITcRLBKCRUKwSAgWiRdVYVH1rM6Lrd5/pJjLKz67es87nztirpCbCBYJwSIhWCQEi8STqrA4j3Rnf1zR1WLHateMnXnAnetnPlucLPTJiEVCsEgIFgnBIiFYJD6Ks2LAiEVCsEj8LwAA//+S1YC0dw+XhgAAAABJRU5ErkJggg==","url":"otpauth://totp/Microkube:john@barong.io?algorithm=SHA1\u0026digits=6\u0026issuer=Microkube\u0026period=30\u0026secret=JDP7L27SU7SUBL4UU2NRYE4HQDGB5AN4"},"lease_duration":0,"lease_id":"","renewable":false,"warnings":null,"wrap_info":null} \ No newline at end of file diff --git a/mocks/api/v2/dalan/resource/phones/OPTIONS.mock b/mocks/api/v2/dalan/resource/phones/OPTIONS.mock new file mode 100644 index 0000000..a87e233 --- /dev/null +++ b/mocks/api/v2/dalan/resource/phones/OPTIONS.mock @@ -0,0 +1,4 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Allow-Headers: * diff --git a/mocks/api/v2/dalan/resource/phones/POST--phone_number=+1111.mock b/mocks/api/v2/dalan/resource/phones/POST--phone_number=+1111.mock new file mode 100644 index 0000000..abfbf49 --- /dev/null +++ b/mocks/api/v2/dalan/resource/phones/POST--phone_number=+1111.mock @@ -0,0 +1,7 @@ +HTTP/2 400 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Allow-Headers: * + +{"errors":["resource.phone.number_exist"]} diff --git a/mocks/api/v2/dalan/resource/phones/POST--phone_number=+1234.mock b/mocks/api/v2/dalan/resource/phones/POST--phone_number=+1234.mock new file mode 100644 index 0000000..62f97eb --- /dev/null +++ b/mocks/api/v2/dalan/resource/phones/POST--phone_number=+1234.mock @@ -0,0 +1,7 @@ +HTTP/2 400 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Allow-Headers: * + +{"errors":["resource.phone.exists"]} diff --git a/mocks/api/v2/dalan/resource/phones/send_code/OPTIONS.mock b/mocks/api/v2/dalan/resource/phones/send_code/OPTIONS.mock new file mode 100644 index 0000000..a87e233 --- /dev/null +++ b/mocks/api/v2/dalan/resource/phones/send_code/OPTIONS.mock @@ -0,0 +1,4 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Allow-Headers: * diff --git a/mocks/api/v2/dalan/resource/phones/send_code/POST.mock b/mocks/api/v2/dalan/resource/phones/send_code/POST.mock new file mode 100644 index 0000000..1572c13 --- /dev/null +++ b/mocks/api/v2/dalan/resource/phones/send_code/POST.mock @@ -0,0 +1,7 @@ +HTTP/2 201 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Allow-Headers: * + +{"message":"Code was sent successfully via sms"} diff --git a/mocks/api/v2/dalan/resource/phones/verify/OPTIONS.mock b/mocks/api/v2/dalan/resource/phones/verify/OPTIONS.mock new file mode 100644 index 0000000..fe9d915 --- /dev/null +++ b/mocks/api/v2/dalan/resource/phones/verify/OPTIONS.mock @@ -0,0 +1,4 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization diff --git a/mocks/api/v2/dalan/resource/phones/verify/POST.mock b/mocks/api/v2/dalan/resource/phones/verify/POST.mock new file mode 100644 index 0000000..21418ea --- /dev/null +++ b/mocks/api/v2/dalan/resource/phones/verify/POST.mock @@ -0,0 +1,7 @@ +HTTP/2 201 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Allow-Headers: * + +201 diff --git a/mocks/api/v2/dalan/resource/profiles/OPTIONS.mock b/mocks/api/v2/dalan/resource/profiles/OPTIONS.mock new file mode 100644 index 0000000..fe9d915 --- /dev/null +++ b/mocks/api/v2/dalan/resource/profiles/OPTIONS.mock @@ -0,0 +1,4 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization diff --git a/mocks/api/v2/dalan/resource/profiles/POST.mock b/mocks/api/v2/dalan/resource/profiles/POST.mock new file mode 100644 index 0000000..21418ea --- /dev/null +++ b/mocks/api/v2/dalan/resource/profiles/POST.mock @@ -0,0 +1,7 @@ +HTTP/2 201 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Allow-Headers: * + +201 diff --git a/mocks/api/v2/dalan/resource/users/activity/GET--limit=25&page=1.mock b/mocks/api/v2/dalan/resource/users/activity/GET--limit=25&page=1.mock new file mode 100644 index 0000000..302305a --- /dev/null +++ b/mocks/api/v2/dalan/resource/users/activity/GET--limit=25&page=1.mock @@ -0,0 +1,260 @@ +HTTP/2 201 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Expose-Headers: total +Total: 28 + + +[{ + "id": 19, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:08:36.000Z" +}, { + "id": 20, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "logout", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:09:30.000Z" +}, { + "id": 21, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "logout", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:10:10.000Z" +}, { + "id": 22, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:10:14.000Z" +}, { + "id": 23, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:12:16.000Z" +}, { + "id": 24, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:15:20.000Z" +}, { + "id": 25, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:17:53.000Z" +}, { + "id": 26, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:17:57.000Z" +}, { + "id": 27, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:17:58.000Z" +}, { + "id": 28, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:18:33.000Z" +}, { + "id": 29, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:18:56.000Z" +}, { + "id": 30, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:41:55.000Z" +}, { + "id": 31, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "logout", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:43:56.000Z" +}, { + "id": 33, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:53:01.000Z" +}, { + "id": 35, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36", + "topic": "otp", + "action": "request QR code for 2FA", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:54:46.000Z" +}, +{ + "id": 19, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:08:36.000Z" +}, { + "id": 25, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:17:53.000Z" +}, { + "id": 26, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:17:57.000Z" +}, { + "id": 27, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:17:58.000Z" +}, { + "id": 28, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:18:33.000Z" +}, { + "id": 20, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "logout", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:09:30.000Z" +}, { + "id": 21, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "logout", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:10:10.000Z" +}, { + "id": 27, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:17:58.000Z" +}, { + "id": 28, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:18:33.000Z" +}, { + "id": 29, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:18:56.000Z" +}] diff --git a/mocks/api/v2/dalan/resource/users/activity/GET--limit=25&page=2.mock b/mocks/api/v2/dalan/resource/users/activity/GET--limit=25&page=2.mock new file mode 100644 index 0000000..3de51d1 --- /dev/null +++ b/mocks/api/v2/dalan/resource/users/activity/GET--limit=25&page=2.mock @@ -0,0 +1,38 @@ +HTTP/2 201 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Expose-Headers: total +Total: 28 + +[{ + "id": 27, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:17:58.000Z" +}, { + "id": 28, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:18:33.000Z" +}, { + "id": 29, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:18:56.000Z" +}] diff --git a/mocks/api/v2/dalan/resource/users/activity/all/GET--limit=10&page=1.mock b/mocks/api/v2/dalan/resource/users/activity/all/GET--limit=10&page=1.mock new file mode 100644 index 0000000..29ac713 --- /dev/null +++ b/mocks/api/v2/dalan/resource/users/activity/all/GET--limit=10&page=1.mock @@ -0,0 +1,109 @@ +HTTP/2 201 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Expose-Headers: total +Total: 28 + + +[{ + "id": 19, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:08:36.000Z" +}, { + "id": 20, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "logout", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:09:30.000Z" +}, { + "id": 21, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "logout", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:10:10.000Z" +}, { + "id": 22, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:10:14.000Z" +}, { + "id": 23, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:12:16.000Z" +}, { + "id": 24, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:15:20.000Z" +}, { + "id": 25, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:17:53.000Z" +}, { + "id": 26, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:17:57.000Z" +}, { + "id": 27, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:17:58.000Z" +}, { + "id": 28, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:18:33.000Z" +}] diff --git a/mocks/api/v2/dalan/resource/users/activity/all/GET--limit=10&page=2.mock b/mocks/api/v2/dalan/resource/users/activity/all/GET--limit=10&page=2.mock new file mode 100644 index 0000000..e5b9dc5 --- /dev/null +++ b/mocks/api/v2/dalan/resource/users/activity/all/GET--limit=10&page=2.mock @@ -0,0 +1,110 @@ +HTTP/2 201 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Expose-Headers: total +Total: 28 + + +[{ + "id": 29, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:18:56.000Z" +}, { + "id": 30, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:41:55.000Z" +}, { + "id": 31, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "logout", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:43:56.000Z" +}, { + "id": 33, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:53:01.000Z" +}, { + "id": 35, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36", + "topic": "otp", + "action": "request QR code for 2FA", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:54:46.000Z" +}, +{ + "id": 19, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:08:36.000Z" +}, { + "id": 25, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:17:53.000Z" +}, { + "id": 26, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:17:57.000Z" +}, { + "id": 27, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:17:58.000Z" +}, { + "id": 28, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:18:33.000Z" +}] diff --git a/mocks/api/v2/dalan/resource/users/activity/all/GET--limit=10&page=3.mock b/mocks/api/v2/dalan/resource/users/activity/all/GET--limit=10&page=3.mock new file mode 100644 index 0000000..d38752b --- /dev/null +++ b/mocks/api/v2/dalan/resource/users/activity/all/GET--limit=10&page=3.mock @@ -0,0 +1,90 @@ +HTTP/2 201 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Expose-Headers: total +Total: 28 + + +[{ + "id": 20, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "logout", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:09:30.000Z" +}, { + "id": 21, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "logout", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:10:10.000Z" +}, { + "id": 27, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:17:58.000Z" +}, { + "id": 28, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:18:33.000Z" +}, { + "id": 29, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:18:56.000Z" +}, +{ + "id": 27, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:17:58.000Z" +}, { + "id": 28, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:18:33.000Z" +}, { + "id": 29, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:18:56.000Z" +}] diff --git a/mocks/api/v2/dalan/resource/users/activity/all/GET--limit=25&page=1.mock b/mocks/api/v2/dalan/resource/users/activity/all/GET--limit=25&page=1.mock new file mode 100644 index 0000000..627e743 --- /dev/null +++ b/mocks/api/v2/dalan/resource/users/activity/all/GET--limit=25&page=1.mock @@ -0,0 +1,261 @@ +HTTP/2 201 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Expose-Headers: total +Total: 28 + + +[{ + "id": 25, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:08:36.000Z" +}, { + "id": 24, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "logout", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:09:30.000Z" +}, { + "id": 23, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "logout", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:10:10.000Z" +}, { + "id": 22, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:10:14.000Z" +}, { + "id": 21, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:15:20.000Z" +}, { + "id": 20, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:17:53.000Z" +}, { + "id": 1, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:17:57.000Z" +}, { + "id": 2, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:17:58.000Z" +}, { + "id": 3, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:18:33.000Z" +}, { + "id": 4, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "login", + "result": "failed", + "data": null, + "created_at": "2019-01-22T15:18:56.000Z" +}, { + "id": 5, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:41:55.000Z" +}, { + "id": 6, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "logout", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:43:56.000Z" +}, { + "id": 7, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:53:01.000Z" +}, { + "id": 8, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36", + "topic": "otp", + "action": "request QR code for 2FA", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:54:46.000Z" +}, +{ + "id": 9, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:08:36.000Z" +}, { + "id": 10, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:17:53.000Z" +}, { + "id": 11, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:17:57.000Z" +}, { + "id": 12, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:17:58.000Z" +}, { + "id": 13, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:18:33.000Z" +}, { + "id": 14, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "logout", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:09:30.000Z" +}, { + "id": 15, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "logout", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:10:10.000Z" +}, { + "id": 16, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:17:58.000Z" +}, { + "id": 17, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:18:33.000Z" +}, +{ + "id": 19, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:18:33.000Z" +}, { + "id": 18, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:18:56.000Z" +}] diff --git a/mocks/api/v2/dalan/resource/users/activity/all/GET--limit=25&page=2.mock b/mocks/api/v2/dalan/resource/users/activity/all/GET--limit=25&page=2.mock new file mode 100644 index 0000000..3de51d1 --- /dev/null +++ b/mocks/api/v2/dalan/resource/users/activity/all/GET--limit=25&page=2.mock @@ -0,0 +1,38 @@ +HTTP/2 201 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Expose-Headers: total +Total: 28 + +[{ + "id": 27, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:17:58.000Z" +}, { + "id": 28, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:18:33.000Z" +}, { + "id": 29, + "user_id": 1, + "user_ip": "195.214.197.210", + "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36", + "topic": "session", + "action": "login", + "result": "succeed", + "data": null, + "created_at": "2019-01-22T15:18:56.000Z" +}] diff --git a/mocks/api/v2/dalan/resource/users/activity/all/GET.mock b/mocks/api/v2/dalan/resource/users/activity/all/GET.mock new file mode 100644 index 0000000..dcaa133 --- /dev/null +++ b/mocks/api/v2/dalan/resource/users/activity/all/GET.mock @@ -0,0 +1,4 @@ +HTTP/2 201 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization diff --git a/mocks/api/v2/dalan/resource/users/activity/all/OPTIONS.mock b/mocks/api/v2/dalan/resource/users/activity/all/OPTIONS.mock new file mode 100644 index 0000000..7ee5583 --- /dev/null +++ b/mocks/api/v2/dalan/resource/users/activity/all/OPTIONS.mock @@ -0,0 +1,4 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization diff --git a/mocks/api/v2/dalan/resource/users/me/GET.mock b/mocks/api/v2/dalan/resource/users/me/GET.mock new file mode 100644 index 0000000..00562cb --- /dev/null +++ b/mocks/api/v2/dalan/resource/users/me/GET.mock @@ -0,0 +1,65 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + + + + +{ + "email":"yaser.rezaei@gmail.com", + "uid":"ID9B35B4A318", + "role":"member", + "level":0, + "otp":false, + "state":"active", + "referral_uid":null, + "data":"{\"language\":\"en\"}", + "labels":[ + { + "key":"email", + "value":"verified", + "scope":"private", + "created_at":"2021-08-08T04:38:20Z", + "updated_at":"2021-08-08T04:38:20Z" + }, + { + "key":"profile", + "value":"verified", + "scope":"private", + "created_at":"2021-08-08T07:00:11Z", + "updated_at":"2021-08-08T07:00:46Z" + }, + { + "key":"access_phone", + "value":"verified", + "scope":"private", + "created_at":"2021-08-08T07:01:30Z", + "updated_at":"2021-08-08T07:01:44Z" + }], + "phones":[ + { + "country":"IR", + "number":"98******9700", + "validated_at":"2021-08-08T07:01:44.000Z" + }], + "profiles":[ + { + "first_name":"یاسر", + "last_name":"ر****", + "national_code":"07937*****", + "dob":"1363-06-**", + "address":null, + "postcode":null, + "city":null, + "country":null, + "state":"verified", + "metadata":null, + "upload":null, + "created_at":"2021-08-08T07:00:10Z", + "updated_at":"2021-08-08T07:00:46Z" + }], + "data_storages":[], + "created_at":"2021-08-08T04:37:58Z", + "updated_at":"2021-08-08T04:38:20Z" +} \ No newline at end of file diff --git a/mocks/api/v2/dalan/resource/users/me/GET1.mock b/mocks/api/v2/dalan/resource/users/me/GET1.mock new file mode 100644 index 0000000..23eed7e --- /dev/null +++ b/mocks/api/v2/dalan/resource/users/me/GET1.mock @@ -0,0 +1,81 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +{ + "username": "Turbo3000", + "email": "john@barong.io", + "level": 2, + "otp": true, + "role": "superadmin", + "state": "active", + "uid": "ID787E383938", + "csrf_token": "31415926535897932384626433832795028841971", + "data":"{\"language\":\"en\"}", + "profiles": [ + { + "address": null, + "city": null, + "country": null, + "dob": "1999-05-21", + "first_name": "Louisa", + "last_name": "Break", + "postcode": null, + "state": "verified", + "updated_at":"2019-01-10T17:06:37Z", + "created_at":"2019-01-10T17:06:37Z", + "metadata": "{\"nationality\": \"Ukrainian\"}" + }, + { + "address": null, + "city": null, + "country": null, + "dob": "1999-05-21", + "first_name": "Marianna", + "last_name": "The Best", + "postcode": null, + "state": "verified", + "updated_at":"2019-02-10T17:06:37Z", + "created_at":"2019-02-10T17:06:37Z", + "metadata": "{\"nationality\": \"Ukrainian\"}" + }, + { + "address": null, + "city": null, + "country": null, + "dob": "1999-05-21", + "first_name": "Rejected", + "last_name": "The Best", + "postcode": null, + "state": "rejected", + "updated_at":"2019-02-10T17:06:37Z", + "created_at":"2019-02-10T17:06:37Z", + "metadata": "{\"nationality\": \"Ukrainian\"}" + }, + { + "address": null, + "city": null, + "country": null, + "dob": "1999-05-21", + "first_name": "Antoinette", + "last_name": "Ferguson", + "postcode": null, + "state": "verified", + "updated_at":"2019-03-10T17:06:37Z", + "created_at":"2019-03-10T17:06:37Z", + "metadata": "{\"nationality\": \"Ukrainian\"}" + } + ], + "labels": [ + { + "key": "phone", + "value": "verify", + "scope": "private", + "created_at": "2019-05-16T14:01:49Z", + "updated_at": "2019-05-16T14:01:49Z" + } + ], + "phones": "+380501823918" +} + diff --git a/mocks/api/v2/dalan/resource/users/me/OPTIONS.mock b/mocks/api/v2/dalan/resource/users/me/OPTIONS.mock new file mode 100644 index 0000000..7ee5583 --- /dev/null +++ b/mocks/api/v2/dalan/resource/users/me/OPTIONS.mock @@ -0,0 +1,4 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization diff --git a/mocks/api/v2/dalan/resource/users/me/PUT.mock b/mocks/api/v2/dalan/resource/users/me/PUT.mock new file mode 100644 index 0000000..a82c5a3 --- /dev/null +++ b/mocks/api/v2/dalan/resource/users/me/PUT.mock @@ -0,0 +1,83 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization + +{ + "email":"admin@barong.io", + "uid":"ID489F525B1D", + "role":"admin", + "level": 1, + "otp":true, + "state":"active", + "referral_uid":null, + "created_at":"2019-10-30T11:15:07Z", + "updated_at":"2020-01-13T11:59:31Z", + "data":"{\"language\":\"en\"}", + "labels":[ + {"key":"email","value":"verified","scope":"private","created_at":"2019-10-30T11:15:07Z","updated_at":"2019-10-30T11:15:07Z"}, + {"key":"phone","value":"","scope":"private","created_at":"2019-12-24T12:05:26Z","updated_at":"2019-12-24T12:05:26Z"}, + {"key":"profile","value":"","scope":"private","created_at":"2020-01-15T19:33:17Z","updated_at":"2020-01-15T19:33:17Z"}, + {"key":"document","value":"pending","scope":"private","created_at":"2020-01-15T19:34:04Z","updated_at":"2020-01-15T19:34:04Z"} + ], + "phones":[ + {"country":"UA","number":"380504403893","validated_at":"2019-12-24T12:05:26.000Z"} + ], + "data_storages":[], + "data":"{\"language\":\"en\"}", + "csrf_token": "wddwew33r", + "profiles": [ + { + "address": null, + "city": null, + "country": null, + "dob": "1999-05-21", + "first_name": "Louisa", + "last_name": "Break", + "postcode": null, + "state": "verified", + "updated_at":"2019-01-10T17:06:37Z", + "created_at":"2019-01-10T17:06:37Z", + "metadata": "{\"nationality\": \"Ukrainian\"}" + }, + { + "address": null, + "city": null, + "country": null, + "dob": "1999-05-21", + "first_name": "Marianna", + "last_name": "The Best", + "postcode": null, + "state": "verified", + "updated_at":"2019-02-10T17:06:37Z", + "created_at":"2019-02-10T17:06:37Z", + "metadata": "{\"nationality\": \"Ukrainian\"}" + }, + { + "address": null, + "city": null, + "country": null, + "dob": "1999-05-21", + "first_name": "Rejected", + "last_name": "The Best", + "postcode": null, + "state": "rejected", + "updated_at":"2019-02-10T17:06:37Z", + "created_at":"2019-02-10T17:06:37Z", + "metadata": "{\"nationality\": \"Ukrainian\"}" + }, + { + "address": null, + "city": null, + "country": null, + "dob": "1999-05-21", + "first_name": "Antoinette", + "last_name": "Ferguson", + "postcode": null, + "state": "verified", + "updated_at":"2019-03-10T17:06:37Z", + "created_at":"2019-03-10T17:06:37Z", + "metadata": "{\"nationality\": \"Ukrainian\"}" + } + ] +} diff --git a/mocks/api/v2/dalan/resource/users/password/OPTIONS.mock b/mocks/api/v2/dalan/resource/users/password/OPTIONS.mock new file mode 100644 index 0000000..fe9d915 --- /dev/null +++ b/mocks/api/v2/dalan/resource/users/password/OPTIONS.mock @@ -0,0 +1,4 @@ +HTTP/2 200 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization diff --git a/mocks/api/v2/dalan/resource/users/password/PUT--old_password=11111111&new_password=11111111&confirm_password=11111111.mock b/mocks/api/v2/dalan/resource/users/password/PUT--old_password=11111111&new_password=11111111&confirm_password=11111111.mock new file mode 100644 index 0000000..43df1e4 --- /dev/null +++ b/mocks/api/v2/dalan/resource/users/password/PUT--old_password=11111111&new_password=11111111&confirm_password=11111111.mock @@ -0,0 +1,6 @@ +HTTP/2 422 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Allow-Headers: * + +{"errors":["password.requirements","password.password.password_strength"]} diff --git a/mocks/api/v2/dalan/resource/users/password/PUT.mock b/mocks/api/v2/dalan/resource/users/password/PUT.mock new file mode 100644 index 0000000..c0475af --- /dev/null +++ b/mocks/api/v2/dalan/resource/users/password/PUT.mock @@ -0,0 +1,8 @@ +HTTP/2 201 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: * + +201 diff --git a/mocks/api/v2/dena/account/balances/GET.mock b/mocks/api/v2/dena/account/balances/GET.mock new file mode 100644 index 0000000..651352a --- /dev/null +++ b/mocks/api/v2/dena/account/balances/GET.mock @@ -0,0 +1,84 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + { + "currency":"bch", + "balance":"0", + "locked":"0", + "deposit_address": { + "currencies": ["bch"], + "address": null, + "state": "pending" + } + }, + { + "currency": "btc", + "balance": "0.21026373", + "locked": "0.0", + "deposit_address": { + "currencies": ["btc"], + "address": "2NCimTNGnbm92drX7ARcwBKw6rvr456VWym", + "state": "active" + } + }, + { + "currency": "eth", + "balance": "1.5", + "locked": "0.05", + "deposit_address": { + "currencies": ["eth", "trst"], + "address": "0x00eec1e95026faf0412d7a29b94d514d31446141", + "state": "active" + } + }, + { + "currency":"ltc", + "balance":"0.0", + "locked":"0.0", + "deposit_address": { + "currencies": ["eth", "ltc"], + "address":"0x00eec1e95026faf0412d7a29b94d514d31446141", + "state":"active" + } + }, + { + "currency":"dash", + "balance":"0", + "locked":"0", + "deposit_address": { + "currencies": ["dash"], + "address": "XpESxaUmonkq8RaLLp46Brx2K39ggQe226", + "state": "active" + } + }, + { + "currency":"xrp", + "balance":"0", + "locked":"0" + }, + { + "currency":"krw", + "balance":"548000", + "locked":"2000" + }, + { + "currency":"usd", + "balance":"1000.0", + "locked":"0.0" + }, + { + "currency":"eur", + "balance":"1000.0", + "locked":"0.0" + }, + { + "currency":"irt", + "balance":"1000000000", + "locked":"100000" + } +] diff --git a/mocks/api/v2/dena/account/balances/OPTIONS.mock b/mocks/api/v2/dena/account/balances/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/account/balances/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/account/balances/bch/GET.mock b/mocks/api/v2/dena/account/balances/bch/GET.mock new file mode 100644 index 0000000..1ef1cdd --- /dev/null +++ b/mocks/api/v2/dena/account/balances/bch/GET.mock @@ -0,0 +1,17 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +{ + "currency":"bch", + "balance":"10.12", + "locked":"0.1", + "deposit_address": { + "currencies": ["bch"], + "address": null, + "state": "pending" + } +} diff --git a/mocks/api/v2/dena/account/balances/bch/OPTIONS.mock b/mocks/api/v2/dena/account/balances/bch/OPTIONS.mock new file mode 100644 index 0000000..53f6e03 --- /dev/null +++ b/mocks/api/v2/dena/account/balances/bch/OPTIONS.mock @@ -0,0 +1,6 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: * diff --git a/mocks/api/v2/dena/account/balances/btc/GET.mock b/mocks/api/v2/dena/account/balances/btc/GET.mock new file mode 100644 index 0000000..9751b45 --- /dev/null +++ b/mocks/api/v2/dena/account/balances/btc/GET.mock @@ -0,0 +1,17 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +{ + "currency": "btc", + "balance": "0.21026373", + "locked": "0.0", + "deposit_address": { + "currencies": ["btc"], + "address": "2NCimTNGnbm92drX7ARcwBKw6rvr456VWym", + "state": "active" + } +} diff --git a/mocks/api/v2/dena/account/balances/btc/OPTIONS.mock b/mocks/api/v2/dena/account/balances/btc/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/account/balances/btc/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/account/balances/dash/GET.mock b/mocks/api/v2/dena/account/balances/dash/GET.mock new file mode 100644 index 0000000..991418b --- /dev/null +++ b/mocks/api/v2/dena/account/balances/dash/GET.mock @@ -0,0 +1,17 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +{ + "currency":"dash", + "balance":"0", + "locked":"0", + "deposit_address": { + "currencies": ["dash"], + "address": "XpESxaUmonkq8RaLLp46Brx2K39ggQe226", + "state": "active" + } +} diff --git a/mocks/api/v2/dena/account/balances/dash/OPTIONS.mock b/mocks/api/v2/dena/account/balances/dash/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/account/balances/dash/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/account/balances/eth/GET.mock b/mocks/api/v2/dena/account/balances/eth/GET.mock new file mode 100644 index 0000000..36110a1 --- /dev/null +++ b/mocks/api/v2/dena/account/balances/eth/GET.mock @@ -0,0 +1,17 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +{ + "currency": "eth", + "balance": "1.5", + "locked": "0.05", + "deposit_address": { + "currencies": ["eth", "ltc"], + "address": "0x00eec1e95026faf0412d7a29b94d514d31446141", + "state": "active" + } +} diff --git a/mocks/api/v2/dena/account/balances/eth/OPTIONS.mock b/mocks/api/v2/dena/account/balances/eth/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/account/balances/eth/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/account/balances/eur/GET.mock b/mocks/api/v2/dena/account/balances/eur/GET.mock new file mode 100644 index 0000000..9f69156 --- /dev/null +++ b/mocks/api/v2/dena/account/balances/eur/GET.mock @@ -0,0 +1,12 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +{ + "currency":"eur", + "balance":"1000.0", + "locked":"0.0" +} diff --git a/mocks/api/v2/dena/account/balances/eur/OPTIONS.mock b/mocks/api/v2/dena/account/balances/eur/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/account/balances/eur/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/account/balances/irt/GET.mock b/mocks/api/v2/dena/account/balances/irt/GET.mock new file mode 100644 index 0000000..f911196 --- /dev/null +++ b/mocks/api/v2/dena/account/balances/irt/GET.mock @@ -0,0 +1,12 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +{ + "currency":"irt", + "balance":"1000000000", + "locked":"100000" +} diff --git a/mocks/api/v2/dena/account/balances/irt/OPTIONS.mock b/mocks/api/v2/dena/account/balances/irt/OPTIONS.mock new file mode 100644 index 0000000..53f6e03 --- /dev/null +++ b/mocks/api/v2/dena/account/balances/irt/OPTIONS.mock @@ -0,0 +1,6 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: * diff --git a/mocks/api/v2/dena/account/balances/ltc/GET.mock b/mocks/api/v2/dena/account/balances/ltc/GET.mock new file mode 100644 index 0000000..ebc4b96 --- /dev/null +++ b/mocks/api/v2/dena/account/balances/ltc/GET.mock @@ -0,0 +1,17 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +{ + "currency":"ltc", + "balance":"0.0", + "locked":"0.0", + "deposit_address": { + "currencies": ["eth", "ltc"], + "address":"0x00eec1e95026faf0412d7a29b94d514d31446141", + "state":"active" + } +} diff --git a/mocks/api/v2/dena/account/balances/ltc/OPTIONS.mock b/mocks/api/v2/dena/account/balances/ltc/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/account/balances/ltc/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/account/balances/usd/GET.mock b/mocks/api/v2/dena/account/balances/usd/GET.mock new file mode 100644 index 0000000..889954e --- /dev/null +++ b/mocks/api/v2/dena/account/balances/usd/GET.mock @@ -0,0 +1,12 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +{ + "currency":"usd", + "balance":"1000.0", + "locked":"0.0" +} diff --git a/mocks/api/v2/dena/account/balances/usd/OPTIONS.mock b/mocks/api/v2/dena/account/balances/usd/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/account/balances/usd/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/account/balances/xrp/GET.mock b/mocks/api/v2/dena/account/balances/xrp/GET.mock new file mode 100644 index 0000000..1680bbc --- /dev/null +++ b/mocks/api/v2/dena/account/balances/xrp/GET.mock @@ -0,0 +1,12 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +{ + "currency":"xrp", + "balance":"0", + "locked":"0" +} diff --git a/mocks/api/v2/dena/account/balances/xrp/OPTIONS.mock b/mocks/api/v2/dena/account/balances/xrp/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/account/balances/xrp/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/account/balances/zar/GET.mock b/mocks/api/v2/dena/account/balances/zar/GET.mock new file mode 100644 index 0000000..09207b4 --- /dev/null +++ b/mocks/api/v2/dena/account/balances/zar/GET.mock @@ -0,0 +1,12 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +{ + "currency":"zar", + "balance":"1000.0", + "locked":"0.0" +} diff --git a/mocks/api/v2/dena/account/balances/zar/OPTIONS.mock b/mocks/api/v2/dena/account/balances/zar/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/account/balances/zar/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/account/beneficiaries/10/DELETE.mock b/mocks/api/v2/dena/account/beneficiaries/10/DELETE.mock new file mode 100644 index 0000000..d4cbae5 --- /dev/null +++ b/mocks/api/v2/dena/account/beneficiaries/10/DELETE.mock @@ -0,0 +1,7 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: content-type, x-csrf-token + diff --git a/mocks/api/v2/dena/account/beneficiaries/10/OPTIONS.mock b/mocks/api/v2/dena/account/beneficiaries/10/OPTIONS.mock new file mode 100644 index 0000000..80d3368 --- /dev/null +++ b/mocks/api/v2/dena/account/beneficiaries/10/OPTIONS.mock @@ -0,0 +1,6 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: content-type, x-csrf-token diff --git a/mocks/api/v2/dena/account/beneficiaries/10/activate/OPTIONS.mock b/mocks/api/v2/dena/account/beneficiaries/10/activate/OPTIONS.mock new file mode 100644 index 0000000..80d3368 --- /dev/null +++ b/mocks/api/v2/dena/account/beneficiaries/10/activate/OPTIONS.mock @@ -0,0 +1,6 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: content-type, x-csrf-token diff --git a/mocks/api/v2/dena/account/beneficiaries/10/activate/PATCH--pin=111111&id=10.mock b/mocks/api/v2/dena/account/beneficiaries/10/activate/PATCH--pin=111111&id=10.mock new file mode 100644 index 0000000..f04c21d --- /dev/null +++ b/mocks/api/v2/dena/account/beneficiaries/10/activate/PATCH--pin=111111&id=10.mock @@ -0,0 +1,19 @@ +HTTP/2 201 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: content-type, x-csrf-token + +{ + "currency": "btc", + "data": null, + "address": "111", + "description": null, + "id": 140, + "name": "Hello", + "sent_at": "2020-09-10T12:56:05Z", + "state": "active", + "uid": "ID787E383938" +} diff --git a/mocks/api/v2/dena/account/beneficiaries/10/activate/PATCH.mock b/mocks/api/v2/dena/account/beneficiaries/10/activate/PATCH.mock new file mode 100644 index 0000000..794a7b3 --- /dev/null +++ b/mocks/api/v2/dena/account/beneficiaries/10/activate/PATCH.mock @@ -0,0 +1,20 @@ +HTTP/2 201 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: content-type, x-csrf-token + +{ + "id": 10, + "currency": "btc", + "uid": "IDE7FE1E3BE3", + "name": "Test New", + "description": null, + "data": { + "address": "wueieuiwue" + }, + "state": "active", + "sent_at": "2020-12-17T09:55:42Z" +} diff --git a/mocks/api/v2/dena/account/beneficiaries/10/activate/POST.mock b/mocks/api/v2/dena/account/beneficiaries/10/activate/POST.mock new file mode 100644 index 0000000..df23422 --- /dev/null +++ b/mocks/api/v2/dena/account/beneficiaries/10/activate/POST.mock @@ -0,0 +1,20 @@ +HTTP/2 201 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: content-type, x-csrf-token + +{ + "id": 10, + "currency": "btc", + "uid": "IDE7FE1E3BE3", + "name": "Test", + "description": null, + "data": { + "address": "wueieuiwue" + }, + "state": "active", + "sent_at": "2020-12-17T09:55:42Z" +} diff --git a/mocks/api/v2/dena/account/beneficiaries/10/resend_pin/OPTIONS.mock b/mocks/api/v2/dena/account/beneficiaries/10/resend_pin/OPTIONS.mock new file mode 100644 index 0000000..80d3368 --- /dev/null +++ b/mocks/api/v2/dena/account/beneficiaries/10/resend_pin/OPTIONS.mock @@ -0,0 +1,6 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: content-type, x-csrf-token diff --git a/mocks/api/v2/dena/account/beneficiaries/10/resend_pin/PATCH--id=10.mock b/mocks/api/v2/dena/account/beneficiaries/10/resend_pin/PATCH--id=10.mock new file mode 100644 index 0000000..959819d --- /dev/null +++ b/mocks/api/v2/dena/account/beneficiaries/10/resend_pin/PATCH--id=10.mock @@ -0,0 +1,9 @@ +HTTP/2 201 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: content-type, x-csrf-token + +204 diff --git a/mocks/api/v2/dena/account/beneficiaries/10/resend_pin/PATCH.mock b/mocks/api/v2/dena/account/beneficiaries/10/resend_pin/PATCH.mock new file mode 100644 index 0000000..959819d --- /dev/null +++ b/mocks/api/v2/dena/account/beneficiaries/10/resend_pin/PATCH.mock @@ -0,0 +1,9 @@ +HTTP/2 201 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: content-type, x-csrf-token + +204 diff --git a/mocks/api/v2/dena/account/beneficiaries/GET.mock b/mocks/api/v2/dena/account/beneficiaries/GET.mock new file mode 100644 index 0000000..248619e --- /dev/null +++ b/mocks/api/v2/dena/account/beneficiaries/GET.mock @@ -0,0 +1,18 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":9,"currency":"btc","name":"Mom","description":null,"data":{"address":"1MM67SnmHrRcuRtbQunU2HUkembjxuzrgD"},"state":"active"}, + {"id":10,"currency":"btc","name":"Pentagon","description":null,"data":{"address":"1MM67SnmHrRcuRtbQunU2HUkembjxuzrgD"},"state":"pending"}, + {"id":8,"currency":"usd","name":"My local bank","description":null,"data":{"bank_name":"ABC Bank","full_name":"John Smith","account_number":"123456789"},"state":"active"}, + {"id":9,"currency":"btc","name":"Mom2","description":null,"data":{"address":"1MM67SnmHrRcuRtbQunU2HUkembjxuzrgD"},"state":"active"}, + {"id":10,"currency":"btc","name":"Pentagon2","description":null,"data":{"address":"1MM67SnmHrRcuRtbQunU2HUkembjxuzrgD"},"state":"pending"}, + {"id":8,"currency":"usd","name":"My local bank2","description":null,"data":{"bank_name":"ABC Bank","full_name":"John Smith","account_number":"123456789"},"state":"active"}, + {"id":9,"currency":"btc","name":"Mom3","description":null,"data":{"address":"1MM67SnmHrRcuRtbQunU2HUkembjxuzrgD"},"state":"active"}, + {"id":10,"currency":"btc","name":"Pentagon3","description":null,"data":{"address":"1MM67SnmHrRcuRtbQunU2HUkembjxuzrgD"},"state":"pending"}, + {"id":8,"currency":"usd","name":"My local bank3","description":null,"data":{"bank_name":"ABC Bank","full_name":"John Smith","account_number":"123456789"},"state":"active"} +] diff --git a/mocks/api/v2/dena/account/beneficiaries/OPTIONS.mock b/mocks/api/v2/dena/account/beneficiaries/OPTIONS.mock new file mode 100644 index 0000000..80d3368 --- /dev/null +++ b/mocks/api/v2/dena/account/beneficiaries/OPTIONS.mock @@ -0,0 +1,6 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: content-type, x-csrf-token diff --git a/mocks/api/v2/dena/account/beneficiaries/POST--currency=btc&name=111&data.address=111.mock b/mocks/api/v2/dena/account/beneficiaries/POST--currency=btc&name=111&data.address=111.mock new file mode 100644 index 0000000..78a1c97 --- /dev/null +++ b/mocks/api/v2/dena/account/beneficiaries/POST--currency=btc&name=111&data.address=111.mock @@ -0,0 +1,19 @@ +HTTP/2 201 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: content-type, x-csrf-token + +{ + "currency": "btc", + "data": null, + "address": "111", + "description": null, + "id": 140, + "name": "Hello", + "sent_at": "2020-09-10T12:56:05Z", + "state": "pending", + "uid": "ID787E383938" +} diff --git a/mocks/api/v2/dena/account/beneficiaries/POST.mock b/mocks/api/v2/dena/account/beneficiaries/POST.mock new file mode 100644 index 0000000..38db0b2 --- /dev/null +++ b/mocks/api/v2/dena/account/beneficiaries/POST.mock @@ -0,0 +1,20 @@ +HTTP/2 201 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: content-type, x-csrf-token + +{ + "id": 10, + "currency": "btc", + "uid": "IDE7FE1E3BE3", + "name": "Test new", + "description": null, + "data": { + "address": "wueieuiwue" + }, + "state": "active", + "sent_at": "2020-12-17T09:55:42Z" +} diff --git a/mocks/api/v2/dena/account/deposit_address/bch/GET.mock b/mocks/api/v2/dena/account/deposit_address/bch/GET.mock new file mode 100644 index 0000000..d0b91ac --- /dev/null +++ b/mocks/api/v2/dena/account/deposit_address/bch/GET.mock @@ -0,0 +1,12 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +{ + "currencies": ["bch"], + "address": null, + "state": "pending" +} diff --git a/mocks/api/v2/dena/account/deposit_address/bch/OPTIONS.mock b/mocks/api/v2/dena/account/deposit_address/bch/OPTIONS.mock new file mode 100644 index 0000000..430bd07 --- /dev/null +++ b/mocks/api/v2/dena/account/deposit_address/bch/OPTIONS.mock @@ -0,0 +1,6 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/account/deposit_address/btc/GET.mock b/mocks/api/v2/dena/account/deposit_address/btc/GET.mock new file mode 100644 index 0000000..6559854 --- /dev/null +++ b/mocks/api/v2/dena/account/deposit_address/btc/GET.mock @@ -0,0 +1,12 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +{ + "currencies": ["btc"], + "address": "2NCimTNGnbm92drX7ARcwBKw6rvr456VWym", + "state": "active" +} diff --git a/mocks/api/v2/dena/account/deposit_address/btc/OPTIONS.mock b/mocks/api/v2/dena/account/deposit_address/btc/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/account/deposit_address/btc/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/account/deposit_address/dash/GET.mock b/mocks/api/v2/dena/account/deposit_address/dash/GET.mock new file mode 100644 index 0000000..2b0c4b1 --- /dev/null +++ b/mocks/api/v2/dena/account/deposit_address/dash/GET.mock @@ -0,0 +1,12 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +{ + "currencies": ["dash"], + "address": "XpESxaUmonkq8RaLLp46Brx2K39ggQe226", + "state": "active" +} diff --git a/mocks/api/v2/dena/account/deposit_address/dash/OPTIONS.mock b/mocks/api/v2/dena/account/deposit_address/dash/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/account/deposit_address/dash/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/account/deposit_address/eth/GET.mock b/mocks/api/v2/dena/account/deposit_address/eth/GET.mock new file mode 100644 index 0000000..6243433 --- /dev/null +++ b/mocks/api/v2/dena/account/deposit_address/eth/GET.mock @@ -0,0 +1,12 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +{ + "currencies": ["eth", "ltc"], + "address": "0x00eec1e95026faf0412d7a29b94d514d31446141", + "state": "active" +} diff --git a/mocks/api/v2/dena/account/deposit_address/eth/OPTIONS.mock b/mocks/api/v2/dena/account/deposit_address/eth/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/account/deposit_address/eth/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/account/deposit_address/ltc/GET.mock b/mocks/api/v2/dena/account/deposit_address/ltc/GET.mock new file mode 100644 index 0000000..6243433 --- /dev/null +++ b/mocks/api/v2/dena/account/deposit_address/ltc/GET.mock @@ -0,0 +1,12 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +{ + "currencies": ["eth", "ltc"], + "address": "0x00eec1e95026faf0412d7a29b94d514d31446141", + "state": "active" +} diff --git a/mocks/api/v2/dena/account/deposit_address/ltc/OPTIONS.mock b/mocks/api/v2/dena/account/deposit_address/ltc/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/account/deposit_address/ltc/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/account/deposit_address/xrp/GET.mock b/mocks/api/v2/dena/account/deposit_address/xrp/GET.mock new file mode 100644 index 0000000..9a2f8a5 --- /dev/null +++ b/mocks/api/v2/dena/account/deposit_address/xrp/GET.mock @@ -0,0 +1,12 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +{ + "currencies": ["xrp"], + "address": null, + "state": "pending" +} diff --git a/mocks/api/v2/dena/account/deposit_address/xrp/OPTIONS.mock b/mocks/api/v2/dena/account/deposit_address/xrp/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/account/deposit_address/xrp/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/account/deposits/GET--limit=1¤cy=btc&page=7.mock b/mocks/api/v2/dena/account/deposits/GET--limit=1¤cy=btc&page=7.mock new file mode 100644 index 0000000..128d1ea --- /dev/null +++ b/mocks/api/v2/dena/account/deposits/GET--limit=1¤cy=btc&page=7.mock @@ -0,0 +1,21 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Expose-Headers: total +Total: 1 + +[ + {"id":366, + "currency":"btc", + "amount":"0.99", + "fee":"0.0", + "txid":"4516e174e7f04fafd14026c22d2bc288695aaa96f4b44518aa86ac7e27fc2458", + "created_at":"2018-12-03T17:13:58+01:00", + "confirmations":1, + "completed_at":"2018-12-03T17:14:56+01:00", + "state":"accepted" + } +] \ No newline at end of file diff --git a/mocks/api/v2/dena/account/deposits/GET--limit=100.mock b/mocks/api/v2/dena/account/deposits/GET--limit=100.mock new file mode 100644 index 0000000..5aabf41 --- /dev/null +++ b/mocks/api/v2/dena/account/deposits/GET--limit=100.mock @@ -0,0 +1,319 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":566, + "currency":"ltc", + "amount":"0.99", + "fee":"0.0", + "txid":"4516e174e7f04fafd14026c22d2bc288695aaa96f4b44518aa86ac7e27fc2458", + "created_at":"2018-12-03T17:13:58+01:00", + "confirmations":1, + "completed_at":"2018-12-03T17:14:56+01:00", + "state":"accepted" + }, + {"id":393, + "currency":"btc", + "amount":"0.001", + "fee":"0.0", + "txid":"dd5024e99c92aaa8787ed8273c8a6b635388eb4624d9cc1f8e04313dce843180", + "created_at":"2018-11-16T09:56:38+01:00", + "confirmations":0, + "completed_at":"2018-11-16T09:56:56+01:00", + "state":"accepted" + }, + {"id":320, + "currency":"btc", + "amount":"0.0099", + "fee":"0.0", + "txid":"5613f03267d352d6cd19be282424b8a55d0f1d4f15c4598da66e68117c352821", + "created_at":"2018-11-12T11:41:22+01:00", + "confirmations":1, + "completed_at":"2018-11-12T11:58:58+01:00", + "state":"accepted" + }, + {"id":312, + "currency":"bch", + "amount":"0.099", + "fee":"0.0", + "txid":"eeba72b3c955195b5c1d87656395a30db0690c7817f0a16a09d593b6bfd225f2", + "created_at":"2018-11-07T10:13:19+01:00", + "confirmations":1, + "completed_at":"2018-11-07T10:22:15+01:00", + "state":"accepted" + }, + {"id":307, + "currency":"btc", + "amount":"0.1", + "fee":"0.0", + "txid":"c43cbd2c80dc7aaee932e9d94c7e104c0b9b3861f9b7751d9bce91b1bee272c6", + "created_at":"2018-11-07T09:39:45+01:00", + "confirmations":1, + "completed_at":"2018-11-07T09:41:03+01:00", + "state":"accepted" + }, + {"id":302, + "currency":"btc", + "amount":"0.01", + "fee":"0.0", + "txid":"641218dcf752eb8b44b733b46928cabbfbdf4f2214081d524ce1da2b5b718780", + "created_at":"2018-11-06T19:14:56+01:00", + "confirmations":18, + "completed_at":"2018-11-06T19:14:56+01:00", + "state":"accepted" + }, + {"id":301, + "currency":"btc", + "amount":"0.0999", + "fee":"0.0", + "txid":"975e84dac56b454d603e17c83b01223e8c48ad356427ae8a1dbc027fd6883f95", + "created_at":"2018-11-06T19:01:36+01:00", + "confirmations":25, + "completed_at":"2018-11-06T19:01:36+01:00", + "state":"accepted" + }, + {"id":300, + "currency":"btc", + "amount":"0.0999", + "fee":"0.0", + "txid":"b2f3fc20db5e798a44ee224eadda33dc318fa7d4af26ca989e163f3490424d71", + "created_at":"2018-11-06T18:42:56+01:00", + "confirmations":30, + "completed_at":"2018-11-06T18:42:56+01:00", + "state":"accepted" + }, + {"id":298, + "currency":"btc", + "amount":"0.0999", + "fee":"0.0", + "txid":"dd7af9d9697c33d0bd98b888e5133ee82d41ca5a66e275503f8efce2ca697874", + "created_at":"2018-11-06T13:44:29+01:00", + "confirmations":9, + "completed_at":"2018-11-06T13:44:29+01:00", + "state":"accepted" + }, + {"id":296, + "currency":"btc", + "amount":"0.1999", + "fee":"0.0", + "txid":"159604e1faaec0b6b995c16c89b92b032a1cedcac461df015ae0a82ffa54450e", + "created_at":"2018-11-06T13:36:36+01:00", + "confirmations":4, + "completed_at":"2018-11-06T13:36:36+01:00", + "state":"accepted" + }, + {"id":295, + "currency":"xrp", + "amount":"10.0", + "fee":"0.0", + "txid":"C1048CA66A1DC0E9CA98C2D7E67367DD9A522AB9F9A51D3D3013797387E8662A", + "created_at":"2018-11-06T12:32:24+01:00", + "confirmations":29876, + "completed_at":"2018-11-06T12:32:24+01:00", + "state":"accepted" + }, + {"id":294, + "currency":"ltc", + "amount":"0.01", + "fee":"0.0", + "txid":"4c717b1063b3b8fe5606a5ae9976e45bb56edc63105608d4e5bc9e3896668d7d", + "created_at":"2018-11-06T12:31:00+01:00", + "confirmations":1953, + "completed_at":"2018-11-06T12:31:00+01:00", + "state":"accepted" + }, + {"id":293, + "currency":"btc", + "amount":"0.001", + "fee":"0.0", + "txid":"d7b5dbf9411069acb27710c9c1b9003f31a458d7164c33f6b48ac596e2775164", + "created_at":"2018-11-06T12:30:21+01:00", + "confirmations":164, + "completed_at":"2018-11-06T12:30:21+01:00", + "state":"accepted" + }, + {"id":292, + "currency":"bch", + "amount":"0.01", + "fee":"0.0", + "txid":"74dc8c8c081655076fa065a944af3bb83b9f5c857f39733eafb090120f8ce96f", + "created_at":"2018-11-06T12:29:53+01:00", + "confirmations":190, + "completed_at":"2018-11-06T12:29:53+01:00", + "state":"accepted" + }, + {"id":291, + "currency":"btc", + "amount":"0.001", + "fee":"0.0", + "txid":"cb24ca2d7467962f2ca757f7bf2a10145f9422b2102838d0a7c10fca440b843d", + "created_at":"2018-11-06T12:16:43+01:00", + "confirmations":169, + "completed_at":"2018-11-06T12:16:43+01:00", + "state":"accepted" + }, + {"id":290, + "currency":"xrp", + "amount":"10.0", + "fee":"0.0", + "txid":"FD951D1670F6BBD9A80001DB0C11220303C4F597F92348B485949C7E2CB887DD", + "created_at":"2018-11-06T12:16:26+01:00", + "confirmations":30858, + "completed_at":"2018-11-06T12:16:26+01:00", + "state":"accepted" + }, + {"id":289, + "currency":"ltc", + "amount":"1.0", + "fee":"0.0", + "txid":"68e0f849e74f68585963a41b46ca046773561924def4191bbde9c478dba5aaaf", + "created_at":"2018-11-06T12:15:45+01:00", + "confirmations":1959, + "completed_at":"2018-11-06T12:15:45+01:00", + "state":"accepted" + }, + {"id":288, + "currency":"bch", + "amount":"0.01", + "fee":"0.0", + "txid":"e7251dbd4f7471dae8d1225896c182749f26e224aa546b65c3ea26debfe10fab", + "created_at":"2018-11-06T12:15:31+01:00", + "confirmations":194, + "completed_at":"2018-11-06T12:15:32+01:00", + "state":"accepted" + }, + {"id":286, + "currency":"eth", + "amount":"0.5", + "fee":"0.0", + "txid":"0x27fb4b9376e59d72de5babb89e17515193c1bf50344b6cde48b5dbe1b554c608", + "created_at":"2018-11-01T09:58:49+01:00", + "confirmations":1, + "completed_at":"2018-11-01T09:58:49+01:00", + "state":"accepted" + }, + {"id":280, + "currency":"btc", + "amount":"0.18423", + "fee":"0.0", + "txid":"2a4b2fb2e9731601f7b66997b768cafc60fe863cb042334025eaa882ac002e65", + "created_at":"2018-10-26T15:00:12+02:00", + "confirmations":1, + "completed_at":"2018-10-26T15:08:11+02:00", + "state":"accepted" + }, + {"id":223, + "currency":"eth", + "amount":"1.0", + "fee":"0.0", + "txid":"0xdbc99c7be09ae1ea6252c19d4adff825c2d6b101e286316a67823967374cc1d4", + "created_at":"2018-10-19T14:27:02+02:00", + "confirmations":2, + "completed_at":"2018-10-19T14:27:02+02:00", + "state":"accepted" + }, + {"id":196, + "currency":"btc", + "amount":"0.0999", + "fee":"0.0", + "txid":"0aae16ca6c1178a9aa58e615bb82f205e1881cff8d2727c07787a3b202bf45ea", + "created_at":"2018-10-08T14:22:29+02:00", + "confirmations":1, + "completed_at":"2018-10-08T14:24:02+02:00", + "state":"accepted" + }, + {"id":195, + "currency":"btc", + "amount":"0.4999", + "fee":"0.0", + "txid":"347d340c3647acd3b6d7e85ac0db774b14572bd0718a3750f629419fce1dd8ee", + "created_at":"2018-10-08T14:19:18+02:00", + "confirmations":1, + "completed_at":"2018-10-08T14:24:02+02:00", + "state":"accepted" + }, + {"id":194, + "currency":"btc", + "amount":"0.2999", + "fee":"0.0", + "txid":"1955959aec4fd4cf785616645c67cfeaa29e7bb613c8f456b2ffb245aa665875", + "created_at":"2018-10-08T13:47:46+02:00", + "confirmations":1, + "completed_at":"2018-10-08T13:58:00+02:00", + "state":"accepted" + }, + {"id":184, + "currency":"btc", + "amount":"0.1", + "fee":"0.0", + "txid":"44005356668028e95333db79638b1c98fad165f897179d5f8a3acae0c91a12dc", + "created_at":"2018-09-17T11:48:47+02:00", + "confirmations":1, + "completed_at":"2018-09-17T12:08:09+02:00", + "state":"accepted" + }, + {"id":183, + "currency":"btc", + "amount":"0.06", + "fee":"0.0", + "txid":"dea0aa02cc0f574422123f1afbb9033c813ae9383f62a2cfe2f09c49b8df6ac0", + "created_at":"2018-09-17T11:16:47+02:00", + "confirmations":1, + "completed_at":"2018-09-17T11:27:53+02:00", + "state":"accepted" + }, + {"id":161, + "currency":"btc", + "amount":"0.001", + "fee":"0.0", + "txid":"85d34da5a2a518aa2df78d3d6ae209159f19fe3abc38c93959609892bf7057c7", + "created_at":"2018-08-29T21:39:54+02:00", + "confirmations":2, + "completed_at":"2018-08-29T21:39:59+02:00", + "state":"accepted" + }, + {"id":160, + "currency":"btc", + "amount":"0.001", + "fee":"0.0", + "txid":"bb667038bd91123385a54283a32b3312092b5547e54bbd54ecdb104e54a1d672", + "created_at":"2018-08-29T21:38:27+02:00", + "confirmations":3, + "completed_at":"2018-08-29T21:38:27+02:00", + "state":"accepted" + }, + {"id":159, + "currency":"btc", + "amount":"0.001", + "fee":"0.0", + "txid":"3e54842b0309d24b4624cf801bf4a1f5d68a74e6b322cc0eaef3379e7b70b99d", + "created_at":"2018-08-29T21:37:40+02:00", + "confirmations":2, + "completed_at":"2018-08-29T21:37:40+02:00", + "state":"accepted" + }, + {"id":155, + "currency":"btc", + "amount":"0.65", + "fee":"0.0", + "txid":"97166b99cf62c69a07d3b60c708dd04356723a6708bd571a36ba5759b09ded62", + "created_at":"2018-08-29T21:29:38+02:00", + "confirmations":3, + "completed_at":"2018-08-29T21:29:38+02:00", + "state":"accepted" + }, + {"id":154, + "currency":"btc", + "amount":"1.3", + "fee":"0.0", + "txid":"10b2818546e1e4c54ca1d38b60e10a2c170d3e2c1d98425e38d902c092ecebbc", + "created_at":"2018-08-29T21:29:19+02:00", + "confirmations":5, + "completed_at":"2018-08-29T21:29:19+02:00", + "state":"accepted" + } +] diff --git a/mocks/api/v2/dena/account/deposits/GET--limit=6¤cy=btc&page=1.mock b/mocks/api/v2/dena/account/deposits/GET--limit=6¤cy=btc&page=1.mock new file mode 100644 index 0000000..e40db04 --- /dev/null +++ b/mocks/api/v2/dena/account/deposits/GET--limit=6¤cy=btc&page=1.mock @@ -0,0 +1,71 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Expose-Headers: total +Total: 9 + +[ + {"id":566, + "currency":"btc", + "amount":"0.99", + "fee":"0.0", + "txid":"4516e174e7f04fafd14026c22d2bc288695aaa96f4b44518aa86ac7e27fc2458", + "created_at":"2018-12-03T17:13:58+01:00", + "confirmations":1, + "completed_at":"2018-12-03T17:14:56+01:00", + "state":"skipped" + }, + {"id":393, + "currency":"btc", + "amount":"0.001", + "fee":"0.0", + "txid":"dd5024e99c92aaa8787ed8273c8a6b635388eb4624d9cc1f8e04313dce843180", + "created_at":"2018-11-16T09:56:38+01:00", + "confirmations":0, + "completed_at":"2018-11-16T09:56:56+01:00", + "state":"canceled" + }, + {"id":320, + "currency":"btc", + "amount":"0.0099", + "fee":"0.0", + "txid":"5613f03267d352d6cd19be282424b8a55d0f1d4f15c4598da66e68117c352821", + "created_at":"2018-11-12T11:41:22+01:00", + "confirmations":1, + "completed_at":"2018-11-12T11:58:58+01:00", + "state":"submitted" + }, + {"id":312, + "currency":"btc", + "amount":"0.099", + "fee":"0.0", + "txid":"eeba72b3c955195b5c1d87656395a30db0690c7817f0a16a09d593b6bfd225f2", + "created_at":"2018-11-07T10:13:19+01:00", + "confirmations":1, + "completed_at":"2018-11-07T10:22:15+01:00", + "state":"rejected" + }, + {"id":307, + "currency":"btc", + "amount":"0.1", + "fee":"0.0", + "txid":"c43cbd2c80dc7aaee932e9d94c7e104c0b9b3861f9b7751d9bce91b1bee272c6", + "created_at":"2018-11-07T09:39:45+01:00", + "confirmations":1, + "completed_at":"2018-11-07T09:41:03+01:00", + "state":"accepted" + }, + {"id":302, + "currency":"btc", + "amount":"0.01", + "fee":"0.0", + "txid":"641218dcf752eb8b44b733b46928cabbfbdf4f2214081d524ce1da2b5b718780", + "created_at":"2018-11-06T19:14:56+01:00", + "confirmations":18, + "completed_at":"2018-11-06T19:14:56+01:00", + "state":"collected" + } + ] \ No newline at end of file diff --git a/mocks/api/v2/dena/account/deposits/GET--limit=6¤cy=btc&page=2.mock b/mocks/api/v2/dena/account/deposits/GET--limit=6¤cy=btc&page=2.mock new file mode 100644 index 0000000..58d7657 --- /dev/null +++ b/mocks/api/v2/dena/account/deposits/GET--limit=6¤cy=btc&page=2.mock @@ -0,0 +1,41 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Expose-Headers: total +Total: 9 + +[ + {"id":366, + "currency":"btc", + "amount":"0.99", + "fee":"0.0", + "txid":"4516e174e7f04fafd14026c22d2bc288695aaa96f4b44518aa86ac7e27fc2458", + "created_at":"2018-12-03T17:13:58+01:00", + "confirmations":1, + "completed_at":"2018-12-03T17:14:56+01:00", + "state":"accepted" + }, + {"id":394, + "currency":"btc", + "amount":"0.001", + "fee":"0.0", + "txid":"dd5024e99c92aaa8787ed8273c8a6b635388eb4624d9cc1f8e04313dce843180", + "created_at":"2018-11-16T09:56:38+01:00", + "confirmations":0, + "completed_at":"2018-11-16T09:56:56+01:00", + "state":"canceled" + }, + {"id":322, + "currency":"btc", + "amount":"0.0099", + "fee":"0.0", + "txid":"5613f03267d352d6cd19be282424b8a55d0f1d4f15c4598da66e68117c352821", + "created_at":"2018-11-12T11:41:22+01:00", + "confirmations":1, + "completed_at":"2018-11-12T11:58:58+01:00", + "state":"submitted" + } +] \ No newline at end of file diff --git a/mocks/api/v2/dena/account/deposits/GET--page=1&limit=25.mock b/mocks/api/v2/dena/account/deposits/GET--page=1&limit=25.mock new file mode 100644 index 0000000..28abf74 --- /dev/null +++ b/mocks/api/v2/dena/account/deposits/GET--page=1&limit=25.mock @@ -0,0 +1,266 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Expose-Headers: total +Total: 28 + +[ + { + "id":566, + "currency":"btc", + "amount":"0.99", + "fee":"0.0", + "txid":"4516e174e7f04fafd14026c22d2bc288695aaa96f4b44518aa86ac7e27fc2458", + "created_at":"2018-12-03T17:13:58+01:00", + "confirmations":1, + "completed_at":"2018-12-03T17:14:56+01:00", + "state":"accepted" + }, + { + "id":393, + "currency":"btc", + "amount":"0.001", + "fee":"0.0", + "txid":"dd5024e99c92aaa8787ed8273c8a6b635388eb4624d9cc1f8e04313dce843180", + "created_at":"2018-11-16T09:56:38+01:00", + "confirmations":0, + "completed_at":"2018-11-16T09:56:56+01:00", + "state":"canceled" + }, + { + "id":320, + "currency":"btc", + "amount":"0.0099", + "fee":"0.0", + "txid":"5613f03267d352d6cd19be282424b8a55d0f1d4f15c4598da66e68117c352821", + "created_at":"2018-11-12T11:41:22+01:00", + "confirmations":1, + "completed_at":"2018-11-12T11:58:58+01:00", + "state":"submitted" + }, + {"id":312, + "currency":"btc", + "amount":"0.099", + "fee":"0.0", + "txid":"eeba72b3c955195b5c1d87656395a30db0690c7817f0a16a09d593b6bfd225f2", + "created_at":"2018-11-07T10:13:19+01:00", + "confirmations":1, + "completed_at":"2018-11-07T10:22:15+01:00", + "state":"rejected" + }, + {"id":307, + "currency":"btc", + "amount":"0.1", + "fee":"0.0", + "txid":"c43cbd2c80dc7aaee932e9d94c7e104c0b9b3861f9b7751d9bce91b1bee272c6", + "created_at":"2018-11-07T09:39:45+01:00", + "confirmations":1, + "completed_at":"2018-11-07T09:41:03+01:00", + "state":"accepted" + }, + {"id":302, + "currency":"btc", + "amount":"0.01", + "fee":"0.0", + "txid":"641218dcf752eb8b44b733b46928cabbfbdf4f2214081d524ce1da2b5b718780", + "created_at":"2018-11-06T19:14:56+01:00", + "confirmations":18, + "completed_at":"2018-11-06T19:14:56+01:00", + "state":"collected" + }, + {"id":383, + "currency":"btc", + "amount":"0.001", + "fee":"0.0", + "txid":"dd5024e99c92aaa8787ed8273c8a6b635388eb4624d9cc1f8e04313dce843180", + "created_at":"2018-11-16T09:56:38+01:00", + "confirmations":0, + "completed_at":"2018-11-16T09:56:56+01:00", + "state":"processing" + }, + {"id":325, + "currency":"btc", + "amount":"0.0099", + "fee":"0.0", + "txid":"5613f03267d352d6cd19be282424b8a55d0f1d4f15c4598da66e68117c352821", + "created_at":"2018-11-12T11:41:22+01:00", + "confirmations":1, + "completed_at":"2018-11-12T11:58:58+01:00", + "state":"submitted" + }, + {"id":332, + "currency":"btc", + "amount":"0.099", + "fee":"0.0", + "txid":"eeba72b3c955195b5c1d87656395a30db0690c7817f0a16a09d593b6bfd225f2", + "created_at":"2018-11-07T10:13:19+01:00", + "confirmations":1, + "completed_at":"2018-11-07T10:22:15+01:00", + "state":"rejected" + }, + {"id":327, + "currency":"btc", + "amount":"0.1", + "fee":"0.0", + "txid":"c43cbd2c80dc7aaee932e9d94c7e104c0b9b3861f9b7751d9bce91b1bee272c6", + "created_at":"2018-11-07T09:39:45+01:00", + "confirmations":1, + "completed_at":"2018-11-07T09:41:03+01:00", + "state":"accepted" + }, + {"id":322, + "currency":"btc", + "amount":"0.01", + "fee":"0.0", + "txid":"641218dcf752eb8b44b733b46928cabbfbdf4f2214081d524ce1da2b5b718780", + "created_at":"2018-11-06T19:14:56+01:00", + "confirmations":18, + "completed_at":"2018-11-06T19:14:56+01:00", + "state":"collected" + }, + {"id":693, + "currency":"btc", + "amount":"0.001", + "fee":"0.0", + "txid":"dd5024e99c92aaa8787ed8273c8a6b635388eb4624d9cc1f8e04313dce843180", + "created_at":"2018-11-16T09:56:38+01:00", + "confirmations":0, + "completed_at":"2018-11-16T09:56:56+01:00", + "state":"canceled" + }, + {"id":620, + "currency":"btc", + "amount":"0.0099", + "fee":"0.0", + "txid":"5613f03267d352d6cd19be282424b8a55d0f1d4f15c4598da66e68117c352821", + "created_at":"2018-11-12T11:41:22+01:00", + "confirmations":1, + "completed_at":"2018-11-12T11:58:58+01:00", + "state":"submitted" + }, + {"id":612, + "currency":"btc", + "amount":"0.099", + "fee":"0.0", + "txid":"eeba72b3c955195b5c1d87656395a30db0690c7817f0a16a09d593b6bfd225f2", + "created_at":"2018-11-07T10:13:19+01:00", + "confirmations":1, + "completed_at":"2018-11-07T10:22:15+01:00", + "state":"rejected" + }, + {"id":607, + "currency":"btc", + "amount":"0.1", + "fee":"0.0", + "txid":"c43cbd2c80dc7aaee932e9d94c7e104c0b9b3861f9b7751d9bce91b1bee272c6", + "created_at":"2018-11-07T09:39:45+01:00", + "confirmations":1, + "completed_at":"2018-11-07T09:41:03+01:00", + "state":"accepted" + }, + {"id":602, + "currency":"btc", + "amount":"0.01", + "fee":"0.0", + "txid":"641218dcf752eb8b44b733b46928cabbfbdf4f2214081d524ce1da2b5b718780", + "created_at":"2018-11-06T19:14:56+01:00", + "confirmations":18, + "completed_at":"2018-11-06T19:14:56+01:00", + "state":"collected" + }, + {"id":593, + "currency":"btc", + "amount":"0.001", + "fee":"0.0", + "txid":"dd5024e99c92aaa8787ed8273c8a6b635388eb4624d9cc1f8e04313dce843180", + "created_at":"2018-11-16T09:56:38+01:00", + "confirmations":0, + "completed_at":"2018-11-16T09:56:56+01:00", + "state":"canceled" + }, + {"id":520, + "currency":"btc", + "amount":"0.0099", + "fee":"0.0", + "txid":"5613f03267d352d6cd19be282424b8a55d0f1d4f15c4598da66e68117c352821", + "created_at":"2018-11-12T11:41:22+01:00", + "confirmations":1, + "completed_at":"2018-11-12T11:58:58+01:00", + "state":"submitted" + }, + {"id":512, + "currency":"btc", + "amount":"0.099", + "fee":"0.0", + "txid":"eeba72b3c955195b5c1d87656395a30db0690c7817f0a16a09d593b6bfd225f2", + "created_at":"2018-11-07T10:13:19+01:00", + "confirmations":1, + "completed_at":"2018-11-07T10:22:15+01:00", + "state":"rejected" + }, + {"id":507, + "currency":"btc", + "amount":"0.1", + "fee":"0.0", + "txid":"c43cbd2c80dc7aaee932e9d94c7e104c0b9b3861f9b7751d9bce91b1bee272c6", + "created_at":"2018-11-07T09:39:45+01:00", + "confirmations":1, + "completed_at":"2018-11-07T09:41:03+01:00", + "state":"accepted" + }, + {"id":502, + "currency":"btc", + "amount":"0.01", + "fee":"0.0", + "txid":"641218dcf752eb8b44b733b46928cabbfbdf4f2214081d524ce1da2b5b718780", + "created_at":"2018-11-06T19:14:56+01:00", + "confirmations":18, + "completed_at":"2018-11-06T19:14:56+01:00", + "state":"collected" + }, + { + "id":493, + "currency":"btc", + "amount":"0.001", + "fee":"0.0", + "txid":"dd5024e99c92aaa8787ed8273c8a6b635388eb4624d9cc1f8e04313dce843180", + "created_at":"2018-11-16T09:56:38+01:00", + "confirmations":0, + "completed_at":"2018-11-16T09:56:56+01:00", + "state":"canceled" + }, + {"id":420, + "currency":"btc", + "amount":"0.0099", + "fee":"0.0", + "txid":"5613f03267d352d6cd19be282424b8a55d0f1d4f15c4598da66e68117c352821", + "created_at":"2018-11-12T11:41:22+01:00", + "confirmations":1, + "completed_at":"2018-11-12T11:58:58+01:00", + "state":"submitted" + }, + {"id":412, + "currency":"btc", + "amount":"0.099", + "fee":"0.0", + "txid":"eeba72b3c955195b5c1d87656395a30db0690c7817f0a16a09d593b6bfd225f2", + "created_at":"2018-11-07T10:13:19+01:00", + "confirmations":1, + "completed_at":"2018-11-07T10:22:15+01:00", + "state":"rejected" + }, + {"id":407, + "currency":"btc", + "amount":"0.1", + "fee":"0.0", + "txid":"c43cbd2c80dc7aaee932e9d94c7e104c0b9b3861f9b7751d9bce91b1bee272c6", + "created_at":"2018-11-07T09:39:45+01:00", + "confirmations":1, + "completed_at":"2018-11-07T09:41:03+01:00", + "state":"accepted" + } + +] \ No newline at end of file diff --git a/mocks/api/v2/dena/account/deposits/GET--page=2&limit=25.mock b/mocks/api/v2/dena/account/deposits/GET--page=2&limit=25.mock new file mode 100644 index 0000000..640da8b --- /dev/null +++ b/mocks/api/v2/dena/account/deposits/GET--page=2&limit=25.mock @@ -0,0 +1,41 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Expose-Headers: total +Total: 28 + +[ + {"id":566, + "currency":"btc", + "amount":"0.99", + "fee":"0.0", + "txid":"4516e174e7f04fafd14026c22d2bc288695aaa96f4b44518aa86ac7e27fc2458", + "created_at":"2018-12-03T17:13:58+01:00", + "confirmations":1, + "completed_at":"2018-12-03T17:14:56+01:00", + "state":"accepted" + }, + {"id":393, + "currency":"btc", + "amount":"0.001", + "fee":"0.0", + "txid":"dd5024e99c92aaa8787ed8273c8a6b635388eb4624d9cc1f8e04313dce843180", + "created_at":"2018-11-16T09:56:38+01:00", + "confirmations":0, + "completed_at":"2018-11-16T09:56:56+01:00", + "state":"canceled" + }, + {"id":320, + "currency":"btc", + "amount":"0.0099", + "fee":"0.0", + "txid":"5613f03267d352d6cd19be282424b8a55d0f1d4f15c4598da66e68117c352821", + "created_at":"2018-11-12T11:41:22+01:00", + "confirmations":1, + "completed_at":"2018-11-12T11:58:58+01:00", + "state":"submitted" + } +] \ No newline at end of file diff --git a/mocks/api/v2/dena/account/deposits/GET.mock b/mocks/api/v2/dena/account/deposits/GET.mock new file mode 100644 index 0000000..5aabf41 --- /dev/null +++ b/mocks/api/v2/dena/account/deposits/GET.mock @@ -0,0 +1,319 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":566, + "currency":"ltc", + "amount":"0.99", + "fee":"0.0", + "txid":"4516e174e7f04fafd14026c22d2bc288695aaa96f4b44518aa86ac7e27fc2458", + "created_at":"2018-12-03T17:13:58+01:00", + "confirmations":1, + "completed_at":"2018-12-03T17:14:56+01:00", + "state":"accepted" + }, + {"id":393, + "currency":"btc", + "amount":"0.001", + "fee":"0.0", + "txid":"dd5024e99c92aaa8787ed8273c8a6b635388eb4624d9cc1f8e04313dce843180", + "created_at":"2018-11-16T09:56:38+01:00", + "confirmations":0, + "completed_at":"2018-11-16T09:56:56+01:00", + "state":"accepted" + }, + {"id":320, + "currency":"btc", + "amount":"0.0099", + "fee":"0.0", + "txid":"5613f03267d352d6cd19be282424b8a55d0f1d4f15c4598da66e68117c352821", + "created_at":"2018-11-12T11:41:22+01:00", + "confirmations":1, + "completed_at":"2018-11-12T11:58:58+01:00", + "state":"accepted" + }, + {"id":312, + "currency":"bch", + "amount":"0.099", + "fee":"0.0", + "txid":"eeba72b3c955195b5c1d87656395a30db0690c7817f0a16a09d593b6bfd225f2", + "created_at":"2018-11-07T10:13:19+01:00", + "confirmations":1, + "completed_at":"2018-11-07T10:22:15+01:00", + "state":"accepted" + }, + {"id":307, + "currency":"btc", + "amount":"0.1", + "fee":"0.0", + "txid":"c43cbd2c80dc7aaee932e9d94c7e104c0b9b3861f9b7751d9bce91b1bee272c6", + "created_at":"2018-11-07T09:39:45+01:00", + "confirmations":1, + "completed_at":"2018-11-07T09:41:03+01:00", + "state":"accepted" + }, + {"id":302, + "currency":"btc", + "amount":"0.01", + "fee":"0.0", + "txid":"641218dcf752eb8b44b733b46928cabbfbdf4f2214081d524ce1da2b5b718780", + "created_at":"2018-11-06T19:14:56+01:00", + "confirmations":18, + "completed_at":"2018-11-06T19:14:56+01:00", + "state":"accepted" + }, + {"id":301, + "currency":"btc", + "amount":"0.0999", + "fee":"0.0", + "txid":"975e84dac56b454d603e17c83b01223e8c48ad356427ae8a1dbc027fd6883f95", + "created_at":"2018-11-06T19:01:36+01:00", + "confirmations":25, + "completed_at":"2018-11-06T19:01:36+01:00", + "state":"accepted" + }, + {"id":300, + "currency":"btc", + "amount":"0.0999", + "fee":"0.0", + "txid":"b2f3fc20db5e798a44ee224eadda33dc318fa7d4af26ca989e163f3490424d71", + "created_at":"2018-11-06T18:42:56+01:00", + "confirmations":30, + "completed_at":"2018-11-06T18:42:56+01:00", + "state":"accepted" + }, + {"id":298, + "currency":"btc", + "amount":"0.0999", + "fee":"0.0", + "txid":"dd7af9d9697c33d0bd98b888e5133ee82d41ca5a66e275503f8efce2ca697874", + "created_at":"2018-11-06T13:44:29+01:00", + "confirmations":9, + "completed_at":"2018-11-06T13:44:29+01:00", + "state":"accepted" + }, + {"id":296, + "currency":"btc", + "amount":"0.1999", + "fee":"0.0", + "txid":"159604e1faaec0b6b995c16c89b92b032a1cedcac461df015ae0a82ffa54450e", + "created_at":"2018-11-06T13:36:36+01:00", + "confirmations":4, + "completed_at":"2018-11-06T13:36:36+01:00", + "state":"accepted" + }, + {"id":295, + "currency":"xrp", + "amount":"10.0", + "fee":"0.0", + "txid":"C1048CA66A1DC0E9CA98C2D7E67367DD9A522AB9F9A51D3D3013797387E8662A", + "created_at":"2018-11-06T12:32:24+01:00", + "confirmations":29876, + "completed_at":"2018-11-06T12:32:24+01:00", + "state":"accepted" + }, + {"id":294, + "currency":"ltc", + "amount":"0.01", + "fee":"0.0", + "txid":"4c717b1063b3b8fe5606a5ae9976e45bb56edc63105608d4e5bc9e3896668d7d", + "created_at":"2018-11-06T12:31:00+01:00", + "confirmations":1953, + "completed_at":"2018-11-06T12:31:00+01:00", + "state":"accepted" + }, + {"id":293, + "currency":"btc", + "amount":"0.001", + "fee":"0.0", + "txid":"d7b5dbf9411069acb27710c9c1b9003f31a458d7164c33f6b48ac596e2775164", + "created_at":"2018-11-06T12:30:21+01:00", + "confirmations":164, + "completed_at":"2018-11-06T12:30:21+01:00", + "state":"accepted" + }, + {"id":292, + "currency":"bch", + "amount":"0.01", + "fee":"0.0", + "txid":"74dc8c8c081655076fa065a944af3bb83b9f5c857f39733eafb090120f8ce96f", + "created_at":"2018-11-06T12:29:53+01:00", + "confirmations":190, + "completed_at":"2018-11-06T12:29:53+01:00", + "state":"accepted" + }, + {"id":291, + "currency":"btc", + "amount":"0.001", + "fee":"0.0", + "txid":"cb24ca2d7467962f2ca757f7bf2a10145f9422b2102838d0a7c10fca440b843d", + "created_at":"2018-11-06T12:16:43+01:00", + "confirmations":169, + "completed_at":"2018-11-06T12:16:43+01:00", + "state":"accepted" + }, + {"id":290, + "currency":"xrp", + "amount":"10.0", + "fee":"0.0", + "txid":"FD951D1670F6BBD9A80001DB0C11220303C4F597F92348B485949C7E2CB887DD", + "created_at":"2018-11-06T12:16:26+01:00", + "confirmations":30858, + "completed_at":"2018-11-06T12:16:26+01:00", + "state":"accepted" + }, + {"id":289, + "currency":"ltc", + "amount":"1.0", + "fee":"0.0", + "txid":"68e0f849e74f68585963a41b46ca046773561924def4191bbde9c478dba5aaaf", + "created_at":"2018-11-06T12:15:45+01:00", + "confirmations":1959, + "completed_at":"2018-11-06T12:15:45+01:00", + "state":"accepted" + }, + {"id":288, + "currency":"bch", + "amount":"0.01", + "fee":"0.0", + "txid":"e7251dbd4f7471dae8d1225896c182749f26e224aa546b65c3ea26debfe10fab", + "created_at":"2018-11-06T12:15:31+01:00", + "confirmations":194, + "completed_at":"2018-11-06T12:15:32+01:00", + "state":"accepted" + }, + {"id":286, + "currency":"eth", + "amount":"0.5", + "fee":"0.0", + "txid":"0x27fb4b9376e59d72de5babb89e17515193c1bf50344b6cde48b5dbe1b554c608", + "created_at":"2018-11-01T09:58:49+01:00", + "confirmations":1, + "completed_at":"2018-11-01T09:58:49+01:00", + "state":"accepted" + }, + {"id":280, + "currency":"btc", + "amount":"0.18423", + "fee":"0.0", + "txid":"2a4b2fb2e9731601f7b66997b768cafc60fe863cb042334025eaa882ac002e65", + "created_at":"2018-10-26T15:00:12+02:00", + "confirmations":1, + "completed_at":"2018-10-26T15:08:11+02:00", + "state":"accepted" + }, + {"id":223, + "currency":"eth", + "amount":"1.0", + "fee":"0.0", + "txid":"0xdbc99c7be09ae1ea6252c19d4adff825c2d6b101e286316a67823967374cc1d4", + "created_at":"2018-10-19T14:27:02+02:00", + "confirmations":2, + "completed_at":"2018-10-19T14:27:02+02:00", + "state":"accepted" + }, + {"id":196, + "currency":"btc", + "amount":"0.0999", + "fee":"0.0", + "txid":"0aae16ca6c1178a9aa58e615bb82f205e1881cff8d2727c07787a3b202bf45ea", + "created_at":"2018-10-08T14:22:29+02:00", + "confirmations":1, + "completed_at":"2018-10-08T14:24:02+02:00", + "state":"accepted" + }, + {"id":195, + "currency":"btc", + "amount":"0.4999", + "fee":"0.0", + "txid":"347d340c3647acd3b6d7e85ac0db774b14572bd0718a3750f629419fce1dd8ee", + "created_at":"2018-10-08T14:19:18+02:00", + "confirmations":1, + "completed_at":"2018-10-08T14:24:02+02:00", + "state":"accepted" + }, + {"id":194, + "currency":"btc", + "amount":"0.2999", + "fee":"0.0", + "txid":"1955959aec4fd4cf785616645c67cfeaa29e7bb613c8f456b2ffb245aa665875", + "created_at":"2018-10-08T13:47:46+02:00", + "confirmations":1, + "completed_at":"2018-10-08T13:58:00+02:00", + "state":"accepted" + }, + {"id":184, + "currency":"btc", + "amount":"0.1", + "fee":"0.0", + "txid":"44005356668028e95333db79638b1c98fad165f897179d5f8a3acae0c91a12dc", + "created_at":"2018-09-17T11:48:47+02:00", + "confirmations":1, + "completed_at":"2018-09-17T12:08:09+02:00", + "state":"accepted" + }, + {"id":183, + "currency":"btc", + "amount":"0.06", + "fee":"0.0", + "txid":"dea0aa02cc0f574422123f1afbb9033c813ae9383f62a2cfe2f09c49b8df6ac0", + "created_at":"2018-09-17T11:16:47+02:00", + "confirmations":1, + "completed_at":"2018-09-17T11:27:53+02:00", + "state":"accepted" + }, + {"id":161, + "currency":"btc", + "amount":"0.001", + "fee":"0.0", + "txid":"85d34da5a2a518aa2df78d3d6ae209159f19fe3abc38c93959609892bf7057c7", + "created_at":"2018-08-29T21:39:54+02:00", + "confirmations":2, + "completed_at":"2018-08-29T21:39:59+02:00", + "state":"accepted" + }, + {"id":160, + "currency":"btc", + "amount":"0.001", + "fee":"0.0", + "txid":"bb667038bd91123385a54283a32b3312092b5547e54bbd54ecdb104e54a1d672", + "created_at":"2018-08-29T21:38:27+02:00", + "confirmations":3, + "completed_at":"2018-08-29T21:38:27+02:00", + "state":"accepted" + }, + {"id":159, + "currency":"btc", + "amount":"0.001", + "fee":"0.0", + "txid":"3e54842b0309d24b4624cf801bf4a1f5d68a74e6b322cc0eaef3379e7b70b99d", + "created_at":"2018-08-29T21:37:40+02:00", + "confirmations":2, + "completed_at":"2018-08-29T21:37:40+02:00", + "state":"accepted" + }, + {"id":155, + "currency":"btc", + "amount":"0.65", + "fee":"0.0", + "txid":"97166b99cf62c69a07d3b60c708dd04356723a6708bd571a36ba5759b09ded62", + "created_at":"2018-08-29T21:29:38+02:00", + "confirmations":3, + "completed_at":"2018-08-29T21:29:38+02:00", + "state":"accepted" + }, + {"id":154, + "currency":"btc", + "amount":"1.3", + "fee":"0.0", + "txid":"10b2818546e1e4c54ca1d38b60e10a2c170d3e2c1d98425e38d902c092ecebbc", + "created_at":"2018-08-29T21:29:19+02:00", + "confirmations":5, + "completed_at":"2018-08-29T21:29:19+02:00", + "state":"accepted" + } +] diff --git a/mocks/api/v2/dena/account/deposits/OPTIONS.mock b/mocks/api/v2/dena/account/deposits/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/account/deposits/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/account/history/GET--currency=btc&sort=date&order=asc&start_date=2019-04-01&end_date=2019-04-08.mock b/mocks/api/v2/dena/account/history/GET--currency=btc&sort=date&order=asc&start_date=2019-04-01&end_date=2019-04-08.mock new file mode 100644 index 0000000..98efbb2 --- /dev/null +++ b/mocks/api/v2/dena/account/history/GET--currency=btc&sort=date&order=asc&start_date=2019-04-01&end_date=2019-04-08.mock @@ -0,0 +1,165 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Mzarods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Expose-Headers: total +Total: 9 + +[ + { + "id":3, + "created_at":"2019-06-18T23:16:36+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":5, + "created_at":"2019-08-06T02:47:36+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":4, + "created_at":"2019-06-21T10:18:27+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":1, + "created_at":"2019-04-30T13:22:40+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":2, + "created_at":"2019-05-28T00:06:37+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":9, + "created_at":"2019-12-18T23:00:45+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":6, + "created_at":"2019-08-08T18:59:22+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":7, + "created_at":"2019-09-26T14:20:26+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":8, + "created_at":"2019-12-09T12:39:28+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":9, + "created_at":"2019-12-18T23:00:45+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":10, + "created_at":"2019-12-23T17:54:35+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + } +] diff --git a/mocks/api/v2/dena/account/history/GET--currency=btc&sort=date&order=asc.mock b/mocks/api/v2/dena/account/history/GET--currency=btc&sort=date&order=asc.mock new file mode 100644 index 0000000..e8d63dd --- /dev/null +++ b/mocks/api/v2/dena/account/history/GET--currency=btc&sort=date&order=asc.mock @@ -0,0 +1,151 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Mzarods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Expose-Headers: total +Total: 9 + +[ + { + "id":1, + "created_at":"2019-04-30T13:22:40+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":2, + "created_at":"2019-05-28T00:06:37+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":3, + "created_at":"2019-06-18T23:16:36+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":4, + "created_at":"2019-06-21T10:18:27+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":5, + "created_at":"2019-08-06T02:47:36+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":6, + "created_at":"2019-08-08T18:59:22+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":7, + "created_at":"2019-09-26T14:20:26+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":8, + "created_at":"2019-12-09T12:39:28+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":9, + "created_at":"2019-12-18T23:00:45+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":10, + "created_at":"2019-12-23T17:54:35+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + } +] diff --git a/mocks/api/v2/dena/account/history/GET--currency=btc&sort=date&order=desc&start_date=2019-04-01&end_date=2019-04-08.mock b/mocks/api/v2/dena/account/history/GET--currency=btc&sort=date&order=desc&start_date=2019-04-01&end_date=2019-04-08.mock new file mode 100644 index 0000000..ab4e226 --- /dev/null +++ b/mocks/api/v2/dena/account/history/GET--currency=btc&sort=date&order=desc&start_date=2019-04-01&end_date=2019-04-08.mock @@ -0,0 +1,151 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Mzarods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Expose-Headers: total +Total: 9 + +[ + { + "id":6, + "created_at":"2019-08-08T18:59:22+01:00", + "side":"", + "type":"Withdraw", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":5, + "created_at":"2019-08-06T02:47:36+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":2, + "created_at":"2019-05-28T00:06:37+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":1, + "created_at":"2019-04-30T13:22:40+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":3, + "created_at":"2019-06-18T23:16:36+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":4, + "created_at":"2019-06-21T10:18:27+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":7, + "created_at":"2019-09-26T14:20:26+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":8, + "created_at":"2019-12-09T12:39:28+01:00", + "side":"", + "type":"Withdraw", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":9, + "created_at":"2019-12-18T23:00:45+01:00", + "side":"", + "type":"Withdraw", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":10, + "created_at":"2019-12-23T17:54:35+01:00", + "side":"", + "type":"Withdraw", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + } +] diff --git a/mocks/api/v2/dena/account/history/GET--currency=btc&sort=date&order=desc.mock b/mocks/api/v2/dena/account/history/GET--currency=btc&sort=date&order=desc.mock new file mode 100644 index 0000000..2faf21e --- /dev/null +++ b/mocks/api/v2/dena/account/history/GET--currency=btc&sort=date&order=desc.mock @@ -0,0 +1,151 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Mzarods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Expose-Headers: total +Total: 9 + +[ + { + "id":10, + "created_at":"2019-12-23T17:54:35+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":9, + "created_at":"2019-12-18T23:00:45+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":8, + "created_at":"2019-12-09T12:39:28+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":7, + "created_at":"2019-09-26T14:20:26+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":6, + "created_at":"2019-08-08T18:59:22+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":5, + "created_at":"2019-08-06T02:47:36+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":4, + "created_at":"2019-06-21T10:18:27+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":3, + "created_at":"2019-06-18T23:16:36+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":2, + "created_at":"2019-05-28T00:06:37+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":1, + "created_at":"2019-04-30T13:22:40+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + } +] diff --git a/mocks/api/v2/dena/account/history/GET--filter=deposit+withdraw¤cy=btc&sort=date&order=asc&start_date=2019-04-01&end_date=2019-04-08.mock b/mocks/api/v2/dena/account/history/GET--filter=deposit+withdraw¤cy=btc&sort=date&order=asc&start_date=2019-04-01&end_date=2019-04-08.mock new file mode 100644 index 0000000..da3ead1 --- /dev/null +++ b/mocks/api/v2/dena/account/history/GET--filter=deposit+withdraw¤cy=btc&sort=date&order=asc&start_date=2019-04-01&end_date=2019-04-08.mock @@ -0,0 +1,151 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Mzarods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Expose-Headers: total +Total: 9 + +[ + { + "id":9, + "created_at":"2019-12-18T23:00:45+01:00", + "side":"", + "type":"Withdraw", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":5, + "created_at":"2019-08-06T02:47:36+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":2, + "created_at":"2019-05-28T00:06:37+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":6, + "created_at":"2019-08-08T18:59:22+01:00", + "side":"", + "type":"Withdraw", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":1, + "created_at":"2019-04-30T13:22:40+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":3, + "created_at":"2019-06-18T23:16:36+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":4, + "created_at":"2019-06-21T10:18:27+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":7, + "created_at":"2019-09-26T14:20:26+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":8, + "created_at":"2019-12-09T12:39:28+01:00", + "side":"", + "type":"Withdraw", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":10, + "created_at":"2019-12-23T17:54:35+01:00", + "side":"", + "type":"Withdraw", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + } +] diff --git a/mocks/api/v2/dena/account/history/GET--filter=deposit+withdraw¤cy=btc&sort=date&order=asc.mock b/mocks/api/v2/dena/account/history/GET--filter=deposit+withdraw¤cy=btc&sort=date&order=asc.mock new file mode 100644 index 0000000..8c4a1ab --- /dev/null +++ b/mocks/api/v2/dena/account/history/GET--filter=deposit+withdraw¤cy=btc&sort=date&order=asc.mock @@ -0,0 +1,151 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Mzarods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Expose-Headers: total +Total: 9 + +[ + { + "id":1, + "created_at":"2019-04-30T13:22:40+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":2, + "created_at":"2019-05-28T00:06:37+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":3, + "created_at":"2019-06-18T23:16:36+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":4, + "created_at":"2019-06-21T10:18:27+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":5, + "created_at":"2019-08-06T02:47:36+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":6, + "created_at":"2019-08-08T18:59:22+01:00", + "side":"", + "type":"Withdraw", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":7, + "created_at":"2019-09-26T14:20:26+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":8, + "created_at":"2019-12-09T12:39:28+01:00", + "side":"", + "type":"Withdraw", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":9, + "created_at":"2019-12-18T23:00:45+01:00", + "side":"", + "type":"Withdraw", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":10, + "created_at":"2019-12-23T17:54:35+01:00", + "side":"", + "type":"Withdraw", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + } +] diff --git a/mocks/api/v2/dena/account/history/GET--filter=deposit+withdraw¤cy=btc&sort=date&order=desc&start_date=2019-04-01&end_date=2019-04-08.mock b/mocks/api/v2/dena/account/history/GET--filter=deposit+withdraw¤cy=btc&sort=date&order=desc&start_date=2019-04-01&end_date=2019-04-08.mock new file mode 100644 index 0000000..ab4e226 --- /dev/null +++ b/mocks/api/v2/dena/account/history/GET--filter=deposit+withdraw¤cy=btc&sort=date&order=desc&start_date=2019-04-01&end_date=2019-04-08.mock @@ -0,0 +1,151 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Mzarods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Expose-Headers: total +Total: 9 + +[ + { + "id":6, + "created_at":"2019-08-08T18:59:22+01:00", + "side":"", + "type":"Withdraw", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":5, + "created_at":"2019-08-06T02:47:36+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":2, + "created_at":"2019-05-28T00:06:37+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":1, + "created_at":"2019-04-30T13:22:40+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":3, + "created_at":"2019-06-18T23:16:36+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":4, + "created_at":"2019-06-21T10:18:27+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":7, + "created_at":"2019-09-26T14:20:26+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":8, + "created_at":"2019-12-09T12:39:28+01:00", + "side":"", + "type":"Withdraw", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":9, + "created_at":"2019-12-18T23:00:45+01:00", + "side":"", + "type":"Withdraw", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":10, + "created_at":"2019-12-23T17:54:35+01:00", + "side":"", + "type":"Withdraw", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + } +] diff --git a/mocks/api/v2/dena/account/history/GET--filter=deposit+withdraw¤cy=btc&sort=date&order=desc.mock b/mocks/api/v2/dena/account/history/GET--filter=deposit+withdraw¤cy=btc&sort=date&order=desc.mock new file mode 100644 index 0000000..c3ef911 --- /dev/null +++ b/mocks/api/v2/dena/account/history/GET--filter=deposit+withdraw¤cy=btc&sort=date&order=desc.mock @@ -0,0 +1,151 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Mzarods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Expose-Headers: total +Total: 9 + +[ + { + "id":10, + "created_at":"2019-04-30T13:22:40+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":9, + "created_at":"2019-05-28T00:06:37+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":8, + "created_at":"2019-06-18T23:16:36+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":7, + "created_at":"2019-06-21T10:18:27+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":6, + "created_at":"2019-08-06T02:47:36+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":5, + "created_at":"2019-08-08T18:59:22+01:00", + "side":"", + "type":"Withdraw", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":4, + "created_at":"2019-09-26T14:20:26+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":3, + "created_at":"2019-12-09T12:39:28+01:00", + "side":"", + "type":"Withdraw", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":2, + "created_at":"2019-12-18T23:00:45+01:00", + "side":"", + "type":"Withdraw", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":1, + "created_at":"2019-12-23T17:54:35+01:00", + "side":"", + "type":"Withdraw", + "market":"", + "price":"", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + } +] diff --git a/mocks/api/v2/dena/account/history/GET--filter=trade¤cy=btc&sort=date&order=asc&start_date=2019-04-01&end_date=2019-04-08.mock b/mocks/api/v2/dena/account/history/GET--filter=trade¤cy=btc&sort=date&order=asc&start_date=2019-04-01&end_date=2019-04-08.mock new file mode 100644 index 0000000..98efbb2 --- /dev/null +++ b/mocks/api/v2/dena/account/history/GET--filter=trade¤cy=btc&sort=date&order=asc&start_date=2019-04-01&end_date=2019-04-08.mock @@ -0,0 +1,165 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Mzarods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Expose-Headers: total +Total: 9 + +[ + { + "id":3, + "created_at":"2019-06-18T23:16:36+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":5, + "created_at":"2019-08-06T02:47:36+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":4, + "created_at":"2019-06-21T10:18:27+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":1, + "created_at":"2019-04-30T13:22:40+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":2, + "created_at":"2019-05-28T00:06:37+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":9, + "created_at":"2019-12-18T23:00:45+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":6, + "created_at":"2019-08-08T18:59:22+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":7, + "created_at":"2019-09-26T14:20:26+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":8, + "created_at":"2019-12-09T12:39:28+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":9, + "created_at":"2019-12-18T23:00:45+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":10, + "created_at":"2019-12-23T17:54:35+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + } +] diff --git a/mocks/api/v2/dena/account/history/GET--filter=trade¤cy=btc&sort=date&order=asc.mock b/mocks/api/v2/dena/account/history/GET--filter=trade¤cy=btc&sort=date&order=asc.mock new file mode 100644 index 0000000..0dbfac9 --- /dev/null +++ b/mocks/api/v2/dena/account/history/GET--filter=trade¤cy=btc&sort=date&order=asc.mock @@ -0,0 +1,151 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Mzarods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Expose-Headers: total +Total: 9 + +[ + { + "id":1, + "created_at":"2019-04-30T13:22:40+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":2, + "created_at":"2019-05-28T00:06:37+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":3, + "created_at":"2019-06-18T23:16:36+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":4, + "created_at":"2019-06-21T10:18:27+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":5, + "created_at":"2019-08-06T02:47:36+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":6, + "created_at":"2019-08-08T18:59:22+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":7, + "created_at":"2019-09-26T14:20:26+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":8, + "created_at":"2019-12-09T12:39:28+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":9, + "created_at":"2019-12-18T23:00:45+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":10, + "created_at":"2019-12-23T17:54:35+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + } +] diff --git a/mocks/api/v2/dena/account/history/GET--filter=trade¤cy=btc&sort=date&order=desc&start_date=2019-04-01&end_date=2019-04-08.mock b/mocks/api/v2/dena/account/history/GET--filter=trade¤cy=btc&sort=date&order=desc&start_date=2019-04-01&end_date=2019-04-08.mock new file mode 100644 index 0000000..e6b428d --- /dev/null +++ b/mocks/api/v2/dena/account/history/GET--filter=trade¤cy=btc&sort=date&order=desc&start_date=2019-04-01&end_date=2019-04-08.mock @@ -0,0 +1,165 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Mzarods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Expose-Headers: total +Total: 9 + +[ + { + "id":4, + "created_at":"2019-06-21T10:18:27+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":1, + "created_at":"2019-04-30T13:22:40+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":2, + "created_at":"2019-05-28T00:06:37+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":5, + "created_at":"2019-08-06T02:47:36+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":9, + "created_at":"2019-12-18T23:00:45+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":3, + "created_at":"2019-06-18T23:16:36+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":6, + "created_at":"2019-08-08T18:59:22+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":7, + "created_at":"2019-09-26T14:20:26+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":8, + "created_at":"2019-12-09T12:39:28+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":9, + "created_at":"2019-12-18T23:00:45+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":10, + "created_at":"2019-12-23T17:54:35+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + } +] diff --git a/mocks/api/v2/dena/account/history/GET--filter=trade¤cy=btc&sort=date&order=desc.mock b/mocks/api/v2/dena/account/history/GET--filter=trade¤cy=btc&sort=date&order=desc.mock new file mode 100644 index 0000000..20db35f --- /dev/null +++ b/mocks/api/v2/dena/account/history/GET--filter=trade¤cy=btc&sort=date&order=desc.mock @@ -0,0 +1,151 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Mzarods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Expose-Headers: total +Total: 9 + +[ + { + "id":10, + "created_at":"2019-04-30T13:22:40+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":9, + "created_at":"2019-05-28T00:06:37+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":8, + "created_at":"2019-06-18T23:16:36+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":7, + "created_at":"2019-06-21T10:18:27+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":6, + "created_at":"2019-08-06T02:47:36+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":5, + "created_at":"2019-08-08T18:59:22+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":4, + "created_at":"2019-09-26T14:20:26+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":3, + "created_at":"2019-12-09T12:39:28+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":2, + "created_at":"2019-12-18T23:00:45+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":1, + "created_at":"2019-12-23T17:54:35+01:00", + "side":"ask", + "type":"Trade", + "market":"bchzar", + "price":0.2, + "amount":0.001, + "currency":"bch", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + } +] diff --git a/mocks/api/v2/dena/account/history/GET--limit=5¤cy=btc&sort=date&order=asc.mock b/mocks/api/v2/dena/account/history/GET--limit=5¤cy=btc&sort=date&order=asc.mock new file mode 100644 index 0000000..2fcaf91 --- /dev/null +++ b/mocks/api/v2/dena/account/history/GET--limit=5¤cy=btc&sort=date&order=asc.mock @@ -0,0 +1,81 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Mzarods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Expose-Headers: total +Total: 9 + +[ + { + "id":1, + "created_at":"2019-04-30T13:22:40+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":2, + "created_at":"2019-05-28T00:06:37+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":3, + "created_at":"2019-06-18T23:16:36+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":4, + "created_at":"2019-06-21T10:18:27+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":5, + "created_at":"2019-08-06T02:47:36+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + } +] diff --git a/mocks/api/v2/dena/account/history/GET--limit=5¤cy=btc&sort=date&order=desc.mock b/mocks/api/v2/dena/account/history/GET--limit=5¤cy=btc&sort=date&order=desc.mock new file mode 100644 index 0000000..38e5d82 --- /dev/null +++ b/mocks/api/v2/dena/account/history/GET--limit=5¤cy=btc&sort=date&order=desc.mock @@ -0,0 +1,81 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Mzarods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Expose-Headers: total +Total: 9 + +[ + { + "id":5, + "created_at":"2019-08-06T02:47:36+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":4, + "created_at":"2019-06-21T10:18:27+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":3, + "created_at":"2019-06-18T23:16:36+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":2, + "created_at":"2019-05-28T00:06:37+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + }, + { + "id":1, + "created_at":"2019-04-30T13:22:40+01:00", + "side":"ask", + "type":"Deposit", + "market":"bchzar", + "price":"0.2", + "amount":0.001, + "currency":"zar", + "rid":"", + "state":"canceled", + "fee":1.0, + "txid":"" + } +] diff --git a/mocks/api/v2/dena/account/history/GET.mock b/mocks/api/v2/dena/account/history/GET.mock new file mode 100644 index 0000000..99da4e8 --- /dev/null +++ b/mocks/api/v2/dena/account/history/GET.mock @@ -0,0 +1,275 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + { + "id":393, + "created_at":"2018-11-16T09:56:56+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":"0.001", + "currency":"btc", + "rid":"5613f03267d352d6cd19be282424b8a55d0f1d4f15c4598da66e68117c352821", + "state":"canceled", + "fee":"1.0", + "txid":"dd5024e99c92aaa8787ed8273c8a6b635388eb4624d9cc1f8e04313dce843180" + }, + { + "id":393, + "created_at":"2018-11-16T09:56:56+01:00", + "side":"ask", + "type":"Trade", + "market":"btczar", + "price":0.2, + "amount":0.001, + "currency":"btc", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":393, + "created_at":"2018-11-16T09:56:56+01:00", + "side":"ask", + "type":"Trade", + "market":"btczar", + "price":0.2, + "amount":0.001, + "currency":"btc", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":393, + "created_at":"2018-11-16T09:56:56+01:00", + "side":"ask", + "type":"Trade", + "market":"btczar", + "price":0.2, + "amount":0.001, + "currency":"btc", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":393, + "created_at":"2018-11-16T09:56:56+01:00", + "side":"ask", + "type":"Trade", + "market":"btczar", + "price":0.2, + "amount":0.001, + "currency":"btc", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":393, + "created_at":"2018-11-16T09:56:56+01:00", + "side":"ask", + "type":"Trade", + "market":"btczar", + "price":0.2, + "amount":0.001, + "currency":"btc", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":393, + "created_at":"2018-11-16T09:56:56+01:00", + "side":"bid", + "type":"Trade", + "market":"btczar", + "price":0.2, + "amount":0.001, + "currency":"btc", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":393, + "created_at":"2018-11-16T09:56:56+01:00", + "side":"bid", + "type":"Trade", + "market":"btczar", + "price":0.2, + "amount":0.001, + "currency":"btc", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":393, + "created_at":"2018-11-16T09:56:56+01:00", + "side":"bid", + "type":"Trade", + "market":"btczar", + "price":0.2, + "amount":0.001, + "currency":"btc", + "rid":"", + "state":"", + "fee":1.0, + "txid":"" + }, + { + "id":393, + "created_at":"2018-11-16T09:56:56+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"btc", + "rid":"5613f03267d352d6cd19be282424b8a55d0f1d4f15c4598da66e68117c352821", + "state":"canceled", + "fee":1.0, + "txid":"dd5024e99c92aaa8787ed8273c8a6b635388eb4624d9cc1f8e04313dce843180" + }, + { + "id":393, + "created_at":"2018-11-16T09:56:56+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"btc", + "rid":"5613f03267d352d6cd19be282424b8a55d0f1d4f15c4598da66e68117c352821", + "state":"canceled", + "fee":1.0, + "txid":"dd5024e99c92aaa8787ed8273c8a6b635388eb4624d9cc1f8e04313dce843180" + }, + { + "id":393, + "created_at":"2018-11-16T09:56:56+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"btc", + "rid":"5613f03267d352d6cd19be282424b8a55d0f1d4f15c4598da66e68117c352821", + "state":"canceled", + "fee":1.0, + "txid":"dd5024e99c92aaa8787ed8273c8a6b635388eb4624d9cc1f8e04313dce843180" + }, + { + "id":393, + "created_at":"2018-11-16T09:56:56+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"btc", + "rid":"5613f03267d352d6cd19be282424b8a55d0f1d4f15c4598da66e68117c352821", + "state":"canceled", + "fee":1.0, + "txid":"dd5024e99c92aaa8787ed8273c8a6b635388eb4624d9cc1f8e04313dce843180" + }, + { + "id":393, + "created_at":"2018-11-16T09:56:56+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"btc", + "rid":"5613f03267d352d6cd19be282424b8a55d0f1d4f15c4598da66e68117c352821", + "state":"canceled", + "fee":1.0, + "txid":"dd5024e99c92aaa8787ed8273c8a6b635388eb4624d9cc1f8e04313dce843180" + }, + { + "id":393, + "created_at":"2018-11-16T09:56:56+01:00", + "side":"", + "type":"Withdraw", + "market":"", + "price":"", + "amount":0.001, + "currency":"btc", + "rid":"5613f03267d352d6cd19be282424b8a55d0f1d4f15c4598da66e68117c352821", + "state":"canceled", + "fee":1.0, + "txid":"dd5024e99c92aaa8787ed8273c8a6b635388eb4624d9cc1f8e04313dce843180" + }, + { + "id":393, + "created_at":"2018-11-16T09:56:56+01:00", + "side":"", + "type":"Deposit", + "market":"", + "price":"", + "amount":0.001, + "currency":"btc", + "rid":"5613f03267d352d6cd19be282424b8a55d0f1d4f15c4598da66e68117c352821", + "state":"canceled", + "fee":1.0, + "txid":"dd5024e99c92aaa8787ed8273c8a6b635388eb4624d9cc1f8e04313dce843180" + }, + { + "id":393, + "created_at":"2018-11-16T09:56:56+01:00", + "side":"", + "type":"Withdraw", + "market":"", + "price":"", + "amount":0.001, + "currency":"btc", + "rid":"5613f03267d352d6cd19be282424b8a55d0f1d4f15c4598da66e68117c352821", + "state":"canceled", + "fee":1.0, + "txid":"dd5024e99c92aaa8787ed8273c8a6b635388eb4624d9cc1f8e04313dce843180" + }, + { + "id":393, + "created_at":"2018-11-16T09:56:56+01:00", + "side":"", + "type":"Withdraw", + "market":"", + "price":"", + "amount":0.001, + "currency":"btc", + "rid":"5613f03267d352d6cd19be282424b8a55d0f1d4f15c4598da66e68117c352821", + "state":"canceled", + "fee":1.0, + "txid":"dd5024e99c92aaa8787ed8273c8a6b635388eb4624d9cc1f8e04313dce843180" + }, + { + "id":393, + "created_at":"2018-11-16T09:56:56+01:00", + "side":"", + "type":"Withdraw", + "market":"", + "price":"", + "amount":0.001, + "currency":"btc", + "rid":"5613f03267d352d6cd19be282424b8a55d0f1d4f15c4598da66e68117c352821", + "state":"canceled", + "fee":1.0, + "txid":"dd5024e99c92aaa8787ed8273c8a6b635388eb4624d9cc1f8e04313dce843180" + } +] diff --git a/mocks/api/v2/dena/account/history/OPTIONS.mock b/mocks/api/v2/dena/account/history/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/account/history/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/account/levels/GET.mock b/mocks/api/v2/dena/account/levels/GET.mock new file mode 100644 index 0000000..0d10808 --- /dev/null +++ b/mocks/api/v2/dena/account/levels/GET.mock @@ -0,0 +1,11 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +{ + "current":{"name":"vip-0","max":100000,"min":0,"maker_fee":"0.003","taker_fee":"0.0035"}, + "next":{"name":"vip-1","max":500000,"min":100000,"maker_fee":"0.0025","taker_fee":"0.003"} +} diff --git a/mocks/api/v2/dena/account/levels/OPTIONS.mock b/mocks/api/v2/dena/account/levels/OPTIONS.mock new file mode 100644 index 0000000..4d251ae --- /dev/null +++ b/mocks/api/v2/dena/account/levels/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true \ No newline at end of file diff --git a/mocks/api/v2/dena/account/withdraws/GET--limit=100.mock b/mocks/api/v2/dena/account/withdraws/GET--limit=100.mock new file mode 100644 index 0000000..756c114 --- /dev/null +++ b/mocks/api/v2/dena/account/withdraws/GET--limit=100.mock @@ -0,0 +1,640 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + { + "id":339, + "currency":"ltc", + "type":"coin", + "amount":"1.0", + "fee":"0.001", + "blockchain_txid":"9206d219a8ccfb4fd777e3823283a28e43d5b2d5b3682bcb9b17364299540c03", + "rid":"QVMUpgySfa5rg9Ah6iLtPJQoMPChdse6UH", + "state":"succeed", + "created_at":"2018-12-03T18:03:15+01:00", + "updated_at":"2018-12-03T18:03:28+01:00", + "completed_at":"2018-12-03T18:03:28+01:00", + "done_at":"2018-12-03T18:03:28+01:00" + }, + { + "id":299, + "currency":"btc", + "type":"coin", + "amount":"0.01", + "fee":"0.0001", + "blockchain_txid":"3a2779e1b924f61a64d6227f5e9151ff18e601a819dd54717adfe271daff171d", + "rid":"2NEkoAbJuSBHDjiGqEtTbcVDyY884hZMTad", + "state":"succeed", + "created_at":"2018-11-13T12:51:35+01:00", + "updated_at":"2018-11-13T12:51:44+01:00", + "completed_at":"2018-11-13T12:51:44+01:00", + "done_at":"2018-11-13T12:51:44+01:00" + }, + { + "id":290, + "currency":"xrp", + "type":"coin", + "amount":"2.0", + "fee":"0.25", + "blockchain_txid":"2894EBF2DA3AC90E590987895C048B3F938CAAF74B03B8629179F6AE55705DB4", + "rid":"rfKz2QueDwnTaZ1wLM553Luavq5rpkxR44", + "state":"succeed", + "created_at":"2018-11-12T14:22:35+01:00", + "updated_at":"2018-11-12T14:22:43+01:00", + "completed_at":"2018-11-12T14:22:43+01:00", + "done_at":"2018-11-12T14:22:43+01:00" + }, + { + "id":276, + "currency":"bch", + "type":"coin", + "amount":"0.1", + "fee":"0.001", + "blockchain_txid":null, + "rid":"bchtest:pzv9ecvp70n5ju0slkk9tvdtlzzwxhmuqchputday3", + "state":"failed", + "created_at":"2018-11-09T16:36:52+01:00", + "updated_at":"2018-11-09T16:36:55+01:00", + "completed_at":"2018-11-09T16:36:55+01:00", + "done_at":"2018-11-09T16:36:55+01:00" + }, + { + "id":275, + "currency":"bch", + "type":"coin", + "amount":"0.01", + "fee":"0.001", + "blockchain_txid":null, + "rid":"bchtest:pzv9ecvp70n5ju0slkk9tvdtlzzwxhmuqchputday3", + "state":"failed", + "created_at":"2018-11-09T11:08:45+01:00", + "updated_at":"2018-11-09T11:08:51+01:00", + "completed_at":"2018-11-09T11:08:51+01:00", + "done_at":"2018-11-09T11:08:51+01:00" + }, + { + "id":274, + "currency":"btc", + "type":"coin", + "amount":"0.01", + "fee":"0.0001", + "blockchain_txid":"46d04cac11b3cc8da8a42f09e0dfa5088fa5271ae77b282f3c55ebe0c28aa95a", + "rid":"2NEL6R2Hbh25fT3Fu92rySB1LMvyXA3pcpu", + "state":"succeed", + "created_at":"2018-11-08T15:58:26+01:00", + "updated_at":"2018-11-08T15:58:37+01:00", + "completed_at":"2018-11-08T15:58:37+01:00", + "done_at":"2018-11-08T15:58:37+01:00" + }, + { + "id":273, + "currency":"btc", + "type":"coin", + "amount":"0.01", + "fee":"0.0001", + "blockchain_txid":"94c7a03827f75f383cbda802f583c96e2f2714e3252540276cb4e345bf3ce18a", + "rid":"2NEL6R2Hbh25fT3Fu92rySB1LMvyXA3pcpu", + "state":"succeed", + "created_at":"2018-11-08T15:57:27+01:00", + "updated_at":"2018-11-08T15:57:37+01:00", + "completed_at":"2018-11-08T15:57:37+01:00", + "done_at":"2018-11-08T15:57:37+01:00" + }, + { + "id":269, + "currency":"btc", + "type":"coin", + "amount":"0.001", + "fee":"0.0001", + "blockchain_txid":null, + "rid":"asdasdasasdasdasdasd", + "state":"failed", + "created_at":"2018-11-07T10:36:47+01:00", + "updated_at":"2018-11-07T10:36:52+01:00", + "completed_at":"2018-11-07T10:36:52+01:00", + "done_at":"2018-11-07T10:36:52+01:00" + }, + { + "id":267, + "currency":"bch", + "type":"coin", + "amount":"0.1", + "fee":"0.001", + "blockchain_txid":null, + "rid":"bchtest:pptqjl3hm8fmrl5mfqcexkqslx4vqkk09ytww7dszq", + "state":"failed", + "created_at":"2018-11-07T10:08:34+01:00", + "updated_at":"2018-11-07T10:08:40+01:00", + "completed_at":"2018-11-07T10:08:40+01:00", + "done_at":"2018-11-07T10:08:40+01:00" + }, + { + "id":266, + "currency":"bch", + "type":"coin", + "amount":"0.1", + "fee":"0.001", + "blockchain_txid":null, + "rid":"pptqjl3hm8fmrl5mfqcexkqslx4vqkk09ytww7dszq", + "state":"failed", + "created_at":"2018-11-07T10:06:36+01:00", + "updated_at":"2018-11-07T10:06:40+01:00", + "completed_at":"2018-11-07T10:06:40+01:00", + "done_at":"2018-11-07T10:06:40+01:00" + }, + { + "id":265, + "currency":"btc", + "type":"coin", + "amount":"0.5", + "fee":"0.0001", + "blockchain_txid":"50001059c12f12062c5f56a575100e68973dc3ee533358cca2b9fcea22a6b919", + "rid":"2N5bSLuVtYssgJA1bf2nN2ZWB7zpa7aYhQD", + "state":"succeed", + "created_at":"2018-11-07T10:02:57+01:00", + "updated_at":"2018-11-07T10:03:04+01:00", + "completed_at":"2018-11-07T10:03:04+01:00", + "done_at":"2018-11-07T10:03:04+01:00" + }, + { + "id":264, + "currency":"ltc", + "type":"coin", + "amount":"4.0", + "fee":"0.01", + "blockchain_txid":"8b1c13efad7d5debd264ba455246ef60ada309bbeded1ab2a47cae8c8c90da99", + "rid":"QVMUpgySfa5rg9Ah6iLtPJQoMPChdse6UH", + "state":"succeed", + "created_at":"2018-11-07T09:50:19+01:00", + "updated_at":"2018-11-07T09:50:28+01:00", + "completed_at":"2018-11-07T09:50:28+01:00", + "done_at":"2018-11-07T09:50:28+01:00" + }, + { + "id":263, + "currency":"btc", + "type":"coin", + "amount":"0.1001", + "fee":"0.0001", + "blockchain_txid":"c43cbd2c80dc7aaee932e9d94c7e104c0b9b3861f9b7751d9bce91b1bee272c6", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-11-07T09:39:21+01:00", + "updated_at":"2018-11-07T09:39:33+01:00", + "completed_at":"2018-11-07T09:39:33+01:00", + "done_at":"2018-11-07T09:39:33+01:00" + }, + { + "id":262, + "currency":"btc", + "type":"coin", + "amount":"0.11", + "fee":"0.0001", + "blockchain_txid":"641218dcf752eb8b44b733b46928cabbfbdf4f2214081d524ce1da2b5b718780", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-11-06T14:27:14+01:00", + "updated_at":"2018-11-06T14:27:25+01:00", + "completed_at":"2018-11-06T14:27:25+01:00", + "done_at":"2018-11-06T14:27:25+01:00" + }, + { + "id":261, + "currency":"btc", + "type":"coin", + "amount":"0.1", + "fee":"0.0001", + "blockchain_txid":"975e84dac56b454d603e17c83b01223e8c48ad356427ae8a1dbc027fd6883f95", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-11-06T12:58:47+01:00", + "updated_at":"2018-11-06T12:58:58+01:00", + "completed_at":"2018-11-06T12:58:58+01:00", + "done_at":"2018-11-06T12:58:58+01:00" + }, + { + "id":260, + "currency":"btc", + "type":"coin", + "amount":"0.2", + "fee":"0.0001", + "blockchain_txid":"159604e1faaec0b6b995c16c89b92b032a1cedcac461df015ae0a82ffa54450e", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-11-06T12:50:18+01:00", + "updated_at":"2018-11-06T12:50:28+01:00", + "completed_at":"2018-11-06T12:50:28+01:00", + "done_at":"2018-11-06T12:50:28+01:00" + }, + { + "id":259, + "currency":"btc", + "type":"coin", + "amount":"0.1", + "fee":"0.0001", + "blockchain_txid":"dd7af9d9697c33d0bd98b888e5133ee82d41ca5a66e275503f8efce2ca697874", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-11-06T11:59:16+01:00", + "updated_at":"2018-11-06T11:59:28+01:00", + "completed_at":"2018-11-06T11:59:28+01:00", + "done_at":"2018-11-06T11:59:28+01:00" + }, + { + "id":258, + "currency":"btc", + "type":"coin", + "amount":"0.1", + "fee":"0.0001", + "blockchain_txid":"b2f3fc20db5e798a44ee224eadda33dc318fa7d4af26ca989e163f3490424d71", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-11-06T11:55:33+01:00", + "updated_at":"2018-11-06T11:55:50+01:00", + "completed_at":"2018-11-06T11:55:50+01:00", + "done_at":"2018-11-06T11:55:50+01:00" + }, + { + "id":195, + "currency":"xrp", + "type":"coin", + "amount":"1.0", + "fee":"0.25", + "blockchain_txid":"E1C156C99C2A67EA322B936970EB668050865BCE9F5FB3F2DCE520DC05036810", + "rid":"rpuvFi7irTinqu71V8ZvfrBQVYhoPn3cPB?dt=0", + "state":"succeed", + "created_at":"2018-10-16T16:18:47+02:00", + "updated_at":"2018-10-16T16:18:53+02:00", + "completed_at":"2018-10-16T16:18:52+02:00", + "done_at":"2018-10-16T16:18:52+02:00" + }, + { + "id":177, + "currency":"btc", + "type":"coin", + "amount":"0.001", + "fee":"0.0001", + "blockchain_txid":null, + "rid":"12345679", + "state":"failed", + "created_at":"2018-10-09T17:37:04+02:00", + "updated_at":"2018-10-09T17:37:09+02:00", + "completed_at":"2018-10-09T17:37:09+02:00", + "done_at":"2018-10-09T17:37:09+02:00" + }, + { + "id":176, + "currency":"btc", + "type":"coin", + "amount":"0.001", + "fee":"0.0001", + "blockchain_txid":null, + "rid":"12346", + "state":"failed", + "created_at":"2018-10-09T13:47:17+02:00", + "updated_at":"2018-10-09T13:48:19+02:00", + "completed_at":"2018-10-09T13:48:19+02:00", + "done_at":"2018-10-09T13:48:19+02:00" + }, + { + "id":175, + "currency":"btc", + "type":"coin", + "amount":"1.0", + "fee":"0.0001", + "blockchain_txid":null, + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"failed", + "created_at":"2018-10-09T12:38:19+02:00", + "updated_at":"2018-10-09T12:39:23+02:00", + "completed_at":"2018-10-09T12:39:23+02:00", + "done_at":"2018-10-09T12:39:23+02:00" + }, + { + "id":174, + "currency":"xrp", + "type":"coin", + "amount":"0.5", + "fee":"0.25", + "blockchain_txid":null, + "rid":"1234567498", + "state":"failed", + "created_at":"2018-10-09T10:53:05+02:00", + "updated_at":"2018-10-09T10:53:10+02:00", + "completed_at":"2018-10-09T10:53:10+02:00", + "done_at":"2018-10-09T10:53:10+02:00" + }, + { + "id":173, + "currency":"ltc", + "type":"coin", + "amount":"0.5", + "fee":"0.01", + "blockchain_txid":null, + "rid":"12345679", + "state":"failed", + "created_at":"2018-10-09T10:52:09+02:00", + "updated_at":"2018-10-09T10:52:15+02:00", + "completed_at":"2018-10-09T10:52:15+02:00", + "done_at":"2018-10-09T10:52:15+02:00" + }, + { + "id":172, + "currency":"btc", + "type":"coin", + "amount":"0.1", + "fee":"0.0001", + "blockchain_txid":"0aae16ca6c1178a9aa58e615bb82f205e1881cff8d2727c07787a3b202bf45ea", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-10-08T14:22:13+02:00", + "updated_at":"2018-10-08T14:22:23+02:00", + "completed_at":"2018-10-08T14:22:23+02:00", + "done_at":"2018-10-08T14:22:23+02:00" + }, + { + "id":171, + "currency":"btc", + "type":"coin", + "amount":"0.5", + "fee":"0.0001", + "blockchain_txid":"347d340c3647acd3b6d7e85ac0db774b14572bd0718a3750f629419fce1dd8ee", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-10-08T14:18:50+02:00", + "updated_at":"2018-10-08T14:19:05+02:00", + "completed_at":"2018-10-08T14:19:05+02:00", + "done_at":"2018-10-08T14:19:05+02:00" + }, + { + "id":170, + "currency":"btc", + "type":"coin", + "amount":"0.3", + "fee":"0.0001", + "blockchain_txid":"1955959aec4fd4cf785616645c67cfeaa29e7bb613c8f456b2ffb245aa665875", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-10-08T13:47:29+02:00", + "updated_at":"2018-10-08T13:47:39+02:00", + "completed_at":"2018-10-08T13:47:39+02:00", + "done_at":"2018-10-08T13:47:39+02:00" + }, + { + "id":169, + "currency":"btc", + "type":"coin", + "amount":"1.1", + "fee":"0.0001", + "blockchain_txid":"fc7c4e5d99d5c48b8b74ec6f91a30c080b7c6924ff6d5db7075af5cc1e22bf2b", + "rid":"2N8LCtvKxyLwvvRRfbooRnnJGggjKzoyv6r", + "state":"succeed", + "created_at":"2018-10-01T11:39:18+02:00", + "updated_at":"2018-10-01T11:39:28+02:00", + "completed_at":"2018-10-01T11:39:28+02:00", + "done_at":"2018-10-01T11:39:28+02:00" + }, + { + "id":163, + "currency":"btc", + "type":"coin", + "amount":"0.01", + "fee":"0.0001", + "blockchain_txid":"7941a9a9d3899c04303e5a1e734cf6acbf25303a6132baea551227766cb8d887", + "rid":"2N2GLhgV6UYb3VrU6Xc2ZHNCZec82Bbtynr", + "state":"succeed", + "created_at":"2018-09-14T15:39:11+02:00", + "updated_at":"2018-09-14T15:39:21+02:00", + "completed_at":"2018-09-14T15:39:21+02:00", + "done_at":"2018-09-14T15:39:21+02:00" + }, + { + "id":154, + "currency":"bch", + "type":"coin", + "amount":"0.013", + "fee":"0.001", + "blockchain_txid":"a12bda96a588c2fbc163f9b774168a07c405ff8227c730f005cc5ef0cb6c77ea", + "rid":"2MshcjxA43U478UVDF4QyTeydKt7wenqn4q", + "state":"succeed", + "created_at":"2018-09-11T17:16:41+02:00", + "updated_at":"2018-09-11T17:16:53+02:00", + "completed_at":"2018-09-11T17:16:53+02:00", + "done_at":"2018-09-11T17:16:53+02:00" + }, + { + "id":153, + "currency":"bch", + "type":"coin", + "amount":"0.012", + "fee":"0.001", + "blockchain_txid":"84a4e961c51605391031386538e64708ade25f2318b46466feceaf0c48a4729f", + "rid":"2MshcjxA43U478UVDF4QyTeydKt7wenqn4q", + "state":"succeed", + "created_at":"2018-09-11T11:39:40+02:00", + "updated_at":"2018-09-11T11:39:47+02:00", + "completed_at":"2018-09-11T11:39:47+02:00", + "done_at":"2018-09-11T11:39:47+02:00" + }, + { + "id":136, + "currency":"bch", + "type":"coin", + "amount":"0.02", + "fee":"0.001", + "blockchain_txid":"48b80e357770cc926d5f60a622d830ed024832aa9b7ba3d0e31248abfeac3073", + "rid":"2N7c4eD6xjvRtn9H4jBfvynxBvEz3QfoiTk", + "state":"succeed", + "created_at":"2018-08-29T10:56:36+02:00", + "updated_at":"2018-08-29T10:56:49+02:00", + "completed_at":"2018-08-29T10:56:49+02:00", + "done_at":"2018-08-29T10:56:49+02:00" + }, + { + "id":135, + "currency":"bch", + "type":"coin", + "amount":"0.002", + "fee":"0.001", + "blockchain_txid":"ef5b877d0133e1a72ba144935822181a0d62e2299285c1c05351352ad75ed928", + "rid":"2N7c4eD6xjvRtn9H4jBfvynxBvEz3QfoiTk", + "state":"succeed", + "created_at":"2018-08-28T20:14:44+02:00", + "updated_at":"2018-08-28T20:14:51+02:00", + "completed_at":"2018-08-28T20:14:51+02:00", + "done_at":"2018-08-28T20:14:51+02:00" + }, + { + "id":134, + "currency":"bch", + "type":"coin", + "amount":"0.002", + "fee":"0.001", + "blockchain_txid":"e6db5c564758b94b1da1913205e00e94a247a283380a811cefc5ba65113b7e95", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-08-28T20:03:46+02:00", + "updated_at":"2018-08-28T20:03:56+02:00", + "completed_at":"2018-08-28T20:03:56+02:00", + "done_at":"2018-08-28T20:03:56+02:00" + }, + { + "id":133, + "currency":"bch", + "type":"coin", + "amount":"0.02", + "fee":"0.001", + "blockchain_txid":"459650e495350f9081f9b7c78090cb1856ac9548abee11d23f8d89925233fbde", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-08-28T18:27:32+02:00", + "updated_at":"2018-08-28T18:27:45+02:00", + "completed_at":"2018-08-28T18:27:45+02:00", + "done_at":"2018-08-28T18:27:45+02:00" + }, + { + "id":132, + "currency":"btc", + "type":"coin", + "amount":"0.01", + "fee":"0.0001", + "blockchain_txid":null, + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"processing", + "created_at":"2018-08-28T18:26:32+02:00", + "updated_at":"2018-08-28T18:26:36+02:00", + "completed_at":null, + "done_at":null + }, + { + "id":131, + "currency":"btc", + "type":"coin", + "amount":"0.01", + "fee":"0.0001", + "blockchain_txid":null, + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"prepared", + "created_at":"2018-08-28T18:16:52+02:00", + "updated_at":"2018-08-28T18:16:52+02:00", + "completed_at":null, + "done_at":null + }, + { + "id":130, + "currency":"btc", + "type":"coin", + "amount":"0.01", + "fee":"0.0001", + "blockchain_txid":null, + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"prepared", + "created_at":"2018-08-28T18:02:07+02:00", + "updated_at":"2018-08-28T18:02:07+02:00", + "completed_at":null, + "done_at":null + }, + { + "id":129, + "currency":"btc", + "type":"coin", + "amount":"0.01", + "fee":"0.0001", + "blockchain_txid":null, + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"prepared", + "created_at":"2018-08-28T17:51:21+02:00", + "updated_at":"2018-08-28T17:51:21+02:00", + "completed_at":null, + "done_at":null + }, + { + "id":128, + "currency":"bch", + "type":"coin", + "amount":"0.1", + "fee":"0.001", + "blockchain_txid":null, + "rid":"2MwS8Fevd8qmPeqdYUMrCGDwK6aum6bnwqx", + "state":"prepared", + "created_at":"2018-08-28T16:50:48+02:00", + "updated_at":"2018-08-28T16:50:48+02:00", + "completed_at":null, + "done_at":null + }, + { + "id":127, + "currency":"bch", + "type":"coin", + "amount":"0.002", + "fee":"0.001", + "blockchain_txid":null, + "rid":"2MwS8Fevd8qmPeqdYUMrCGDwK6aum6bnwqx", + "state":"prepared", + "created_at":"2018-08-28T16:50:09+02:00", + "updated_at":"2018-08-28T16:50:09+02:00", + "completed_at":null, + "done_at":null + }, + { + "id":126, + "currency":"bch", + "type":"coin", + "amount":"0.002", + "fee":"0.001", + "blockchain_txid":null, + "rid":"2MwS8Fevd8qmPeqdYUMrCGDwK6aum6bnwqx", + "state":"prepared", + "created_at":"2018-08-28T16:50:08+02:00", + "updated_at":"2018-08-28T16:50:08+02:00", + "completed_at":null, + "done_at":null + }, + { + "id":125, + "currency":"bch", + "type":"coin", + "amount":"0.002", + "fee":"0.001", + "blockchain_txid":null, + "rid":"2MwS8Fevd8qmPeqdYUMrCGDwK6aum6bnwqx", + "state":"prepared", + "created_at":"2018-08-28T16:50:04+02:00", + "updated_at":"2018-08-28T16:50:04+02:00", + "completed_at":null, + "done_at":null + }, + { + "id":124, + "currency":"bch", + "type":"coin", + "amount":"0.002", + "fee":"0.001", + "blockchain_txid":null, + "rid":"2MwS8Fevd8qmPeqdYUMrCGDwK6aum6bnwqx", + "state":"prepared", + "created_at":"2018-08-28T16:49:56+02:00", + "updated_at":"2018-08-28T16:49:56+02:00", + "completed_at":null, + "done_at":null + }, + { + "id":123, + "currency":"btc", + "type":"coin", + "amount":"0.75", + "fee":"0.0001", + "blockchain_txid":null, + "rid":"2N8hwP1WmJrFF5QWABn38y63uYLhnJYJYTF", + "state":"processing", + "created_at":"2018-08-27T09:26:21+02:00", + "updated_at":"2018-08-27T09:26:24+02:00", + "completed_at":null, + "done_at":null + + } +] diff --git a/mocks/api/v2/dena/account/withdraws/GET--page=1&limit=25.mock b/mocks/api/v2/dena/account/withdraws/GET--page=1&limit=25.mock new file mode 100644 index 0000000..42747f2 --- /dev/null +++ b/mocks/api/v2/dena/account/withdraws/GET--page=1&limit=25.mock @@ -0,0 +1,361 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Expose-Headers: total +Total: 28 + +[ + { + "id":339, + "currency":"ltc", + "type":"coin", + "amount":"1.0", + "fee":"0.001", + "blockchain_txid":"9206d219a8ccfb4fd777e3823283a28e43d5b2d5b3682bcb9b17364299540c03", + "rid":"QVMUpgySfa5rg9Ah6iLtPJQoMPChdse6UH", + "state":"succeed", + "created_at":"2018-12-03T18:03:15+01:00", + "updated_at":"2018-12-03T18:03:28+01:00", + "completed_at":"2018-12-03T18:03:28+01:00", + "done_at":"2018-12-03T18:03:28+01:00" + }, + { + "id":299, + "currency":"btc", + "type":"coin", + "amount":"0.01", + "fee":"0.0001", + "blockchain_txid":"3a2779e1b924f61a64d6227f5e9151ff18e601a819dd54717adfe271daff171d", + "rid":"2NEkoAbJuSBHDjiGqEtTbcVDyY884hZMTad", + "state":"succeed", + "created_at":"2018-11-13T12:51:35+01:00", + "updated_at":"2018-11-13T12:51:44+01:00", + "completed_at":"2018-11-13T12:51:44+01:00", + "done_at":"2018-11-13T12:51:44+01:00" + }, + { + "id":290, + "currency":"xrp", + "type":"coin", + "amount":"2.0", + "fee":"0.25", + "blockchain_txid":"2894EBF2DA3AC90E590987895C048B3F938CAAF74B03B8629179F6AE55705DB4", + "rid":"rfKz2QueDwnTaZ1wLM553Luavq5rpkxR44", + "state":"succeed", + "created_at":"2018-11-12T14:22:35+01:00", + "updated_at":"2018-11-12T14:22:43+01:00", + "completed_at":"2018-11-12T14:22:43+01:00", + "done_at":"2018-11-12T14:22:43+01:00" + }, + { + "id":276, + "currency":"bch", + "type":"coin", + "amount":"0.1", + "fee":"0.001", + "blockchain_txid":null, + "rid":"bchtest:pzv9ecvp70n5ju0slkk9tvdtlzzwxhmuqchputday3", + "state":"failed", + "created_at":"2018-11-09T16:36:52+01:00", + "updated_at":"2018-11-09T16:36:55+01:00", + "completed_at":"2018-11-09T16:36:55+01:00", + "done_at":"2018-11-09T16:36:55+01:00" + }, + { + "id":275, + "currency":"bch", + "type":"coin", + "amount":"0.01", + "fee":"0.001", + "blockchain_txid":null, + "rid":"bchtest:pzv9ecvp70n5ju0slkk9tvdtlzzwxhmuqchputday3", + "state":"failed", + "created_at":"2018-11-09T11:08:45+01:00", + "updated_at":"2018-11-09T11:08:51+01:00", + "completed_at":"2018-11-09T11:08:51+01:00", + "done_at":"2018-11-09T11:08:51+01:00" + }, + { + "id":274, + "currency":"btc", + "type":"coin", + "amount":"0.01", + "fee":"0.0001", + "blockchain_txid":"46d04cac11b3cc8da8a42f09e0dfa5088fa5271ae77b282f3c55ebe0c28aa95a", + "rid":"2NEL6R2Hbh25fT3Fu92rySB1LMvyXA3pcpu", + "state":"succeed", + "created_at":"2018-11-08T15:58:26+01:00", + "updated_at":"2018-11-08T15:58:37+01:00", + "completed_at":"2018-11-08T15:58:37+01:00", + "done_at":"2018-11-08T15:58:37+01:00" + }, + { + "id":273, + "currency":"btc", + "type":"coin", + "amount":"0.01", + "fee":"0.0001", + "blockchain_txid":"94c7a03827f75f383cbda802f583c96e2f2714e3252540276cb4e345bf3ce18a", + "rid":"2NEL6R2Hbh25fT3Fu92rySB1LMvyXA3pcpu", + "state":"succeed", + "created_at":"2018-11-08T15:57:27+01:00", + "updated_at":"2018-11-08T15:57:37+01:00", + "completed_at":"2018-11-08T15:57:37+01:00", + "done_at":"2018-11-08T15:57:37+01:00" + }, + { + "id":269, + "currency":"btc", + "type":"coin", + "amount":"0.001", + "fee":"0.0001", + "blockchain_txid":null, + "rid":"asdasdasasdasdasdasd", + "state":"failed", + "created_at":"2018-11-07T10:36:47+01:00", + "updated_at":"2018-11-07T10:36:52+01:00", + "completed_at":"2018-11-07T10:36:52+01:00", + "done_at":"2018-11-07T10:36:52+01:00" + }, + { + "id":267, + "currency":"bch", + "type":"coin", + "amount":"0.1", + "fee":"0.001", + "blockchain_txid":null, + "rid":"bchtest:pptqjl3hm8fmrl5mfqcexkqslx4vqkk09ytww7dszq", + "state":"failed", + "created_at":"2018-11-07T10:08:34+01:00", + "updated_at":"2018-11-07T10:08:40+01:00", + "completed_at":"2018-11-07T10:08:40+01:00", + "done_at":"2018-11-07T10:08:40+01:00" + }, + { + "id":266, + "currency":"bch", + "type":"coin", + "amount":"0.1", + "fee":"0.001", + "blockchain_txid":null, + "rid":"pptqjl3hm8fmrl5mfqcexkqslx4vqkk09ytww7dszq", + "state":"failed", + "created_at":"2018-11-07T10:06:36+01:00", + "updated_at":"2018-11-07T10:06:40+01:00", + "completed_at":"2018-11-07T10:06:40+01:00", + "done_at":"2018-11-07T10:06:40+01:00" + }, + { + "id":265, + "currency":"btc", + "type":"coin", + "amount":"0.5", + "fee":"0.0001", + "blockchain_txid":"50001059c12f12062c5f56a575100e68973dc3ee533358cca2b9fcea22a6b919", + "rid":"2N5bSLuVtYssgJA1bf2nN2ZWB7zpa7aYhQD", + "state":"succeed", + "created_at":"2018-11-07T10:02:57+01:00", + "updated_at":"2018-11-07T10:03:04+01:00", + "completed_at":"2018-11-07T10:03:04+01:00", + "done_at":"2018-11-07T10:03:04+01:00" + }, + { + "id":264, + "currency":"ltc", + "type":"coin", + "amount":"4.0", + "fee":"0.01", + "blockchain_txid":"8b1c13efad7d5debd264ba455246ef60ada309bbeded1ab2a47cae8c8c90da99", + "rid":"QVMUpgySfa5rg9Ah6iLtPJQoMPChdse6UH", + "state":"succeed", + "created_at":"2018-11-07T09:50:19+01:00", + "updated_at":"2018-11-07T09:50:28+01:00", + "completed_at":"2018-11-07T09:50:28+01:00", + "done_at":"2018-11-07T09:50:28+01:00" + }, + { + "id":263, + "currency":"btc", + "type":"coin", + "amount":"0.1001", + "fee":"0.0001", + "blockchain_txid":"c43cbd2c80dc7aaee932e9d94c7e104c0b9b3861f9b7751d9bce91b1bee272c6", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-11-07T09:39:21+01:00", + "updated_at":"2018-11-07T09:39:33+01:00", + "completed_at":"2018-11-07T09:39:33+01:00", + "done_at":"2018-11-07T09:39:33+01:00" + }, + { + "id":262, + "currency":"btc", + "type":"coin", + "amount":"0.11", + "fee":"0.0001", + "blockchain_txid":"641218dcf752eb8b44b733b46928cabbfbdf4f2214081d524ce1da2b5b718780", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-11-06T14:27:14+01:00", + "updated_at":"2018-11-06T14:27:25+01:00", + "completed_at":"2018-11-06T14:27:25+01:00", + "done_at":"2018-11-06T14:27:25+01:00" + }, + { + "id":261, + "currency":"btc", + "type":"coin", + "amount":"0.1", + "fee":"0.0001", + "blockchain_txid":"975e84dac56b454d603e17c83b01223e8c48ad356427ae8a1dbc027fd6883f95", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-11-06T12:58:47+01:00", + "updated_at":"2018-11-06T12:58:58+01:00", + "completed_at":"2018-11-06T12:58:58+01:00", + "done_at":"2018-11-06T12:58:58+01:00" + }, + { + "id":260, + "currency":"btc", + "type":"coin", + "amount":"0.2", + "fee":"0.0001", + "blockchain_txid":"159604e1faaec0b6b995c16c89b92b032a1cedcac461df015ae0a82ffa54450e", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-11-06T12:50:18+01:00", + "updated_at":"2018-11-06T12:50:28+01:00", + "completed_at":"2018-11-06T12:50:28+01:00", + "done_at":"2018-11-06T12:50:28+01:00" + }, + { + "id":259, + "currency":"btc", + "type":"coin", + "amount":"0.1", + "fee":"0.0001", + "blockchain_txid":"dd7af9d9697c33d0bd98b888e5133ee82d41ca5a66e275503f8efce2ca697874", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-11-06T11:59:16+01:00", + "updated_at":"2018-11-06T11:59:28+01:00", + "completed_at":"2018-11-06T11:59:28+01:00", + "done_at":"2018-11-06T11:59:28+01:00" + }, + { + "id":258, + "currency":"btc", + "type":"coin", + "amount":"0.1", + "fee":"0.0001", + "blockchain_txid":"b2f3fc20db5e798a44ee224eadda33dc318fa7d4af26ca989e163f3490424d71", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-11-06T11:55:33+01:00", + "updated_at":"2018-11-06T11:55:50+01:00", + "completed_at":"2018-11-06T11:55:50+01:00", + "done_at":"2018-11-06T11:55:50+01:00" + }, + { + "id":195, + "currency":"xrp", + "type":"coin", + "amount":"1.0", + "fee":"0.25", + "blockchain_txid":"E1C156C99C2A67EA322B936970EB668050865BCE9F5FB3F2DCE520DC05036810", + "rid":"rpuvFi7irTinqu71V8ZvfrBQVYhoPn3cPB?dt=0", + "state":"succeed", + "created_at":"2018-10-16T16:18:47+02:00", + "updated_at":"2018-10-16T16:18:53+02:00", + "completed_at":"2018-10-16T16:18:52+02:00", + "done_at":"2018-10-16T16:18:52+02:00" + }, + { + "id":177, + "currency":"btc", + "type":"coin", + "amount":"0.001", + "fee":"0.0001", + "blockchain_txid":null, + "rid":"12345679", + "state":"failed", + "created_at":"2018-10-09T17:37:04+02:00", + "updated_at":"2018-10-09T17:37:09+02:00", + "completed_at":"2018-10-09T17:37:09+02:00", + "done_at":"2018-10-09T17:37:09+02:00" + }, + { + "id":176, + "currency":"btc", + "type":"coin", + "amount":"0.001", + "fee":"0.0001", + "blockchain_txid":null, + "rid":"12346", + "state":"failed", + "created_at":"2018-10-09T13:47:17+02:00", + "updated_at":"2018-10-09T13:48:19+02:00", + "completed_at":"2018-10-09T13:48:19+02:00", + "done_at":"2018-10-09T13:48:19+02:00" + }, + { + "id":175, + "currency":"btc", + "type":"coin", + "amount":"1.0", + "fee":"0.0001", + "blockchain_txid":null, + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"failed", + "created_at":"2018-10-09T12:38:19+02:00", + "updated_at":"2018-10-09T12:39:23+02:00", + "completed_at":"2018-10-09T12:39:23+02:00", + "done_at":"2018-10-09T12:39:23+02:00" + }, + { + "id":174, + "currency":"xrp", + "type":"coin", + "amount":"0.5", + "fee":"0.25", + "blockchain_txid":null, + "rid":"1234567498", + "state":"failed", + "created_at":"2018-10-09T10:53:05+02:00", + "updated_at":"2018-10-09T10:53:10+02:00", + "completed_at":"2018-10-09T10:53:10+02:00", + "done_at":"2018-10-09T10:53:10+02:00" + }, + { + "id":173, + "currency":"ltc", + "type":"coin", + "amount":"0.5", + "fee":"0.01", + "blockchain_txid":null, + "rid":"12345679", + "state":"failed", + "created_at":"2018-10-09T10:52:09+02:00", + "updated_at":"2018-10-09T10:52:15+02:00", + "completed_at":"2018-10-09T10:52:15+02:00", + "done_at":"2018-10-09T10:52:15+02:00" + }, + { + "id":172, + "currency":"btc", + "type":"coin", + "amount":"0.1", + "fee":"0.0001", + "blockchain_txid":"0aae16ca6c1178a9aa58e615bb82f205e1881cff8d2727c07787a3b202bf45ea", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-10-08T14:22:13+02:00", + "updated_at":"2018-10-08T14:22:23+02:00", + "completed_at":"2018-10-08T14:22:23+02:00", + "done_at":"2018-10-08T14:22:23+02:00" + } +] \ No newline at end of file diff --git a/mocks/api/v2/dena/account/withdraws/GET--page=2&limit=25.mock b/mocks/api/v2/dena/account/withdraws/GET--page=2&limit=25.mock new file mode 100644 index 0000000..a2576dc --- /dev/null +++ b/mocks/api/v2/dena/account/withdraws/GET--page=2&limit=25.mock @@ -0,0 +1,54 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Expose-Headers: total +Total: 28 + +[ + { + "id":125, + "currency":"bch", + "type":"coin", + "amount":"0.002", + "fee":"0.001", + "blockchain_txid":null, + "rid":"2MwS8Fevd8qmPeqdYUMrCGDwK6aum6bnwqx", + "state":"prepared", + "created_at":"2018-08-28T16:50:04+02:00", + "updated_at":"2018-08-28T16:50:04+02:00", + "completed_at":null, + "done_at":null + }, + { + "id":124, + "currency":"bch", + "type":"coin", + "amount":"0.002", + "fee":"0.001", + "blockchain_txid":null, + "rid":"2MwS8Fevd8qmPeqdYUMrCGDwK6aum6bnwqx", + "state":"prepared", + "created_at":"2018-08-28T16:49:56+02:00", + "updated_at":"2018-08-28T16:49:56+02:00", + "completed_at":null, + "done_at":null + }, + { + "id":123, + "currency":"btc", + "type":"coin", + "amount":"0.75", + "fee":"0.0001", + "blockchain_txid":null, + "rid":"2N8hwP1WmJrFF5QWABn38y63uYLhnJYJYTF", + "state":"processing", + "created_at":"2018-08-27T09:26:21+02:00", + "updated_at":"2018-08-27T09:26:24+02:00", + "completed_at":null, + "done_at":null + + } +] \ No newline at end of file diff --git a/mocks/api/v2/dena/account/withdraws/GET.mock b/mocks/api/v2/dena/account/withdraws/GET.mock new file mode 100644 index 0000000..756c114 --- /dev/null +++ b/mocks/api/v2/dena/account/withdraws/GET.mock @@ -0,0 +1,640 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + { + "id":339, + "currency":"ltc", + "type":"coin", + "amount":"1.0", + "fee":"0.001", + "blockchain_txid":"9206d219a8ccfb4fd777e3823283a28e43d5b2d5b3682bcb9b17364299540c03", + "rid":"QVMUpgySfa5rg9Ah6iLtPJQoMPChdse6UH", + "state":"succeed", + "created_at":"2018-12-03T18:03:15+01:00", + "updated_at":"2018-12-03T18:03:28+01:00", + "completed_at":"2018-12-03T18:03:28+01:00", + "done_at":"2018-12-03T18:03:28+01:00" + }, + { + "id":299, + "currency":"btc", + "type":"coin", + "amount":"0.01", + "fee":"0.0001", + "blockchain_txid":"3a2779e1b924f61a64d6227f5e9151ff18e601a819dd54717adfe271daff171d", + "rid":"2NEkoAbJuSBHDjiGqEtTbcVDyY884hZMTad", + "state":"succeed", + "created_at":"2018-11-13T12:51:35+01:00", + "updated_at":"2018-11-13T12:51:44+01:00", + "completed_at":"2018-11-13T12:51:44+01:00", + "done_at":"2018-11-13T12:51:44+01:00" + }, + { + "id":290, + "currency":"xrp", + "type":"coin", + "amount":"2.0", + "fee":"0.25", + "blockchain_txid":"2894EBF2DA3AC90E590987895C048B3F938CAAF74B03B8629179F6AE55705DB4", + "rid":"rfKz2QueDwnTaZ1wLM553Luavq5rpkxR44", + "state":"succeed", + "created_at":"2018-11-12T14:22:35+01:00", + "updated_at":"2018-11-12T14:22:43+01:00", + "completed_at":"2018-11-12T14:22:43+01:00", + "done_at":"2018-11-12T14:22:43+01:00" + }, + { + "id":276, + "currency":"bch", + "type":"coin", + "amount":"0.1", + "fee":"0.001", + "blockchain_txid":null, + "rid":"bchtest:pzv9ecvp70n5ju0slkk9tvdtlzzwxhmuqchputday3", + "state":"failed", + "created_at":"2018-11-09T16:36:52+01:00", + "updated_at":"2018-11-09T16:36:55+01:00", + "completed_at":"2018-11-09T16:36:55+01:00", + "done_at":"2018-11-09T16:36:55+01:00" + }, + { + "id":275, + "currency":"bch", + "type":"coin", + "amount":"0.01", + "fee":"0.001", + "blockchain_txid":null, + "rid":"bchtest:pzv9ecvp70n5ju0slkk9tvdtlzzwxhmuqchputday3", + "state":"failed", + "created_at":"2018-11-09T11:08:45+01:00", + "updated_at":"2018-11-09T11:08:51+01:00", + "completed_at":"2018-11-09T11:08:51+01:00", + "done_at":"2018-11-09T11:08:51+01:00" + }, + { + "id":274, + "currency":"btc", + "type":"coin", + "amount":"0.01", + "fee":"0.0001", + "blockchain_txid":"46d04cac11b3cc8da8a42f09e0dfa5088fa5271ae77b282f3c55ebe0c28aa95a", + "rid":"2NEL6R2Hbh25fT3Fu92rySB1LMvyXA3pcpu", + "state":"succeed", + "created_at":"2018-11-08T15:58:26+01:00", + "updated_at":"2018-11-08T15:58:37+01:00", + "completed_at":"2018-11-08T15:58:37+01:00", + "done_at":"2018-11-08T15:58:37+01:00" + }, + { + "id":273, + "currency":"btc", + "type":"coin", + "amount":"0.01", + "fee":"0.0001", + "blockchain_txid":"94c7a03827f75f383cbda802f583c96e2f2714e3252540276cb4e345bf3ce18a", + "rid":"2NEL6R2Hbh25fT3Fu92rySB1LMvyXA3pcpu", + "state":"succeed", + "created_at":"2018-11-08T15:57:27+01:00", + "updated_at":"2018-11-08T15:57:37+01:00", + "completed_at":"2018-11-08T15:57:37+01:00", + "done_at":"2018-11-08T15:57:37+01:00" + }, + { + "id":269, + "currency":"btc", + "type":"coin", + "amount":"0.001", + "fee":"0.0001", + "blockchain_txid":null, + "rid":"asdasdasasdasdasdasd", + "state":"failed", + "created_at":"2018-11-07T10:36:47+01:00", + "updated_at":"2018-11-07T10:36:52+01:00", + "completed_at":"2018-11-07T10:36:52+01:00", + "done_at":"2018-11-07T10:36:52+01:00" + }, + { + "id":267, + "currency":"bch", + "type":"coin", + "amount":"0.1", + "fee":"0.001", + "blockchain_txid":null, + "rid":"bchtest:pptqjl3hm8fmrl5mfqcexkqslx4vqkk09ytww7dszq", + "state":"failed", + "created_at":"2018-11-07T10:08:34+01:00", + "updated_at":"2018-11-07T10:08:40+01:00", + "completed_at":"2018-11-07T10:08:40+01:00", + "done_at":"2018-11-07T10:08:40+01:00" + }, + { + "id":266, + "currency":"bch", + "type":"coin", + "amount":"0.1", + "fee":"0.001", + "blockchain_txid":null, + "rid":"pptqjl3hm8fmrl5mfqcexkqslx4vqkk09ytww7dszq", + "state":"failed", + "created_at":"2018-11-07T10:06:36+01:00", + "updated_at":"2018-11-07T10:06:40+01:00", + "completed_at":"2018-11-07T10:06:40+01:00", + "done_at":"2018-11-07T10:06:40+01:00" + }, + { + "id":265, + "currency":"btc", + "type":"coin", + "amount":"0.5", + "fee":"0.0001", + "blockchain_txid":"50001059c12f12062c5f56a575100e68973dc3ee533358cca2b9fcea22a6b919", + "rid":"2N5bSLuVtYssgJA1bf2nN2ZWB7zpa7aYhQD", + "state":"succeed", + "created_at":"2018-11-07T10:02:57+01:00", + "updated_at":"2018-11-07T10:03:04+01:00", + "completed_at":"2018-11-07T10:03:04+01:00", + "done_at":"2018-11-07T10:03:04+01:00" + }, + { + "id":264, + "currency":"ltc", + "type":"coin", + "amount":"4.0", + "fee":"0.01", + "blockchain_txid":"8b1c13efad7d5debd264ba455246ef60ada309bbeded1ab2a47cae8c8c90da99", + "rid":"QVMUpgySfa5rg9Ah6iLtPJQoMPChdse6UH", + "state":"succeed", + "created_at":"2018-11-07T09:50:19+01:00", + "updated_at":"2018-11-07T09:50:28+01:00", + "completed_at":"2018-11-07T09:50:28+01:00", + "done_at":"2018-11-07T09:50:28+01:00" + }, + { + "id":263, + "currency":"btc", + "type":"coin", + "amount":"0.1001", + "fee":"0.0001", + "blockchain_txid":"c43cbd2c80dc7aaee932e9d94c7e104c0b9b3861f9b7751d9bce91b1bee272c6", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-11-07T09:39:21+01:00", + "updated_at":"2018-11-07T09:39:33+01:00", + "completed_at":"2018-11-07T09:39:33+01:00", + "done_at":"2018-11-07T09:39:33+01:00" + }, + { + "id":262, + "currency":"btc", + "type":"coin", + "amount":"0.11", + "fee":"0.0001", + "blockchain_txid":"641218dcf752eb8b44b733b46928cabbfbdf4f2214081d524ce1da2b5b718780", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-11-06T14:27:14+01:00", + "updated_at":"2018-11-06T14:27:25+01:00", + "completed_at":"2018-11-06T14:27:25+01:00", + "done_at":"2018-11-06T14:27:25+01:00" + }, + { + "id":261, + "currency":"btc", + "type":"coin", + "amount":"0.1", + "fee":"0.0001", + "blockchain_txid":"975e84dac56b454d603e17c83b01223e8c48ad356427ae8a1dbc027fd6883f95", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-11-06T12:58:47+01:00", + "updated_at":"2018-11-06T12:58:58+01:00", + "completed_at":"2018-11-06T12:58:58+01:00", + "done_at":"2018-11-06T12:58:58+01:00" + }, + { + "id":260, + "currency":"btc", + "type":"coin", + "amount":"0.2", + "fee":"0.0001", + "blockchain_txid":"159604e1faaec0b6b995c16c89b92b032a1cedcac461df015ae0a82ffa54450e", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-11-06T12:50:18+01:00", + "updated_at":"2018-11-06T12:50:28+01:00", + "completed_at":"2018-11-06T12:50:28+01:00", + "done_at":"2018-11-06T12:50:28+01:00" + }, + { + "id":259, + "currency":"btc", + "type":"coin", + "amount":"0.1", + "fee":"0.0001", + "blockchain_txid":"dd7af9d9697c33d0bd98b888e5133ee82d41ca5a66e275503f8efce2ca697874", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-11-06T11:59:16+01:00", + "updated_at":"2018-11-06T11:59:28+01:00", + "completed_at":"2018-11-06T11:59:28+01:00", + "done_at":"2018-11-06T11:59:28+01:00" + }, + { + "id":258, + "currency":"btc", + "type":"coin", + "amount":"0.1", + "fee":"0.0001", + "blockchain_txid":"b2f3fc20db5e798a44ee224eadda33dc318fa7d4af26ca989e163f3490424d71", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-11-06T11:55:33+01:00", + "updated_at":"2018-11-06T11:55:50+01:00", + "completed_at":"2018-11-06T11:55:50+01:00", + "done_at":"2018-11-06T11:55:50+01:00" + }, + { + "id":195, + "currency":"xrp", + "type":"coin", + "amount":"1.0", + "fee":"0.25", + "blockchain_txid":"E1C156C99C2A67EA322B936970EB668050865BCE9F5FB3F2DCE520DC05036810", + "rid":"rpuvFi7irTinqu71V8ZvfrBQVYhoPn3cPB?dt=0", + "state":"succeed", + "created_at":"2018-10-16T16:18:47+02:00", + "updated_at":"2018-10-16T16:18:53+02:00", + "completed_at":"2018-10-16T16:18:52+02:00", + "done_at":"2018-10-16T16:18:52+02:00" + }, + { + "id":177, + "currency":"btc", + "type":"coin", + "amount":"0.001", + "fee":"0.0001", + "blockchain_txid":null, + "rid":"12345679", + "state":"failed", + "created_at":"2018-10-09T17:37:04+02:00", + "updated_at":"2018-10-09T17:37:09+02:00", + "completed_at":"2018-10-09T17:37:09+02:00", + "done_at":"2018-10-09T17:37:09+02:00" + }, + { + "id":176, + "currency":"btc", + "type":"coin", + "amount":"0.001", + "fee":"0.0001", + "blockchain_txid":null, + "rid":"12346", + "state":"failed", + "created_at":"2018-10-09T13:47:17+02:00", + "updated_at":"2018-10-09T13:48:19+02:00", + "completed_at":"2018-10-09T13:48:19+02:00", + "done_at":"2018-10-09T13:48:19+02:00" + }, + { + "id":175, + "currency":"btc", + "type":"coin", + "amount":"1.0", + "fee":"0.0001", + "blockchain_txid":null, + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"failed", + "created_at":"2018-10-09T12:38:19+02:00", + "updated_at":"2018-10-09T12:39:23+02:00", + "completed_at":"2018-10-09T12:39:23+02:00", + "done_at":"2018-10-09T12:39:23+02:00" + }, + { + "id":174, + "currency":"xrp", + "type":"coin", + "amount":"0.5", + "fee":"0.25", + "blockchain_txid":null, + "rid":"1234567498", + "state":"failed", + "created_at":"2018-10-09T10:53:05+02:00", + "updated_at":"2018-10-09T10:53:10+02:00", + "completed_at":"2018-10-09T10:53:10+02:00", + "done_at":"2018-10-09T10:53:10+02:00" + }, + { + "id":173, + "currency":"ltc", + "type":"coin", + "amount":"0.5", + "fee":"0.01", + "blockchain_txid":null, + "rid":"12345679", + "state":"failed", + "created_at":"2018-10-09T10:52:09+02:00", + "updated_at":"2018-10-09T10:52:15+02:00", + "completed_at":"2018-10-09T10:52:15+02:00", + "done_at":"2018-10-09T10:52:15+02:00" + }, + { + "id":172, + "currency":"btc", + "type":"coin", + "amount":"0.1", + "fee":"0.0001", + "blockchain_txid":"0aae16ca6c1178a9aa58e615bb82f205e1881cff8d2727c07787a3b202bf45ea", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-10-08T14:22:13+02:00", + "updated_at":"2018-10-08T14:22:23+02:00", + "completed_at":"2018-10-08T14:22:23+02:00", + "done_at":"2018-10-08T14:22:23+02:00" + }, + { + "id":171, + "currency":"btc", + "type":"coin", + "amount":"0.5", + "fee":"0.0001", + "blockchain_txid":"347d340c3647acd3b6d7e85ac0db774b14572bd0718a3750f629419fce1dd8ee", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-10-08T14:18:50+02:00", + "updated_at":"2018-10-08T14:19:05+02:00", + "completed_at":"2018-10-08T14:19:05+02:00", + "done_at":"2018-10-08T14:19:05+02:00" + }, + { + "id":170, + "currency":"btc", + "type":"coin", + "amount":"0.3", + "fee":"0.0001", + "blockchain_txid":"1955959aec4fd4cf785616645c67cfeaa29e7bb613c8f456b2ffb245aa665875", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-10-08T13:47:29+02:00", + "updated_at":"2018-10-08T13:47:39+02:00", + "completed_at":"2018-10-08T13:47:39+02:00", + "done_at":"2018-10-08T13:47:39+02:00" + }, + { + "id":169, + "currency":"btc", + "type":"coin", + "amount":"1.1", + "fee":"0.0001", + "blockchain_txid":"fc7c4e5d99d5c48b8b74ec6f91a30c080b7c6924ff6d5db7075af5cc1e22bf2b", + "rid":"2N8LCtvKxyLwvvRRfbooRnnJGggjKzoyv6r", + "state":"succeed", + "created_at":"2018-10-01T11:39:18+02:00", + "updated_at":"2018-10-01T11:39:28+02:00", + "completed_at":"2018-10-01T11:39:28+02:00", + "done_at":"2018-10-01T11:39:28+02:00" + }, + { + "id":163, + "currency":"btc", + "type":"coin", + "amount":"0.01", + "fee":"0.0001", + "blockchain_txid":"7941a9a9d3899c04303e5a1e734cf6acbf25303a6132baea551227766cb8d887", + "rid":"2N2GLhgV6UYb3VrU6Xc2ZHNCZec82Bbtynr", + "state":"succeed", + "created_at":"2018-09-14T15:39:11+02:00", + "updated_at":"2018-09-14T15:39:21+02:00", + "completed_at":"2018-09-14T15:39:21+02:00", + "done_at":"2018-09-14T15:39:21+02:00" + }, + { + "id":154, + "currency":"bch", + "type":"coin", + "amount":"0.013", + "fee":"0.001", + "blockchain_txid":"a12bda96a588c2fbc163f9b774168a07c405ff8227c730f005cc5ef0cb6c77ea", + "rid":"2MshcjxA43U478UVDF4QyTeydKt7wenqn4q", + "state":"succeed", + "created_at":"2018-09-11T17:16:41+02:00", + "updated_at":"2018-09-11T17:16:53+02:00", + "completed_at":"2018-09-11T17:16:53+02:00", + "done_at":"2018-09-11T17:16:53+02:00" + }, + { + "id":153, + "currency":"bch", + "type":"coin", + "amount":"0.012", + "fee":"0.001", + "blockchain_txid":"84a4e961c51605391031386538e64708ade25f2318b46466feceaf0c48a4729f", + "rid":"2MshcjxA43U478UVDF4QyTeydKt7wenqn4q", + "state":"succeed", + "created_at":"2018-09-11T11:39:40+02:00", + "updated_at":"2018-09-11T11:39:47+02:00", + "completed_at":"2018-09-11T11:39:47+02:00", + "done_at":"2018-09-11T11:39:47+02:00" + }, + { + "id":136, + "currency":"bch", + "type":"coin", + "amount":"0.02", + "fee":"0.001", + "blockchain_txid":"48b80e357770cc926d5f60a622d830ed024832aa9b7ba3d0e31248abfeac3073", + "rid":"2N7c4eD6xjvRtn9H4jBfvynxBvEz3QfoiTk", + "state":"succeed", + "created_at":"2018-08-29T10:56:36+02:00", + "updated_at":"2018-08-29T10:56:49+02:00", + "completed_at":"2018-08-29T10:56:49+02:00", + "done_at":"2018-08-29T10:56:49+02:00" + }, + { + "id":135, + "currency":"bch", + "type":"coin", + "amount":"0.002", + "fee":"0.001", + "blockchain_txid":"ef5b877d0133e1a72ba144935822181a0d62e2299285c1c05351352ad75ed928", + "rid":"2N7c4eD6xjvRtn9H4jBfvynxBvEz3QfoiTk", + "state":"succeed", + "created_at":"2018-08-28T20:14:44+02:00", + "updated_at":"2018-08-28T20:14:51+02:00", + "completed_at":"2018-08-28T20:14:51+02:00", + "done_at":"2018-08-28T20:14:51+02:00" + }, + { + "id":134, + "currency":"bch", + "type":"coin", + "amount":"0.002", + "fee":"0.001", + "blockchain_txid":"e6db5c564758b94b1da1913205e00e94a247a283380a811cefc5ba65113b7e95", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-08-28T20:03:46+02:00", + "updated_at":"2018-08-28T20:03:56+02:00", + "completed_at":"2018-08-28T20:03:56+02:00", + "done_at":"2018-08-28T20:03:56+02:00" + }, + { + "id":133, + "currency":"bch", + "type":"coin", + "amount":"0.02", + "fee":"0.001", + "blockchain_txid":"459650e495350f9081f9b7c78090cb1856ac9548abee11d23f8d89925233fbde", + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"succeed", + "created_at":"2018-08-28T18:27:32+02:00", + "updated_at":"2018-08-28T18:27:45+02:00", + "completed_at":"2018-08-28T18:27:45+02:00", + "done_at":"2018-08-28T18:27:45+02:00" + }, + { + "id":132, + "currency":"btc", + "type":"coin", + "amount":"0.01", + "fee":"0.0001", + "blockchain_txid":null, + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"processing", + "created_at":"2018-08-28T18:26:32+02:00", + "updated_at":"2018-08-28T18:26:36+02:00", + "completed_at":null, + "done_at":null + }, + { + "id":131, + "currency":"btc", + "type":"coin", + "amount":"0.01", + "fee":"0.0001", + "blockchain_txid":null, + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"prepared", + "created_at":"2018-08-28T18:16:52+02:00", + "updated_at":"2018-08-28T18:16:52+02:00", + "completed_at":null, + "done_at":null + }, + { + "id":130, + "currency":"btc", + "type":"coin", + "amount":"0.01", + "fee":"0.0001", + "blockchain_txid":null, + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"prepared", + "created_at":"2018-08-28T18:02:07+02:00", + "updated_at":"2018-08-28T18:02:07+02:00", + "completed_at":null, + "done_at":null + }, + { + "id":129, + "currency":"btc", + "type":"coin", + "amount":"0.01", + "fee":"0.0001", + "blockchain_txid":null, + "rid":"2NBQdxMAXzBZENZnjdVrVHJqbWp33yhfN7T", + "state":"prepared", + "created_at":"2018-08-28T17:51:21+02:00", + "updated_at":"2018-08-28T17:51:21+02:00", + "completed_at":null, + "done_at":null + }, + { + "id":128, + "currency":"bch", + "type":"coin", + "amount":"0.1", + "fee":"0.001", + "blockchain_txid":null, + "rid":"2MwS8Fevd8qmPeqdYUMrCGDwK6aum6bnwqx", + "state":"prepared", + "created_at":"2018-08-28T16:50:48+02:00", + "updated_at":"2018-08-28T16:50:48+02:00", + "completed_at":null, + "done_at":null + }, + { + "id":127, + "currency":"bch", + "type":"coin", + "amount":"0.002", + "fee":"0.001", + "blockchain_txid":null, + "rid":"2MwS8Fevd8qmPeqdYUMrCGDwK6aum6bnwqx", + "state":"prepared", + "created_at":"2018-08-28T16:50:09+02:00", + "updated_at":"2018-08-28T16:50:09+02:00", + "completed_at":null, + "done_at":null + }, + { + "id":126, + "currency":"bch", + "type":"coin", + "amount":"0.002", + "fee":"0.001", + "blockchain_txid":null, + "rid":"2MwS8Fevd8qmPeqdYUMrCGDwK6aum6bnwqx", + "state":"prepared", + "created_at":"2018-08-28T16:50:08+02:00", + "updated_at":"2018-08-28T16:50:08+02:00", + "completed_at":null, + "done_at":null + }, + { + "id":125, + "currency":"bch", + "type":"coin", + "amount":"0.002", + "fee":"0.001", + "blockchain_txid":null, + "rid":"2MwS8Fevd8qmPeqdYUMrCGDwK6aum6bnwqx", + "state":"prepared", + "created_at":"2018-08-28T16:50:04+02:00", + "updated_at":"2018-08-28T16:50:04+02:00", + "completed_at":null, + "done_at":null + }, + { + "id":124, + "currency":"bch", + "type":"coin", + "amount":"0.002", + "fee":"0.001", + "blockchain_txid":null, + "rid":"2MwS8Fevd8qmPeqdYUMrCGDwK6aum6bnwqx", + "state":"prepared", + "created_at":"2018-08-28T16:49:56+02:00", + "updated_at":"2018-08-28T16:49:56+02:00", + "completed_at":null, + "done_at":null + }, + { + "id":123, + "currency":"btc", + "type":"coin", + "amount":"0.75", + "fee":"0.0001", + "blockchain_txid":null, + "rid":"2N8hwP1WmJrFF5QWABn38y63uYLhnJYJYTF", + "state":"processing", + "created_at":"2018-08-27T09:26:21+02:00", + "updated_at":"2018-08-27T09:26:24+02:00", + "completed_at":null, + "done_at":null + + } +] diff --git a/mocks/api/v2/dena/account/withdraws/OPTIONS.mock b/mocks/api/v2/dena/account/withdraws/OPTIONS.mock new file mode 100644 index 0000000..a5c7d7e --- /dev/null +++ b/mocks/api/v2/dena/account/withdraws/OPTIONS.mock @@ -0,0 +1,6 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/account/withdraws/POST.mock b/mocks/api/v2/dena/account/withdraws/POST.mock new file mode 100644 index 0000000..c3a5ade --- /dev/null +++ b/mocks/api/v2/dena/account/withdraws/POST.mock @@ -0,0 +1,21 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Allow-Headers: * + +{ + "id": 1, + "currency": "btc", + "type": "coin", + "amount": "0.1", + "fee": "0.025", + "blockchain_txid": null, + "rid": "1mceeebhtgeyxyy2aenhre4vaakvq8cmtw", + "state": "submitted", + "confirmations": 0, + "created_at": "2019-02-11T12:43:32+01:00", + "updated_at": "2019-02-11T12:43:32+01:00", + "done_at": null +} diff --git a/mocks/api/v2/dena/market/orders/GET--limit=25&page=2&state=wait.mock b/mocks/api/v2/dena/market/orders/GET--limit=25&page=2&state=wait.mock new file mode 100644 index 0000000..ff5642a --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--limit=25&page=2&state=wait.mock @@ -0,0 +1,36 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + { + "id":675, + "side":"buy", + "ord_type":"limit", + "price":"0.5", + "avg_price":"0.5", + "state":"wait", + "market":"ethbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":599, + "side":"sell", + "ord_type":"limit", + "price":"0.5", + "avg_price":"0.5", + "state":"wait", + "market":"ethbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] \ No newline at end of file diff --git a/mocks/api/v2/dena/market/orders/GET--market=bchbtc&state=cancel.mock b/mocks/api/v2/dena/market/orders/GET--market=bchbtc&state=cancel.mock new file mode 100644 index 0000000..be2e645 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=bchbtc&state=cancel.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"bchbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"bchbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"bchbtc", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } + ] diff --git a/mocks/api/v2/dena/market/orders/GET--market=bchbtc&state=done.mock b/mocks/api/v2/dena/market/orders/GET--market=bchbtc&state=done.mock new file mode 100644 index 0000000..be2e645 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=bchbtc&state=done.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"bchbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"bchbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"bchbtc", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } + ] diff --git a/mocks/api/v2/dena/market/orders/GET--market=bchbtc&state=wait.mock b/mocks/api/v2/dena/market/orders/GET--market=bchbtc&state=wait.mock new file mode 100644 index 0000000..be2e645 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=bchbtc&state=wait.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"bchbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"bchbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"bchbtc", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } + ] diff --git a/mocks/api/v2/dena/market/orders/GET--market=bchbtc.mock b/mocks/api/v2/dena/market/orders/GET--market=bchbtc.mock new file mode 100644 index 0000000..be2e645 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=bchbtc.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"bchbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"bchbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"bchbtc", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } + ] diff --git a/mocks/api/v2/dena/market/orders/GET--market=bchzar&state=cancel.mock b/mocks/api/v2/dena/market/orders/GET--market=bchzar&state=cancel.mock new file mode 100644 index 0000000..f65d4a8 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=bchzar&state=cancel.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162167, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"bchzar", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162119, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"bchzar", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162003, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"cancel", + "market":"bchzar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=bchzar&state=done.mock b/mocks/api/v2/dena/market/orders/GET--market=bchzar&state=done.mock new file mode 100644 index 0000000..f0b2fd2 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=bchzar&state=done.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162167, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"done", + "market":"bchzar", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162119, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"done", + "market":"bchzar", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162003, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"done", + "market":"bchzar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=bchzar&state=wait.mock b/mocks/api/v2/dena/market/orders/GET--market=bchzar&state=wait.mock new file mode 100644 index 0000000..0452534 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=bchzar&state=wait.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162167, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"bchzar", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162119, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"bchzar", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162003, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"bchzar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=bchzar.mock b/mocks/api/v2/dena/market/orders/GET--market=bchzar.mock new file mode 100644 index 0000000..0452534 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=bchzar.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162167, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"bchzar", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162119, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"bchzar", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162003, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"bchzar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=btczar&state=cancel.mock b/mocks/api/v2/dena/market/orders/GET--market=btczar&state=cancel.mock new file mode 100644 index 0000000..c157bab --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=btczar&state=cancel.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"btczar", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"btczar", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"sell", + "ord_type":"limit", + "price":"0.1", + "avg_price":"0.4", + "state":"cancel", + "market":"btczar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=btczar&state=done.mock b/mocks/api/v2/dena/market/orders/GET--market=btczar&state=done.mock new file mode 100644 index 0000000..5015be6 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=btczar&state=done.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"done", + "market":"btczar", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"done", + "market":"btczar", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"sell", + "ord_type":"limit", + "price":"0.1", + "avg_price":"0.4", + "state":"done", + "market":"btczar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=btczar&state=wait.mock b/mocks/api/v2/dena/market/orders/GET--market=btczar&state=wait.mock new file mode 100644 index 0000000..1e235a2 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=btczar&state=wait.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":161, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"btczar", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":171, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"btczar", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":181, + "side":"sell", + "ord_type":"limit", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"btczar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=btczar.mock b/mocks/api/v2/dena/market/orders/GET--market=btczar.mock new file mode 100644 index 0000000..f92e997 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=btczar.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"btczar", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"btczar", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"sell", + "ord_type":"limit", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"btczar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=dashbtc&state=cancel.mock b/mocks/api/v2/dena/market/orders/GET--market=dashbtc&state=cancel.mock new file mode 100644 index 0000000..c1cf768 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=dashbtc&state=cancel.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"dashbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"dashbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"cancel", + "market":"dashbtc", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } + ] diff --git a/mocks/api/v2/dena/market/orders/GET--market=dashbtc&state=done.mock b/mocks/api/v2/dena/market/orders/GET--market=dashbtc&state=done.mock new file mode 100644 index 0000000..6e0ac9d --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=dashbtc&state=done.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"done", + "market":"dashbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"done", + "market":"dashbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"done", + "market":"dashbtc", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } + ] diff --git a/mocks/api/v2/dena/market/orders/GET--market=dashbtc&state=wait.mock b/mocks/api/v2/dena/market/orders/GET--market=dashbtc&state=wait.mock new file mode 100644 index 0000000..c3274cd --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=dashbtc&state=wait.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"dashbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"dashbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"dashbtc", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } + ] diff --git a/mocks/api/v2/dena/market/orders/GET--market=dashbtc.mock b/mocks/api/v2/dena/market/orders/GET--market=dashbtc.mock new file mode 100644 index 0000000..c3274cd --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=dashbtc.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"dashbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"dashbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"dashbtc", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } + ] diff --git a/mocks/api/v2/dena/market/orders/GET--market=dashzar&state=cancel.mock b/mocks/api/v2/dena/market/orders/GET--market=dashzar&state=cancel.mock new file mode 100644 index 0000000..f86e1cd --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=dashzar&state=cancel.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162167, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"dashzar", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162119, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"dashzar", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162003, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"cancel", + "market":"dashzar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=dashzar&state=done.mock b/mocks/api/v2/dena/market/orders/GET--market=dashzar&state=done.mock new file mode 100644 index 0000000..a431f63 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=dashzar&state=done.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162167, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"done", + "market":"dashzar", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162119, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"done", + "market":"dashzar", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162003, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"done", + "market":"dashzar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=dashzar&state=wait.mock b/mocks/api/v2/dena/market/orders/GET--market=dashzar&state=wait.mock new file mode 100644 index 0000000..e1906aa --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=dashzar&state=wait.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162167, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"dashzar", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162119, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"dashzar", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162003, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"dashzar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=dashzar.mock b/mocks/api/v2/dena/market/orders/GET--market=dashzar.mock new file mode 100644 index 0000000..e1906aa --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=dashzar.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162167, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"dashzar", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162119, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"dashzar", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162003, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"dashzar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=ethbtc&state=cancel.mock b/mocks/api/v2/dena/market/orders/GET--market=ethbtc&state=cancel.mock new file mode 100644 index 0000000..a896d46 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=ethbtc&state=cancel.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"ethbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"ethbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"cancel", + "market":"ethbtc", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } + ] diff --git a/mocks/api/v2/dena/market/orders/GET--market=ethbtc&state=done.mock b/mocks/api/v2/dena/market/orders/GET--market=ethbtc&state=done.mock new file mode 100644 index 0000000..cf13a28 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=ethbtc&state=done.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"done", + "market":"ethbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"done", + "market":"ethbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"done", + "market":"ethbtc", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } + ] diff --git a/mocks/api/v2/dena/market/orders/GET--market=ethbtc&state=wait.mock b/mocks/api/v2/dena/market/orders/GET--market=ethbtc&state=wait.mock new file mode 100644 index 0000000..60e62cb --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=ethbtc&state=wait.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"ethbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"ethbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"ethbtc", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } + ] diff --git a/mocks/api/v2/dena/market/orders/GET--market=ethbtc.mock b/mocks/api/v2/dena/market/orders/GET--market=ethbtc.mock new file mode 100644 index 0000000..60e62cb --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=ethbtc.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"ethbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"ethbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"ethbtc", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } + ] diff --git a/mocks/api/v2/dena/market/orders/GET--market=ethusd&state=cancel.mock b/mocks/api/v2/dena/market/orders/GET--market=ethusd&state=cancel.mock new file mode 100644 index 0000000..8994268 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=ethusd&state=cancel.mock @@ -0,0 +1,37 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + { + "id": 7063, + "side": "buy", + "ord_type": "limit", + "price": "10.0", + "avg_price": "0.0", + "state": "cancel", + "market": "ethusd", + "created_at": "2018-12-14T11:16:28+01:00", + "origin_volume": "1.0", + "remaining_volume": "1.0", + "executed_volume": "0.0", + "trades_count": 0 + }, + { + "id": 7064, + "side": "sell", + "ord_type": "limit", + "price": "20.0", + "avg_price": "0.0", + "state": "cancel", + "market": "ethusd", + "created_at": "2018-12-14T11:18:20+01:00", + "origin_volume": "2.0", + "remaining_volume": "2.0", + "executed_volume": "0.0", + "trades_count": 0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=ethusd&state=done.mock b/mocks/api/v2/dena/market/orders/GET--market=ethusd&state=done.mock new file mode 100644 index 0000000..02dd01b --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=ethusd&state=done.mock @@ -0,0 +1,37 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + { + "id": 7063, + "side": "buy", + "ord_type": "limit", + "price": "10.0", + "avg_price": "0.0", + "state": "done", + "market": "ethusd", + "created_at": "2018-12-14T11:16:28+01:00", + "origin_volume": "1.0", + "remaining_volume": "1.0", + "executed_volume": "0.0", + "trades_count": 0 + }, + { + "id": 7064, + "side": "sell", + "ord_type": "limit", + "price": "20.0", + "avg_price": "0.0", + "state": "done", + "market": "ethusd", + "created_at": "2018-12-14T11:18:20+01:00", + "origin_volume": "2.0", + "remaining_volume": "2.0", + "executed_volume": "0.0", + "trades_count": 0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=ethusd&state=wait.mock b/mocks/api/v2/dena/market/orders/GET--market=ethusd&state=wait.mock new file mode 100644 index 0000000..c8ece02 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=ethusd&state=wait.mock @@ -0,0 +1,37 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + { + "id": 7063, + "side": "buy", + "ord_type": "limit", + "price": "10.0", + "avg_price": "0.0", + "state": "wait", + "market": "ethusd", + "created_at": "2018-12-14T11:16:28+01:00", + "origin_volume": "1.0", + "remaining_volume": "1.0", + "executed_volume": "0.0", + "trades_count": 0 + }, + { + "id": 7064, + "side": "sell", + "ord_type": "limit", + "price": "20.0", + "avg_price": "0.0", + "state": "wait", + "market": "ethusd", + "created_at": "2018-12-14T11:18:20+01:00", + "origin_volume": "2.0", + "remaining_volume": "2.0", + "executed_volume": "0.0", + "trades_count": 0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=ethusd.mock b/mocks/api/v2/dena/market/orders/GET--market=ethusd.mock new file mode 100644 index 0000000..c8ece02 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=ethusd.mock @@ -0,0 +1,37 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + { + "id": 7063, + "side": "buy", + "ord_type": "limit", + "price": "10.0", + "avg_price": "0.0", + "state": "wait", + "market": "ethusd", + "created_at": "2018-12-14T11:16:28+01:00", + "origin_volume": "1.0", + "remaining_volume": "1.0", + "executed_volume": "0.0", + "trades_count": 0 + }, + { + "id": 7064, + "side": "sell", + "ord_type": "limit", + "price": "20.0", + "avg_price": "0.0", + "state": "wait", + "market": "ethusd", + "created_at": "2018-12-14T11:18:20+01:00", + "origin_volume": "2.0", + "remaining_volume": "2.0", + "executed_volume": "0.0", + "trades_count": 0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=ethzar&state=cancel.mock b/mocks/api/v2/dena/market/orders/GET--market=ethzar&state=cancel.mock new file mode 100644 index 0000000..ae700ee --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=ethzar&state=cancel.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"ethzar", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"ethzar", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"cancel", + "market":"ethzar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } + ] diff --git a/mocks/api/v2/dena/market/orders/GET--market=ethzar&state=done.mock b/mocks/api/v2/dena/market/orders/GET--market=ethzar&state=done.mock new file mode 100644 index 0000000..170f8ef --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=ethzar&state=done.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"done", + "market":"ethzar", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"done", + "market":"ethzar", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"done", + "market":"ethzar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } + ] diff --git a/mocks/api/v2/dena/market/orders/GET--market=ethzar&state=wait.mock b/mocks/api/v2/dena/market/orders/GET--market=ethzar&state=wait.mock new file mode 100644 index 0000000..cbd19b4 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=ethzar&state=wait.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"ethzar", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"ethzar", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"ethzar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } + ] diff --git a/mocks/api/v2/dena/market/orders/GET--market=ethzar.mock b/mocks/api/v2/dena/market/orders/GET--market=ethzar.mock new file mode 100644 index 0000000..cbd19b4 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=ethzar.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"ethzar", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"ethzar", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"ethzar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } + ] diff --git a/mocks/api/v2/dena/market/orders/GET--market=eurusd&state=cancel.mock b/mocks/api/v2/dena/market/orders/GET--market=eurusd&state=cancel.mock new file mode 100644 index 0000000..c437b9f --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=eurusd&state=cancel.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162167, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"eurusd", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162119, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"eurusd", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162003, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"cancel", + "market":"eurusd", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=eurusd&state=done.mock b/mocks/api/v2/dena/market/orders/GET--market=eurusd&state=done.mock new file mode 100644 index 0000000..24c2e48 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=eurusd&state=done.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162167, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"done", + "market":"eurusd", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162119, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"done", + "market":"eurusd", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162003, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"done", + "market":"eurusd", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=eurusd&state=wait.mock b/mocks/api/v2/dena/market/orders/GET--market=eurusd&state=wait.mock new file mode 100644 index 0000000..dc97d56 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=eurusd&state=wait.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162167, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"eurusd", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162119, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"eurusd", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162003, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"eurusd", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=eurusd.mock b/mocks/api/v2/dena/market/orders/GET--market=eurusd.mock new file mode 100644 index 0000000..dc97d56 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=eurusd.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162167, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"eurusd", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162119, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"eurusd", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162003, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"eurusd", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=ltcbtc&state=cancel.mock b/mocks/api/v2/dena/market/orders/GET--market=ltcbtc&state=cancel.mock new file mode 100644 index 0000000..4267724 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=ltcbtc&state=cancel.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"ltcbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"ltcbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"cancel", + "market":"ltcbtc", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } + ] diff --git a/mocks/api/v2/dena/market/orders/GET--market=ltcbtc&state=done.mock b/mocks/api/v2/dena/market/orders/GET--market=ltcbtc&state=done.mock new file mode 100644 index 0000000..6e11dc6 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=ltcbtc&state=done.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"done", + "market":"ltcbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"done", + "market":"ltcbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"done", + "market":"ltcbtc", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } + ] diff --git a/mocks/api/v2/dena/market/orders/GET--market=ltcbtc&state=wait.mock b/mocks/api/v2/dena/market/orders/GET--market=ltcbtc&state=wait.mock new file mode 100644 index 0000000..bb972c5 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=ltcbtc&state=wait.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"ltcbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"ltcbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"ltcbtc", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } + ] diff --git a/mocks/api/v2/dena/market/orders/GET--market=ltcbtc.mock b/mocks/api/v2/dena/market/orders/GET--market=ltcbtc.mock new file mode 100644 index 0000000..bb972c5 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=ltcbtc.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"ltcbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"ltcbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"ltcbtc", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } + ] diff --git a/mocks/api/v2/dena/market/orders/GET--market=ltczar&state=cancel.mock b/mocks/api/v2/dena/market/orders/GET--market=ltczar&state=cancel.mock new file mode 100644 index 0000000..7aacc37 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=ltczar&state=cancel.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162167, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"ltczar", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162119, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"ltczar", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162003, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"cancel", + "market":"ltczar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=ltczar&state=done.mock b/mocks/api/v2/dena/market/orders/GET--market=ltczar&state=done.mock new file mode 100644 index 0000000..3ed1f16 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=ltczar&state=done.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162167, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"done", + "market":"ltczar", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162119, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"done", + "market":"ltczar", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162003, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"done", + "market":"ltczar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=ltczar&state=wait.mock b/mocks/api/v2/dena/market/orders/GET--market=ltczar&state=wait.mock new file mode 100644 index 0000000..0078496 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=ltczar&state=wait.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162167, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"ltczar", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162119, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"ltczar", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162003, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"ltczar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=ltczar.mock b/mocks/api/v2/dena/market/orders/GET--market=ltczar.mock new file mode 100644 index 0000000..0078496 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=ltczar.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162167, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"ltczar", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162119, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"ltczar", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162003, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"ltczar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=xrpbtc&state=cancel.mock b/mocks/api/v2/dena/market/orders/GET--market=xrpbtc&state=cancel.mock new file mode 100644 index 0000000..dd22168 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=xrpbtc&state=cancel.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"xrpbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"xrpbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"cancel", + "market":"xrpbtc", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } + ] diff --git a/mocks/api/v2/dena/market/orders/GET--market=xrpbtc&state=done.mock b/mocks/api/v2/dena/market/orders/GET--market=xrpbtc&state=done.mock new file mode 100644 index 0000000..1a8efe4 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=xrpbtc&state=done.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"done", + "market":"xrpbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"done", + "market":"xrpbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"done", + "market":"xrpbtc", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } + ] diff --git a/mocks/api/v2/dena/market/orders/GET--market=xrpbtc&state=wait.mock b/mocks/api/v2/dena/market/orders/GET--market=xrpbtc&state=wait.mock new file mode 100644 index 0000000..a2e7960 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=xrpbtc&state=wait.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"xrpbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"xrpbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"xrpbtc", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } + ] diff --git a/mocks/api/v2/dena/market/orders/GET--market=xrpbtc.mock b/mocks/api/v2/dena/market/orders/GET--market=xrpbtc.mock new file mode 100644 index 0000000..a2e7960 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=xrpbtc.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162432, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"xrpbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162421, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"xrpbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162543, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"xrpbtc", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } + ] diff --git a/mocks/api/v2/dena/market/orders/GET--market=xrpzar&state=cancel.mock b/mocks/api/v2/dena/market/orders/GET--market=xrpzar&state=cancel.mock new file mode 100644 index 0000000..5f7712d --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=xrpzar&state=cancel.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162167, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"xrpzar", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162119, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"xrpzar", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162003, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"cancel", + "market":"xrpzar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=xrpzar&state=done.mock b/mocks/api/v2/dena/market/orders/GET--market=xrpzar&state=done.mock new file mode 100644 index 0000000..2c8f8ea --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=xrpzar&state=done.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162167, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"done", + "market":"xrpzar", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162119, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"done", + "market":"xrpzar", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162003, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"done", + "market":"xrpzar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=xrpzar&state=wait.mock b/mocks/api/v2/dena/market/orders/GET--market=xrpzar&state=wait.mock new file mode 100644 index 0000000..7dbcddf --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=xrpzar&state=wait.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162167, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"xrpzar", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162119, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"xrpzar", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162003, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"xrpzar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--market=xrpzar.mock b/mocks/api/v2/dena/market/orders/GET--market=xrpzar.mock new file mode 100644 index 0000000..48f0a64 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--market=xrpzar.mock @@ -0,0 +1,48 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162167, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"xrpzar", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162119, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"xrpzar", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + {"id":162003, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"xrpzar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--page=1&limit=25&state=wait.mock b/mocks/api/v2/dena/market/orders/GET--page=1&limit=25&state=wait.mock new file mode 100644 index 0000000..5cc14fa --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--page=1&limit=25&state=wait.mock @@ -0,0 +1,34 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + { "id":16, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"ethbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { "id":162, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"btczar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/orders/GET--page=1&limit=25.mock b/mocks/api/v2/dena/market/orders/GET--page=1&limit=25.mock new file mode 100644 index 0000000..e457e70 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--page=1&limit=25.mock @@ -0,0 +1,358 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + { + "id":999, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"ethbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":534, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"ethbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":166452, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"btczar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":645, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"ethbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":16456, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"ethbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":17662, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"btczar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":16972, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"ethbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":1676, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"ethbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":169782, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"btczar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":160002, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"ethbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":1006, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"ethbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":162342, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"btczar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":16552, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"ethbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":1665447, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"ethbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":168672, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"btczar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":1687872, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"ethbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":178786, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"ethbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":168792, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"btczar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":16642, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"ethbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":13456, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"ethbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":1656892, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"btczar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":156952, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"ethbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":15668, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"wait", + "market":"ethbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":162742, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"wait", + "market":"btczar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":1625472, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"ethbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] \ No newline at end of file diff --git a/mocks/api/v2/dena/market/orders/GET--page=2&limit=25.mock b/mocks/api/v2/dena/market/orders/GET--page=2&limit=25.mock new file mode 100644 index 0000000..2cdac0e --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET--page=2&limit=25.mock @@ -0,0 +1,50 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + { + "id":675, + "side":"buy", + "ord_type":"limit", + "price":"0.5", + "avg_price":"0.5", + "state":"cancel", + "market":"ethbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":101, + "side":"sell", + "ord_type":"limit", + "price":"0.5", + "avg_price":"0.5", + "state":"wait", + "market":"ethbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { + "id":102, + "side":"buy", + "ord_type":"market", + "price":"0.5", + "avg_price":"0.5", + "state":"wait", + "market":"btczar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] \ No newline at end of file diff --git a/mocks/api/v2/dena/market/orders/GET.mock b/mocks/api/v2/dena/market/orders/GET.mock new file mode 100644 index 0000000..99d601d --- /dev/null +++ b/mocks/api/v2/dena/market/orders/GET.mock @@ -0,0 +1,22 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + { "id":1, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"ethbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"50", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/orders/OPTIONS.mock b/mocks/api/v2/dena/market/orders/OPTIONS.mock new file mode 100644 index 0000000..53f6e03 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/OPTIONS.mock @@ -0,0 +1,6 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: * diff --git a/mocks/api/v2/dena/market/orders/POST--market=ethbtc&side=buy&volume=0.5&ord_type=market.mock b/mocks/api/v2/dena/market/orders/POST--market=ethbtc&side=buy&volume=0.5&ord_type=market.mock new file mode 100644 index 0000000..abf544a --- /dev/null +++ b/mocks/api/v2/dena/market/orders/POST--market=ethbtc&side=buy&volume=0.5&ord_type=market.mock @@ -0,0 +1,24 @@ +HTTP/2 201 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: * + + + +{ + "id": 7070, + "side": "buy", + "ord_type": "market", + "price": null, + "avg_price": "0.0", + "state": "wait", + "market": "ethusd", + "created_at": "2018-12-14T11:34:44+01:00", + "origin_volume": "0.5", + "remaining_volume": "0.5", + "executed_volume": "0.0", + "trades_count": 0 +} diff --git a/mocks/api/v2/dena/market/orders/POST--market=ethbtc&side=buy&volume=1.5&ord_type=market.mock b/mocks/api/v2/dena/market/orders/POST--market=ethbtc&side=buy&volume=1.5&ord_type=market.mock new file mode 100644 index 0000000..abf544a --- /dev/null +++ b/mocks/api/v2/dena/market/orders/POST--market=ethbtc&side=buy&volume=1.5&ord_type=market.mock @@ -0,0 +1,24 @@ +HTTP/2 201 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: * + + + +{ + "id": 7070, + "side": "buy", + "ord_type": "market", + "price": null, + "avg_price": "0.0", + "state": "wait", + "market": "ethusd", + "created_at": "2018-12-14T11:34:44+01:00", + "origin_volume": "0.5", + "remaining_volume": "0.5", + "executed_volume": "0.0", + "trades_count": 0 +} diff --git a/mocks/api/v2/dena/market/orders/POST--market=ethbtc&side=sell&volume=2&ord_type=limit&price=20.mock b/mocks/api/v2/dena/market/orders/POST--market=ethbtc&side=sell&volume=2&ord_type=limit&price=20.mock new file mode 100644 index 0000000..4e2b2d4 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/POST--market=ethbtc&side=sell&volume=2&ord_type=limit&price=20.mock @@ -0,0 +1,23 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: * + + +{ + "id": 7063, + "side": "buy", + "ord_type": "limit", + "price": "10.0", + "avg_price": "0.0", + "state": "wait", + "market": "ethusd", + "created_at": "2018-12-14T11:16:28+01:00", + "origin_volume": "1.0", + "remaining_volume": "1.0", + "executed_volume": "0.0", + "trades_count": 0 +} diff --git a/mocks/api/v2/dena/market/orders/POST--market=ethusd&side=buy&volume=0.5&ord_type=market.mock b/mocks/api/v2/dena/market/orders/POST--market=ethusd&side=buy&volume=0.5&ord_type=market.mock new file mode 100644 index 0000000..abf544a --- /dev/null +++ b/mocks/api/v2/dena/market/orders/POST--market=ethusd&side=buy&volume=0.5&ord_type=market.mock @@ -0,0 +1,24 @@ +HTTP/2 201 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: * + + + +{ + "id": 7070, + "side": "buy", + "ord_type": "market", + "price": null, + "avg_price": "0.0", + "state": "wait", + "market": "ethusd", + "created_at": "2018-12-14T11:34:44+01:00", + "origin_volume": "0.5", + "remaining_volume": "0.5", + "executed_volume": "0.0", + "trades_count": 0 +} diff --git a/mocks/api/v2/dena/market/orders/POST--market=ethusd&side=buy&volume=1&ord_type=limit&price=10.mock b/mocks/api/v2/dena/market/orders/POST--market=ethusd&side=buy&volume=1&ord_type=limit&price=10.mock new file mode 100644 index 0000000..6547c82 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/POST--market=ethusd&side=buy&volume=1&ord_type=limit&price=10.mock @@ -0,0 +1,23 @@ +HTTP/2 201 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: * + + +{ + "id": 7063, + "side": "buy", + "ord_type": "limit", + "price": "10.0", + "avg_price": "0.0", + "state": "wait", + "market": "ethusd", + "created_at": "2018-12-14T11:16:28+01:00", + "origin_volume": "1.0", + "remaining_volume": "1.0", + "executed_volume": "0.0", + "trades_count": 0 +} diff --git a/mocks/api/v2/dena/market/orders/POST--market=ethusd&side=sell&volume=1&ord_type=market.mock b/mocks/api/v2/dena/market/orders/POST--market=ethusd&side=sell&volume=1&ord_type=market.mock new file mode 100644 index 0000000..8915c27 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/POST--market=ethusd&side=sell&volume=1&ord_type=market.mock @@ -0,0 +1,23 @@ +HTTP/2 201 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: * + + +{ + "id": 7071, + "side": "sell", + "ord_type": "market", + "price": null, + "avg_price": "0.0", + "state": "wait", + "market": "ethusd", + "created_at": "2018-12-14T11:36:21+01:00", + "origin_volume": "1.0", + "remaining_volume": "1.0", + "executed_volume": "0.0", + "trades_count": 0 +} diff --git a/mocks/api/v2/dena/market/orders/POST--market=ethusd&side=sell&volume=2&ord_type=limit&price=20.mock b/mocks/api/v2/dena/market/orders/POST--market=ethusd&side=sell&volume=2&ord_type=limit&price=20.mock new file mode 100644 index 0000000..6cefb20 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/POST--market=ethusd&side=sell&volume=2&ord_type=limit&price=20.mock @@ -0,0 +1,24 @@ +HTTP/2 201 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: * + + + +{ + "id": 7064, + "side": "sell", + "ord_type": "limit", + "price": "20.0", + "avg_price": "0.0", + "state": "wait", + "market": "ethusd", + "created_at": "2018-12-14T11:18:20+01:00", + "origin_volume": "2.0", + "remaining_volume": "2.0", + "executed_volume": "0.0", + "trades_count": 0 +} diff --git a/mocks/api/v2/dena/market/orders/POST.mock b/mocks/api/v2/dena/market/orders/POST.mock new file mode 100644 index 0000000..7aa913c --- /dev/null +++ b/mocks/api/v2/dena/market/orders/POST.mock @@ -0,0 +1,24 @@ +HTTP/2 201 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: content-type, x-csrf-token + + + +{ + "id": 7064, + "side": "sell", + "ord_type": "limit", + "price": "20.0", + "avg_price": "0.0", + "state": "wait", + "market": "ethusd", + "created_at": "2018-12-14T11:18:20+01:00", + "origin_volume": "2.0", + "remaining_volume": "2.0", + "executed_volume": "0.0", + "trades_count": 0 +} diff --git a/mocks/api/v2/dena/market/orders/__/cancel/OPTIONS.mock b/mocks/api/v2/dena/market/orders/__/cancel/OPTIONS.mock new file mode 100644 index 0000000..21a4e6e --- /dev/null +++ b/mocks/api/v2/dena/market/orders/__/cancel/OPTIONS.mock @@ -0,0 +1,6 @@ +HTTP/2 201 +Content-Type: application/json; charset=utf-8 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Allow-Headers: * diff --git a/mocks/api/v2/dena/market/orders/__/cancel/POST.mock b/mocks/api/v2/dena/market/orders/__/cancel/POST.mock new file mode 100644 index 0000000..21a4e6e --- /dev/null +++ b/mocks/api/v2/dena/market/orders/__/cancel/POST.mock @@ -0,0 +1,6 @@ +HTTP/2 201 +Content-Type: application/json; charset=utf-8 +access-control-allow-origin: * +access-control-allow-methods: GET, POST, PUT, PATCH, DELETE +access-control-allow-headers: Origin, X-Requested-With, Content-Type, Accept, Authorization +Access-Control-Allow-Headers: * diff --git a/mocks/api/v2/dena/market/orders/cancel/OPTIONS.mock b/mocks/api/v2/dena/market/orders/cancel/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/market/orders/cancel/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/market/orders/cancel/POST.mock b/mocks/api/v2/dena/market/orders/cancel/POST.mock new file mode 100644 index 0000000..084025d --- /dev/null +++ b/mocks/api/v2/dena/market/orders/cancel/POST.mock @@ -0,0 +1,49 @@ +HTTP/2 201 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: * + +[ + { "id":162, + "side":"buy", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"ethbtc", + "created_at":"2018-11-29T16:54:46+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { "id":16, + "side":"sell", + "ord_type":"limit", + "price":"0.3", + "avg_price":"0.4", + "state":"cancel", + "market":"ethbtc", + "created_at":"2018-11-20T10:24:48+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + }, + { "id":162, + "side":"buy", + "ord_type":"market", + "price":"0.1", + "avg_price":"0.4", + "state":"cancel", + "market":"btczar", + "created_at":"2018-11-09T13:21:55+01:00", + "origin_volume":"123.1234", + "remaining_volume":"123.1234", + "executed_volume":"0.0", + "trades_count":0 + } +] diff --git a/mocks/api/v2/dena/market/trades/--GET--page=1&limit=25.mock b/mocks/api/v2/dena/market/trades/--GET--page=1&limit=25.mock new file mode 100644 index 0000000..e34cbc3 --- /dev/null +++ b/mocks/api/v2/dena/market/trades/--GET--page=1&limit=25.mock @@ -0,0 +1,17 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":35,"price":10894000,"amount":0.1164,"total":1268061.6,"market":"btczar","created_at":1594951964,"taker_type":"buy"}, + {"id":34,"price":10894000,"amount":0.2414,"total":2629811.6,"market":"btczar","created_at":1594951957,"taker_type":"sell"} +] + + +[ + {"id":254044,"price":"129496907.0","amount":"0.02","total":"2589938.14","fee_currency":"irt","fee":"0.001","fee_amount":"2589.93814","market":"ethgoerliirt","created_at":"2021-11-03T21:44:31+03:30","taker_type":"buy","side":"sell","order_id":264156}, + {"id":214027,"price":"127523269.0","amount":"0.05049","total":"6438649.85181","fee_currency":"irt","fee":"0.0035","fee_amount":"22535.274481335","market":"ethgoerliirt","created_at":"2021-11-03T11:29:47+03:30","taker_type":"sell","side":"sell","order_id":242244}, + {"id":214026,"price":"127675126.0","amount":"0.19951","total":"25472464.38826","fee_currency":"irt","fee":"0.0035","fee_amount":"89153.62535891","market":"ethgoerliirt","created_at":"2021-11-03T11:29:47+03:30","taker_type":"sell","side":"sell","order_id":242244} +] \ No newline at end of file diff --git a/mocks/api/v2/dena/market/trades/GET--market=bchzar.mock b/mocks/api/v2/dena/market/trades/GET--market=bchzar.mock new file mode 100644 index 0000000..d34fa00 --- /dev/null +++ b/mocks/api/v2/dena/market/trades/GET--market=bchzar.mock @@ -0,0 +1,159 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id": 162325, + "price": "0.09", + "volume": "0.031", + "funds": "0.00279", + "market": "bchzar", + "created_at": "2018-12-12T11:40:55+01:00", + "side": "bid" + }, + {"id": 162324, + "price": "0.09", + "volume": "0.069", + "funds": "0.00621", + "market": "bchzar", + "created_at": "2018-12-12T11:40:13+01:00", + "side": "bid" + }, + {"id": 162323, + "price": "0.1", + "volume": "0.031", + "funds": "0.0031", + "market": "bchzar", + "created_at": "2018-12-12T11:40:13+01:00", + "side": "bid" + }, + {"id":162167, + "price":"0.3", + "volume":"0.001", + "funds":"0.0003", + "market":"bchzar", + "created_at":"2018-11-29T16:54:43+01:00", + "side":"bid", + "order_id":202857 + }, + {"id":162119, + "price":"0.3", + "volume":"0.02", + "funds":"0.006", + "market":"bchzar", + "created_at":"2018-11-20T10:44:48+01:00", + "side":"ask", + "order_id":202400 + }, + {"id":162003, + "price":"0.1", + "volume":"0.01", + "funds":"0.001", + "market":"bchzar", + "created_at":"2018-11-09T14:21:51+01:00", + "side":"ask", + "order_id":202130 + }, + {"id":162002, + "price":"0.1", + "volume":"0.01", + "funds":"0.001", + "market":"bchzar", + "created_at":"2018-11-09T14:20:14+01:00", + "side":"ask", + "order_id":202129 + }, + {"id":161953, + "price":"0.1", + "volume":"0.1", + "funds":"0.01", + "market":"bchzar", + "created_at":"2018-10-31T10:29:43+01:00", + "side":"ask", + "order_id":201953 + }, + {"id":161952, + "price":"0.1", + "volume":"0.1", + "funds":"0.01", + "market":"bchzar", + "created_at":"2018-10-31T10:29:32+01:00", + "side":"ask", + "order_id":201952 + }, + {"id":161951, + "price":"0.15", + "volume":"0.1", + "funds":"0.015", + "market":"bchzar", + "created_at":"2018-10-31T10:29:10+01:00", + "side":"ask", + "order_id":201951 + }, + {"id":161886, + "price":"0.1", + "volume":"1.0", + "funds":"0.1", + "market":"bchzar", + "created_at":"2018-10-29T17:30:41+01:00", + "side":"ask", + "order_id":201835 + }, + {"id":161878, + "price":"0.1", + "volume":"1.0", + "funds":"0.1", + "market":"bchzar", + "created_at":"2018-10-29T09:17:29+01:00", + "side":"ask", + "order_id":201798 + }, + {"id":161829, + "price":"0.4", + "volume":"0.5", + "funds":"0.2", + "market":"bchzar", + "created_at":"2018-10-24T09:18:26+02:00", + "side":"ask", + "order_id":201654 + }, + {"id":161821, + "price":"0.5", + "volume":"0.1", + "funds":"0.05", + "market":"bchzar", + "created_at":"2018-10-23T17:13:35+02:00", + "side":"bid", + "order_id":201631 + }, + {"id":161820, + "price":"0.01", + "volume":"0.2", + "funds":"0.002", + "market":"bchzar", + "created_at":"2018-10-23T16:59:03+02:00", + "side":"bid", + "order_id":201629 + }, + {"id":161819, + "price":"0.01", + "volume":"0.4", + "funds":"0.004", + "market":"bchzar", + "created_at":"2018-10-23T16:58:38+02:00", + "side":"bid", + "order_id":201628 + }, + {"id":161818, + "price":"0.01", + "volume":"0.4", + "funds":"0.004", + "market":"bchzar", + "created_at":"2018-10-23T16:58:38+02:00", + "side":"bid", + "order_id":201627 + } +] \ No newline at end of file diff --git a/mocks/api/v2/dena/market/trades/GET--market=btczar.mock b/mocks/api/v2/dena/market/trades/GET--market=btczar.mock new file mode 100644 index 0000000..141f3ba --- /dev/null +++ b/mocks/api/v2/dena/market/trades/GET--market=btczar.mock @@ -0,0 +1,159 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id": 162325, + "price": "0.09", + "volume": "0.031", + "funds": "0.00279", + "market": "btczar", + "created_at": "2018-12-12T11:40:55+01:00", + "side": "bid" + }, + {"id": 162324, + "price": "0.09", + "volume": "0.069", + "funds": "0.00621", + "market": "btczar", + "created_at": "2018-12-12T11:40:13+01:00", + "side": "bid" + }, + {"id": 162323, + "price": "0.1", + "volume": "0.031", + "funds": "0.0031", + "market": "btczar", + "created_at": "2018-12-12T11:40:13+01:00", + "side": "bid" + }, + {"id":162167, + "price":"0.3", + "volume":"0.001", + "funds":"0.0003", + "market":"btczar", + "created_at":"2018-11-29T16:54:43+01:00", + "side":"bid", + "order_id":202857 + }, + {"id":162119, + "price":"0.3", + "volume":"0.02", + "funds":"0.006", + "market":"btczar", + "created_at":"2018-11-20T10:44:48+01:00", + "side":"ask", + "order_id":202400 + }, + {"id":162003, + "price":"0.1", + "volume":"0.01", + "funds":"0.001", + "market":"btczar", + "created_at":"2018-11-09T14:21:51+01:00", + "side":"ask", + "order_id":202130 + }, + {"id":162002, + "price":"0.1", + "volume":"0.01", + "funds":"0.001", + "market":"btczar", + "created_at":"2018-11-09T14:20:14+01:00", + "side":"ask", + "order_id":202129 + }, + {"id":161953, + "price":"0.1", + "volume":"0.1", + "funds":"0.01", + "market":"btczar", + "created_at":"2018-10-31T10:29:43+01:00", + "side":"ask", + "order_id":201953 + }, + {"id":161952, + "price":"0.1", + "volume":"0.1", + "funds":"0.01", + "market":"btczar", + "created_at":"2018-10-31T10:29:32+01:00", + "side":"ask", + "order_id":201952 + }, + {"id":161951, + "price":"0.15", + "volume":"0.1", + "funds":"0.015", + "market":"btczar", + "created_at":"2018-10-31T10:29:10+01:00", + "side":"ask", + "order_id":201951 + }, + {"id":161886, + "price":"0.1", + "volume":"1.0", + "funds":"0.1", + "market":"btczar", + "created_at":"2018-10-29T17:30:41+01:00", + "side":"ask", + "order_id":201835 + }, + {"id":161878, + "price":"0.1", + "volume":"1.0", + "funds":"0.1", + "market":"btczar", + "created_at":"2018-10-29T09:17:29+01:00", + "side":"ask", + "order_id":201798 + }, + {"id":161829, + "price":"0.4", + "volume":"0.5", + "funds":"0.2", + "market":"btczar", + "created_at":"2018-10-24T09:18:26+02:00", + "side":"ask", + "order_id":201654 + }, + {"id":161821, + "price":"0.5", + "volume":"0.1", + "funds":"0.05", + "market":"btczar", + "created_at":"2018-10-23T17:13:35+02:00", + "side":"bid", + "order_id":201631 + }, + {"id":161820, + "price":"0.01", + "volume":"0.2", + "funds":"0.002", + "market":"btczar", + "created_at":"2018-10-23T16:59:03+02:00", + "side":"bid", + "order_id":201629 + }, + {"id":161819, + "price":"0.01", + "volume":"0.4", + "funds":"0.004", + "market":"btczar", + "created_at":"2018-10-23T16:58:38+02:00", + "side":"bid", + "order_id":201628 + }, + {"id":161818, + "price":"0.01", + "volume":"0.4", + "funds":"0.004", + "market":"btczar", + "created_at":"2018-10-23T16:58:38+02:00", + "side":"bid", + "order_id":201627 + } +] \ No newline at end of file diff --git a/mocks/api/v2/dena/market/trades/GET--market=dashbtc.mock b/mocks/api/v2/dena/market/trades/GET--market=dashbtc.mock new file mode 100644 index 0000000..86f98ea --- /dev/null +++ b/mocks/api/v2/dena/market/trades/GET--market=dashbtc.mock @@ -0,0 +1,196 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + { + "id": 162325, + "price": "0.09", + "volume": "0.031", + "funds": "0.00279", + "market": "dashbtc", + "created_at": "2018-12-12T11:40:55+01:00", + "side": "bid" + }, + { + "id": 162324, + "price": "0.09", + "volume": "0.069", + "funds": "0.00621", + "market": "dashbtc", + "created_at": "2018-12-12T11:40:13+01:00", + "side": "bid" + }, + { + "id": 162323, + "price": "0.1", + "volume": "0.031", + "funds": "0.0031", + "market": "dashbtc", + "created_at": "2018-12-12T11:40:13+01:00", + "side": "bid" + }, + { + "id":161682, + "price":"0.0006", + "volume":"0.045", + "funds":"0.000027", + "market":"dashbtc", + "created_at":"2018-10-19T10:02:29+02:00", + "side":"ask", + "order_id":201357 + }, + { + "id":161829, + "price":"0.4", + "volume":"0.5", + "funds":"0.2", + "market":"dashbtc", + "created_at":"2018-10-24T09:18:26+02:00", + "side":"ask", + "order_id":201654 + }, + { + "id":161821, + "price":"0.5", + "volume":"0.1", + "funds":"0.05", + "market":"dashbtc", + "created_at":"2018-10-23T17:13:35+02:00", + "side":"bid", + "order_id":201631 + }, + { + "id":161820, + "price":"0.01", + "volume":"0.2", + "funds":"0.002", + "market":"dashbtc", + "created_at":"2018-10-23T16:59:03+02:00", + "side":"bid", + "order_id":201629 + }, + { + "id":161819, + "price":"0.01", + "volume":"0.4", + "funds":"0.004", + "market":"dashbtc", + "created_at":"2018-10-23T16:58:38+02:00", + "side":"bid", + "order_id":201628 + }, + { + "id":161818, + "price":"0.01", + "volume":"0.4", + "funds":"0.004", + "market":"dashbtc", + "created_at":"2018-10-23T16:58:38+02:00", + "side":"bid", + "order_id":201627 + }, + { + "id":161790, + "price":"0.0356", + "volume":"0.01", + "funds":"0.000356", + "market":"dashbtc", + "created_at":"2018-10-22T16:40:34+02:00", + "side":"bid", + "order_id":201564 + }, + { + "id":161789, + "price":"0.0356", + "volume":"0.01", + "funds":"0.000356", + "market":"dashbtc", + "created_at":"2018-10-22T16:29:22+02:00", + "side":"bid", + "order_id":201563 + }, + { + "id":161786, + "price":"0.0356", + "volume":"0.02", + "funds":"0.000712", + "market":"dashbtc", + "created_at":"2018-10-22T16:25:22+02:00", + "side":"bid", + "order_id":201558 + }, + { + "id":161782, + "price":"0.0356", + "volume":"0.01", + "funds":"0.000356", + "market":"dashbtc", + "created_at":"2018-10-22T16:20:25+02:00", + "side":"bid", + "order_id":201552 + }, + { + "id":161719, + "price":"1.0", + "volume":"0.0089", + "funds":"0.0089", + "market":"dashbtc", + "created_at":"2018-10-22T09:14:25+02:00", + "side":"bid", + "order_id":201441 + }, + { + "id":161718, + "price":"0.08", + "volume":"0.005", + "funds":"0.0004", + "market":"dashbtc", + "created_at":"2018-10-22T09:14:25+02:00", + "side":"ask", + "order_id":201436 + }, + { + "id":161715, + "price":"0.08", + "volume":"0.045", + "funds":"0.0036", + "market":"dashbtc", + "created_at":"2018-10-19T14:30:07+02:00", + "side":"ask", + "order_id":201436 + }, + { + "id":161686, + "price":"0.0006", + "volume":"0.005", + "funds":"0.000003", + "market":"dashbtc", + "created_at":"2018-10-19T10:47:20+02:00", + "side":"ask", + "order_id":201357 + }, + { + "id":161683, + "price":"0.0006", + "volume":"0.04", + "funds":"0.000024", + "market":"dashbtc", + "created_at":"2018-10-19T10:05:46+02:00", + "side":"ask", + "order_id":201357 + }, + { + "id":161682, + "price":"0.0006", + "volume":"0.045", + "funds":"0.000027", + "market":"dashbtc", + "created_at":"2018-10-19T10:02:29+02:00", + "side":"ask", + "order_id":201357 + } +] \ No newline at end of file diff --git a/mocks/api/v2/dena/market/trades/GET--market=ethbtc.mock b/mocks/api/v2/dena/market/trades/GET--market=ethbtc.mock new file mode 100644 index 0000000..2cba278 --- /dev/null +++ b/mocks/api/v2/dena/market/trades/GET--market=ethbtc.mock @@ -0,0 +1,459 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":162167, + "price":"0.3", + "volume":"0.001", + "funds":"0.0003", + "market":"ethbtc", + "created_at":"2018-11-29T16:54:43+01:00", + "side":"bid", + "order_id":202857 + }, + {"id":162119, + "price":"0.3", + "volume":"0.02", + "funds":"0.006", + "market":"ethbtc", + "created_at":"2018-11-20T10:44:48+01:00", + "side":"ask", + "order_id":202400 + }, + {"id":162003, + "price":"0.1", + "volume":"0.01", + "funds":"0.001", + "market":"ethbtc", + "created_at":"2018-11-09T14:21:51+01:00", + "side":"ask", + "order_id":202130 + }, + {"id":162002, + "price":"0.1", + "volume":"0.01", + "funds":"0.001", + "market":"ethbtc", + "created_at":"2018-11-09T14:20:14+01:00", + "side":"ask", + "order_id":202129 + }, + {"id":161953, + "price":"0.1", + "volume":"0.1", + "funds":"0.01", + "market":"ethbtc", + "created_at":"2018-10-31T10:29:43+01:00", + "side":"ask", + "order_id":201953 + }, + {"id":161952, + "price":"0.1", + "volume":"0.1", + "funds":"0.01", + "market":"ethbtc", + "created_at":"2018-10-31T10:29:32+01:00", + "side":"ask", + "order_id":201952 + }, + {"id":161951, + "price":"0.15", + "volume":"0.1", + "funds":"0.015", + "market":"ethbtc", + "created_at":"2018-10-31T10:29:10+01:00", + "side":"ask", + "order_id":201951 + }, + {"id":161886, + "price":"0.1", + "volume":"1.0", + "funds":"0.1", + "market":"ethbtc", + "created_at":"2018-10-29T17:30:41+01:00", + "side":"ask", + "order_id":201835 + }, + {"id":161878, + "price":"0.1", + "volume":"1.0", + "funds":"0.1", + "market":"ethbtc", + "created_at":"2018-10-29T09:17:29+01:00", + "side":"ask", + "order_id":201798 + }, + {"id":161829, + "price":"0.4", + "volume":"0.5", + "funds":"0.2", + "market":"ethbtc", + "created_at":"2018-10-24T09:18:26+02:00", + "side":"ask", + "order_id":201654 + }, + {"id":161821, + "price":"0.5", + "volume":"0.1", + "funds":"0.05", + "market":"ethbtc", + "created_at":"2018-10-23T17:13:35+02:00", + "side":"bid", + "order_id":201631 + }, + {"id":161820, + "price":"0.01", + "volume":"0.2", + "funds":"0.002", + "market":"ethbtc", + "created_at":"2018-10-23T16:59:03+02:00", + "side":"bid", + "order_id":201629 + }, + {"id":161819, + "price":"0.01", + "volume":"0.4", + "funds":"0.004", + "market":"ethbtc", + "created_at":"2018-10-23T16:58:38+02:00", + "side":"bid", + "order_id":201628 + }, + {"id":161818, + "price":"0.01", + "volume":"0.4", + "funds":"0.004", + "market":"ethbtc", + "created_at":"2018-10-23T16:58:38+02:00", + "side":"bid", + "order_id":201627 + }, + {"id":161790, + "price":"0.0356", + "volume":"0.01", + "funds":"0.000356", + "market":"ethbtc", + "created_at":"2018-10-22T16:40:34+02:00", + "side":"bid", + "order_id":201564 + }, + {"id":161789, + "price":"0.0356", + "volume":"0.01", + "funds":"0.000356", + "market":"ethbtc", + "created_at":"2018-10-22T16:29:22+02:00", + "side":"bid", + "order_id":201563 + }, + {"id":161786, + "price":"0.0356", + "volume":"0.02", + "funds":"0.000712", + "market":"ethbtc", + "created_at":"2018-10-22T16:25:22+02:00", + "side":"bid", + "order_id":201558 + }, + {"id":161782, + "price":"0.0356", + "volume":"0.01", + "funds":"0.000356", + "market":"ethbtc", + "created_at":"2018-10-22T16:20:25+02:00", + "side":"bid", + "order_id":201552 + }, + {"id":161719, + "price":"1.0", + "volume":"0.0089", + "funds":"0.0089", + "market":"ethbtc", + "created_at":"2018-10-22T09:14:25+02:00", + "side":"bid", + "order_id":201441 + }, + {"id":161718, + "price":"0.08", + "volume":"0.005", + "funds":"0.0004", + "market":"ethbtc", + "created_at":"2018-10-22T09:14:25+02:00", + "side":"ask", + "order_id":201436 + }, + {"id":161715, + "price":"0.08", + "volume":"0.045", + "funds":"0.0036", + "market":"ethbtc", + "created_at":"2018-10-19T14:30:07+02:00", + "side":"ask", + "order_id":201436 + }, + {"id":161686, + "price":"0.0006", + "volume":"0.005", + "funds":"0.000003", + "market":"ethbtc", + "created_at":"2018-10-19T10:47:20+02:00", + "side":"ask", + "order_id":201357 + }, + {"id":161683, + "price":"0.0006", + "volume":"0.04", + "funds":"0.000024", + "market":"ethbtc", + "created_at":"2018-10-19T10:05:46+02:00", + "side":"ask", + "order_id":201357 + }, + {"id":161682, + "price":"0.0006", + "volume":"0.045", + "funds":"0.000027", + "market":"ethbtc", + "created_at":"2018-10-19T10:02:29+02:00", + "side":"ask", + "order_id":201357 + }, + {"id":161681, + "price":"0.0006", + "volume":"0.005", + "funds":"0.000003", + "market":"ethbtc", + "created_at":"2018-10-19T10:01:20+02:00", + "side":"ask", + "order_id":201356 + }, + {"id":161680, + "price":"0.0006", + "volume":"0.05", + "funds":"0.00003", + "market":"ethbtc", + "created_at":"2018-10-19T09:59:41+02:00", + "side":"ask", + "order_id":201355 + }, + {"id":161679, + "price":"0.001", + "volume":"0.4", + "funds":"0.0004", + "market":"ethbtc", + "created_at":"2018-10-19T09:59:02+02:00", + "side":"ask", + "order_id":201354 + }, + {"id":161678, + "price":"0.1", + "volume":"0.4", + "funds":"0.04", + "market":"ethbtc", + "created_at":"2018-10-19T09:46:02+02:00", + "side":"ask", + "order_id":201334 + }, + {"id":161671, + "price":"0.01", + "volume":"0.02", + "funds":"0.0002", + "market":"ethbtc", + "created_at":"2018-10-18T18:25:41+02:00", + "side":"ask", + "order_id":201320 + }, + {"id":161670, + "price":"0.01", + "volume":"1.0", + "funds":"0.01", + "market":"ethbtc", + "created_at":"2018-10-18T18:25:15+02:00", + "side":"ask", + "order_id":201318 + }, + {"id":161669, + "price":"0.02", + "volume":"0.028", + "funds":"0.00056", + "market":"ethbtc", + "created_at":"2018-10-18T12:25:47+02:00", + "side":"ask", + "order_id":201317 + }, + {"id":161663, + "price":"0.02", + "volume":"0.007", + "funds":"0.00014", + "market":"ethbtc", + "created_at":"2018-10-18T10:42:38+02:00", + "side":"ask", + "order_id":201306 + }, + {"id":161662, + "price":"0.02", + "volume":"0.005", + "funds":"0.0001", + "market":"ethbtc", + "created_at":"2018-10-18T10:37:15+02:00", + "side":"ask", + "order_id":201304 + }, + {"id":161661, + "price":"0.02", + "volume":"0.002", + "funds":"0.00004", + "market":"ethbtc", + "created_at":"2018-10-18T10:35:00+02:00", + "side":"ask", + "order_id":201300 + }, + {"id":161660, + "price":"0.02", + "volume":"0.002", + "funds":"0.00004", + "market":"ethbtc", + "created_at":"2018-10-18T10:25:41+02:00", + "side":"ask", + "order_id":201299 + }, + {"id":161659, + "price":"0.02", + "volume":"0.002", + "funds":"0.00004", + "market":"ethbtc", + "created_at":"2018-10-18T10:24:54+02:00", + "side":"ask", + "order_id":201298 + }, + {"id":161658, + "price":"0.02", + "volume":"0.002", + "funds":"0.00004", + "market":"ethbtc", + "created_at":"2018-10-18T10:24:19+02:00", + "side":"ask", + "order_id":201297 + }, + {"id":161647, + "price":"0.5", + "volume":"0.898", + "funds":"0.449", + "market":"ethbtc", + "created_at":"2018-10-16T12:22:35+02:00", + "side":"bid", + "order_id":201221 + }, + {"id":161641, + "price":"0.5", + "volume":"0.001", + "funds":"0.0005", + "market":"ethbtc", + "created_at":"2018-10-16T10:28:56+02:00", + "side":"bid", + "order_id":201221 + }, + {"id":161640, + "price":"0.5", + "volume":"0.001", + "funds":"0.0005", + "market":"ethbtc", + "created_at":"2018-10-16T10:28:47+02:00", + "side":"bid", + "order_id":201221 + }, + {"id":161639, + "price":"0.5", + "volume":"0.1", + "funds":"0.05", + "market":"ethbtc", + "created_at":"2018-10-15T16:54:41+02:00", + "side":"bid", + "order_id":201221 + }, + {"id":161598, + "price":"0.004", + "volume":"0.02", + "funds":"0.00008", + "market":"ethbtc", + "created_at":"2018-10-11T10:33:03+02:00", + "side":"ask", + "order_id":201093 + }, + {"id":161595, + "price":"0.004", + "volume":"0.1", + "funds":"0.0004", + "market":"ethbtc", + "created_at":"2018-10-09T17:57:25+02:00", + "side":"ask", + "order_id":201086 + }, + {"id":161594, + "price":"0.004", + "volume":"0.1", + "funds":"0.0004", + "market":"ethbtc", + "created_at":"2018-10-09T17:53:02+02:00", + "side":"ask", + "order_id":201086 + }, + {"id":161593, + "price":"0.004", + "volume":"0.1", + "funds":"0.0004", + "market":"ethbtc", + "created_at":"2018-10-09T17:45:27+02:00", + "side":"ask", + "order_id":201086 + }, + {"id":161592, + "price":"0.004", + "volume":"0.1", + "funds":"0.0004", + "market":"ethbtc", + "created_at":"2018-10-09T17:43:02+02:00", + "side":"ask", + "order_id":201086 + }, + {"id":161591, + "price":"0.004", + "volume":"0.1", + "funds":"0.0004", + "market":"ethbtc", + "created_at":"2018-10-09T17:41:01+02:00", + "side":"ask", + "order_id":201086 + }, + {"id":161590, + "price":"0.004", + "volume":"0.03", + "funds":"0.00012", + "market":"ethbtc", + "created_at":"2018-10-09T16:58:01+02:00", + "side":"ask", + "order_id":201079 + }, + {"id":161589, + "price":"0.004", + "volume":"0.04", + "funds":"0.00016", + "market":"ethbtc", + "created_at":"2018-10-09T16:57:46+02:00", + "side":"ask", + "order_id":201079 + }, + {"id":161588, + "price":"0.2", + "volume":"0.09", + "funds":"0.018", + "market":"ethbtc", + "created_at":"2018-10-09T16:57:02+02:00", + "side":"ask", + "order_id":201078 + } +] diff --git a/mocks/api/v2/dena/market/trades/GET--market=eurusd.mock b/mocks/api/v2/dena/market/trades/GET--market=eurusd.mock new file mode 100644 index 0000000..ee26dc4 --- /dev/null +++ b/mocks/api/v2/dena/market/trades/GET--market=eurusd.mock @@ -0,0 +1,8 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[] \ No newline at end of file diff --git a/mocks/api/v2/dena/market/trades/GET--page=1&limit=25.mock b/mocks/api/v2/dena/market/trades/GET--page=1&limit=25.mock new file mode 100644 index 0000000..c35f8cc --- /dev/null +++ b/mocks/api/v2/dena/market/trades/GET--page=1&limit=25.mock @@ -0,0 +1,24 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + { + "id":254044, + "price":"129496907.0", + "amount":"0.02", + "total":"2589938.14", + "fee_currency":"irt", + "fee":"0.001", + "fee_amount":"2589.93814", + "market":"DASH/BTC", + "created_at":"2021-11-03T21:44:31+03:30", + "taker_type":"buy", + "side":"sell", + "order_id":264156 + }, + {"id":214027,"price":"127523269.0","amount":"0.05049","total":"6438649.85181","fee_currency":"irt","fee":"0.0035","fee_amount":"22535.274481335","market":"ethgoerliirt","created_at":"2021-11-03T11:29:47+03:30","taker_type":"sell","side":"sell","order_id":242244}, + {"id":214026,"price":"127675126.0","amount":"0.19951","total":"25472464.38826","fee_currency":"irt","fee":"0.0035","fee_amount":"89153.62535891","market":"ETH/BTC","created_at":"2021-11-03T11:29:47+03:30","taker_type":"sell","side":"sell","order_id":242244} +] \ No newline at end of file diff --git a/mocks/api/v2/dena/market/trades/GET.mock b/mocks/api/v2/dena/market/trades/GET.mock new file mode 100644 index 0000000..b52bf85 --- /dev/null +++ b/mocks/api/v2/dena/market/trades/GET.mock @@ -0,0 +1,10 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":35,"price":10894000,"amount":0.1164,"total":1268061.6,"market":"btczar","created_at":1594951964,"taker_type":"buy"}, + {"id":34,"price":10894000,"amount":0.2414,"total":2629811.6,"market":"btczar","created_at":1594951957,"taker_type":"sell"} +] diff --git a/mocks/api/v2/dena/market/trades/OPTIONS.mock b/mocks/api/v2/dena/market/trades/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/market/trades/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/public/currencies/GET.mock b/mocks/api/v2/dena/public/currencies/GET.mock new file mode 100644 index 0000000..e27bb62 --- /dev/null +++ b/mocks/api/v2/dena/public/currencies/GET.mock @@ -0,0 +1,190 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + { + "id": "irt", + "name": "Iranian Toman", + "symbol": "irt", + "type": "fiat", + "min_confirmations": 6, + "deposit_fee": "0.0", + "withdraw_fee": "0.02", + "withdraw_limit_24h": "200000000.0", + "withdraw_limit_72h": "200000000000000.0", + "deposit_enabled": true, + "withdrawal_enabled": true, + "base_factor": 100, + "precision": 0, + "position": 1 + }, + { + "id": "bch", + "name": "Bitcoin Cash", + "symbol": "฿", + "explorer_transaction": "https://www.blocktrail.com/tBCC/tx/#{txid}", + "explorer_address": "https://www.blocktrail.com/tBCC/address/#{address}", + "type": "coin", + "min_confirmations": 7, + "deposit_fee": "0.0", + "withdraw_fee": "0.01", + "withdraw_limit_24h": "0.1", + "withdraw_limit_72h": "0.2", + "deposit_enabled": true, + "withdrawal_enabled": true, + "base_factor": 100000000, + "precision": 8 + }, + { + "id": "btc", + "name": "Bitcoin", + "symbol": "฿", + "explorer_transaction": "https://testnet.blockchain.info/tx/#{txid}", + "explorer_address": "https://testnet.blockchain.info/address/#{address}", + "type": "coin", + "min_confirmations": 6, + "deposit_fee": "0.0", + "withdraw_fee": "0.005", + "withdraw_limit_24h": "0.1", + "withdraw_limit_72h": "0.2", + "deposit_enabled": true, + "withdrawal_enabled": true, + "base_factor": 100000000, + "precision": 8 + }, + { + "id": "dash", + "name": "Dash", + "symbol": "Đ", + "explorer_transaction": "https://test.insight.dash.siampm.com/dash/tx/#{txid}", + "explorer_address": "https://test.insight.dash.siampm.com/dash/address/#{address}", + "type": "coin", + "min_confirmations": 6, + "deposit_fee": "0.0", + "withdraw_fee": "0.01", + "withdraw_limit_24h": "0.2", + "withdraw_limit_72h": "0.5000000000000001", + "deposit_enabled": false, + "withdrawal_enabled": false, + "base_factor": 100000000, + "precision": 8 + }, + { + "id": "eth", + "icon_url": "https://assets.coingecko.com/coins/images/279/small/ethereum.png?1595348880", + "name": "Ethereum", + "symbol": "Ξ", + "explorer_transaction": "https://rinkeby.etherscan.io/tx/#{txid}", + "explorer_address": "https://rinkeby.etherscan.io/address/#{address}", + "type": "coin", + "min_confirmations": 7, + "deposit_fee": "0.0", + "withdraw_fee": "0.02", + "withdraw_limit_24h": "0.2", + "withdraw_limit_72h": "0.5000000000000001", + "deposit_enabled": true, + "withdrawal_enabled": true, + "base_factor": 1e+18, + "precision": 8 + }, + { + "id": "ltc", + "name": "Litecoin", + "symbol": "Ł", + "explorer_transaction": "https://chain.so/tx/LTCTEST/#{txid}", + "explorer_address": "https://chain.so/address/LTCTEST/#{address}", + "type": "coin", + "min_confirmations": 5, + "deposit_fee": "0.0", + "withdraw_fee": "0.01", + "withdraw_limit_24h": "0.5000000000000001", + "withdraw_limit_72h": "1.2", + "deposit_enabled": true, + "withdrawal_enabled": true, + "base_factor": 100000000, + "precision": 8 + }, + { + "id": "trst", + "name": "WeTrust", + "symbol": "Ξ", + "explorer_transaction": "https://rinkeby.etherscan.io/tx/#{txid}", + "explorer_address": "https://rinkeby.etherscan.io/address/#{address}", + "type": "coin", + "min_confirmations": 5, + "deposit_fee": "0.0", + "withdraw_fee": "0.02", + "withdraw_limit_24h": "300.0", + "withdraw_limit_72h": "600.0", + "deposit_enabled": false, + "withdrawal_enabled": true, + "base_factor": 1000000, + "precision": 8 + }, + { + "id": "usd", + "name": "US Dollar", + "symbol": "$", + "type": "fiat", + "min_confirmations": 4, + "deposit_fee": "0.0", + "withdraw_fee": "0.01", + "withdraw_limit_24h": "100.0", + "withdraw_limit_72h": "200.0", + "deposit_enabled": true, + "withdrawal_enabled": true, + "base_factor": 1, + "precision": 2 + }, + { + "id": "xrp", + "name": "Ripple", + "symbol": "ꭆ", + "explorer_transaction": "https://bithomp.com/explorer/#{txid}", + "explorer_address": "https://bithomp.com/explorer/#{address}", + "type": "coin", + "min_confirmations": 5, + "deposit_fee": "0.0", + "withdraw_fee": "0.02", + "withdraw_limit_24h": "100.0", + "withdraw_limit_72h": "200.0", + "deposit_enabled": true, + "withdrawal_enabled": false, + "base_factor": 1000000, + "precision": 8 + }, + { + "id": "zar", + "name": "ZAR", + "symbol": "$", + "type": "fiat", + "min_confirmations": 7, + "deposit_fee": "0.0", + "withdraw_fee": "0.02", + "withdraw_limit_24h": "100.0", + "withdraw_limit_72h": "200.0", + "deposit_enabled": true, + "withdrawal_enabled": false, + "base_factor": 1, + "precision": 2 + }, + { + "id": "eur", + "name": "Euro", + "symbol": "€", + "type": "fiat", + "min_confirmations": 6, + "deposit_fee": "0.0", + "withdraw_fee": "0.02", + "withdraw_limit_24h": "2000.0", + "withdraw_limit_72h": "1000000.0", + "deposit_enabled": false, + "withdrawal_enabled": false, + "base_factor": 1, + "precision": 2 + } +] diff --git a/mocks/api/v2/dena/public/markets/GET.mock b/mocks/api/v2/dena/public/markets/GET.mock new file mode 100644 index 0000000..cb24648 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/GET.mock @@ -0,0 +1,80 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + + +[ + { + "id": "btczar", + "name": "BTC/ZAR", + "base_unit": "btc", + "quote_unit": "zar", + "ask_fee": "0.0015", + "bid_fee": "0.0015", + "min_price": "0.0", + "max_price": "0.0", + "min_amount": "0.0", + "amount_precision": 6, + "price_precision": 2, + "state": "enabled" + }, + { + "id": "bchzar", + "name": "BCH/ZAR", + "base_unit": "bch", + "quote_unit": "zar", + "ask_fee": "0.0015", + "bid_fee": "0.0015", + "min_price": "0.0", + "max_price": "0.0", + "min_amount": "0.0", + "amount_precision": 4, + "price_precision": 4, + "state": "enabled" + }, + { + "id": "ethbtc", + "name": "ETH/BTC", + "base_unit": "eth", + "quote_unit": "btc", + "ask_fee": "0.0015", + "bid_fee": "0.0015", + "min_price": "0.0", + "max_price": "0.0", + "min_amount": "0.0", + "amount_precision": 4, + "price_precision": 4, + "state": "enabled" + }, + { + "id": "dashbtc", + "name": "DASH/BTC", + "base_unit": "dash", + "quote_unit": "btc", + "ask_fee": "0.0015", + "bid_fee": "0.0015", + "min_price": "0.0", + "max_price": "0.0", + "min_amount": "0.0", + "amount_precision": 4, + "price_precision": 4, + "state": "enabled" + }, + { + "id": "eurusd", + "name": "EUR/USD", + "base_unit": "eur", + "quote_unit": "usd", + "ask_fee": "0.0015", + "bid_fee": "0.0015", + "min_price": "0.0", + "max_price": "0.0", + "min_amount": "0.0", + "amount_precision": 4, + "price_precision": 4, + "state": "enabled" + } +] diff --git a/mocks/api/v2/dena/public/markets/OPTIONS.mock b/mocks/api/v2/dena/public/markets/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/public/markets/bchzar/depth/GET.mock b/mocks/api/v2/dena/public/markets/bchzar/depth/GET.mock new file mode 100644 index 0000000..d814885 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/bchzar/depth/GET.mock @@ -0,0 +1,8 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +#import './script.js'; diff --git a/mocks/api/v2/dena/public/markets/bchzar/depth/OPTIONS.mock b/mocks/api/v2/dena/public/markets/bchzar/depth/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/bchzar/depth/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/public/markets/bchzar/depth/script.js b/mocks/api/v2/dena/public/markets/bchzar/depth/script.js new file mode 100644 index 0000000..68905d6 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/bchzar/depth/script.js @@ -0,0 +1,26 @@ +var ts = parseInt(Date.now() / 1000); + +module.exports = { + "timestamp": ts, + "asks": + [ + ["0.99","1"], + ["0.98","20"], + ["0.96","1"], + ["0.80","1"], + ["0.75","1"], + ["0.70","1"], + ["0.60","0.1"] + ], + "bids": + [ + ["0.50","0.041"], + ["0.49","0.5"], + ["0.48","0.2"], + ["0.47","0.1"], + ["0.30","10"], + ["0.28","2"], + ["0.27","5"], + ["0.26","25"] + ] +} diff --git a/mocks/api/v2/dena/public/markets/bchzar/k-line/GET.mock b/mocks/api/v2/dena/public/markets/bchzar/k-line/GET.mock new file mode 100644 index 0000000..de6558e --- /dev/null +++ b/mocks/api/v2/dena/public/markets/bchzar/k-line/GET.mock @@ -0,0 +1,8 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +#import '../../k-line.js'; diff --git a/mocks/api/v2/dena/public/markets/bchzar/k-line/OPTIONS.mock b/mocks/api/v2/dena/public/markets/bchzar/k-line/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/bchzar/k-line/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/public/markets/bchzar/trades/GET.mock b/mocks/api/v2/dena/public/markets/bchzar/trades/GET.mock new file mode 100644 index 0000000..be9d003 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/bchzar/trades/GET.mock @@ -0,0 +1,19 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":53,"price":3000,"amount":1,"total":3000,"market":"bchzar","created_at":1595235146,"taker_type":"buy"}, + {"id":52,"price":2935,"amount":105.7314,"total":310321.659,"market":"bchzar","created_at":1595022413,"taker_type":"buy"}, + {"id":51,"price":2935,"amount":128.7715,"total":377944.3525,"market":"bchzar","created_at":1595022412,"taker_type":"sell"}, + {"id":50,"price":3015,"amount":4,"total":12060,"market":"bchzar","created_at":1595022372,"taker_type":"buy"}, + {"id":49,"price":2935,"amount":4,"total":11740,"market":"bchzar","created_at":1595021816,"taker_type":"sell"}, + {"id":48,"price":3010,"amount":4,"total":12040,"market":"bchzar","created_at":1595021692,"taker_type":"buy"}, + {"id":47,"price":3015,"amount":5,"total":15075,"market":"bchzar","created_at":1595017688,"taker_type":"buy"}, + {"id":46,"price":3015,"amount":12.1883,"total":36747.7245,"market":"bchzar","created_at":1595012890,"taker_type":"buy"}, + {"id":45,"price":3015,"amount":7.1883,"total":21672.7245,"market":"bchzar","created_at":1595008724,"taker_type":"buy"}, + {"id":44,"price":3015,"amount":5,"total":15075,"market":"bchzar","created_at":1595008632,"taker_type":"sell"} +] diff --git a/mocks/api/v2/dena/public/markets/bchzar/trades/OPTIONS.mock b/mocks/api/v2/dena/public/markets/bchzar/trades/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/bchzar/trades/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/public/markets/btczar/depth/GET.mock b/mocks/api/v2/dena/public/markets/btczar/depth/GET.mock new file mode 100644 index 0000000..d814885 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/btczar/depth/GET.mock @@ -0,0 +1,8 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +#import './script.js'; diff --git a/mocks/api/v2/dena/public/markets/btczar/depth/OPTIONS.mock b/mocks/api/v2/dena/public/markets/btczar/depth/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/btczar/depth/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/public/markets/btczar/depth/script.js b/mocks/api/v2/dena/public/markets/btczar/depth/script.js new file mode 100644 index 0000000..68905d6 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/btczar/depth/script.js @@ -0,0 +1,26 @@ +var ts = parseInt(Date.now() / 1000); + +module.exports = { + "timestamp": ts, + "asks": + [ + ["0.99","1"], + ["0.98","20"], + ["0.96","1"], + ["0.80","1"], + ["0.75","1"], + ["0.70","1"], + ["0.60","0.1"] + ], + "bids": + [ + ["0.50","0.041"], + ["0.49","0.5"], + ["0.48","0.2"], + ["0.47","0.1"], + ["0.30","10"], + ["0.28","2"], + ["0.27","5"], + ["0.26","25"] + ] +} diff --git a/mocks/api/v2/dena/public/markets/btczar/k-line/GET.mock b/mocks/api/v2/dena/public/markets/btczar/k-line/GET.mock new file mode 100644 index 0000000..de6558e --- /dev/null +++ b/mocks/api/v2/dena/public/markets/btczar/k-line/GET.mock @@ -0,0 +1,8 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +#import '../../k-line.js'; diff --git a/mocks/api/v2/dena/public/markets/btczar/k-line/OPTIONS.mock b/mocks/api/v2/dena/public/markets/btczar/k-line/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/btczar/k-line/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/public/markets/btczar/trades/GET.mock b/mocks/api/v2/dena/public/markets/btczar/trades/GET.mock new file mode 100644 index 0000000..e4c8332 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/btczar/trades/GET.mock @@ -0,0 +1,39 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":35,"price":10894000,"amount":0.1164,"total":1268061.6,"market":"btczar","created_at":1594951964,"taker_type":"buy"}, + {"id":34,"price":10894000,"amount":0.2414,"total":2629811.6,"market":"btczar","created_at":1594951957,"taker_type":"sell"}, + {"id":33,"price":10894000,"amount":0.1417,"total":1543679.8,"market":"btczar","created_at":1594951952,"taker_type":"buy"}, + {"id":32,"price":10894000,"amount":0.2125,"total":2314975,"market":"btczar","created_at":1594951947,"taker_type":"buy"}, + {"id":31,"price":10890000,"amount":0.3481,"total":3790809,"market":"btczar","created_at":1594951940,"taker_type":"buy"}, + {"id":30,"price":10890000,"amount":0.2203,"total":2399067,"market":"btczar","created_at":1594951933,"taker_type":"sell"}, + {"id":29,"price":10895000,"amount":0.3205,"total":3491847.5,"market":"btczar","created_at":1594951929,"taker_type":"sell"}, + {"id":28,"price":10895000,"amount":0.2362,"total":2573399,"market":"btczar","created_at":1594951921,"taker_type":"sell"}, + {"id":27,"price":10895000,"amount":0.2171,"total":2365304.5,"market":"btczar","created_at":1594951911,"taker_type":"sell"}, + {"id":26,"price":10895000,"amount":0.1993,"total":2171373.5,"market":"btczar","created_at":1594951906,"taker_type":"buy"}, + {"id":25,"price":10895000,"amount":0.2417,"total":2633321.5,"market":"btczar","created_at":1594951903,"taker_type":"sell"}, + {"id":24,"price":10895000,"amount":0.2666,"total":2904607,"market":"btczar","created_at":1594951898,"taker_type":"sell"}, + {"id":23,"price":10895000,"amount":0.2976,"total":3242352,"market":"btczar","created_at":1594951893,"taker_type":"buy"}, + {"id":22,"price":10895000,"amount":0.2432,"total":2649664,"market":"btczar","created_at":1594951891,"taker_type":"sell"}, + {"id":21,"price":10895000,"amount":0.328,"total":3573560,"market":"btczar","created_at":1594951888,"taker_type":"sell"}, + {"id":20,"price":10895000,"amount":0.2686,"total":2926397,"market":"btczar","created_at":1594951881,"taker_type":"buy"}, + {"id":19,"price":10895000,"amount":0.261,"total":2843595,"market":"btczar","created_at":1594951874,"taker_type":"buy"}, + {"id":18,"price":10895000,"amount":0.2948,"total":3211846,"market":"btczar","created_at":1594951864,"taker_type":"buy"}, + {"id":17,"price":10895000,"amount":0.3808,"total":4148816,"market":"btczar","created_at":1594951856,"taker_type":"buy"}, + {"id":16,"price":10895000,"amount":0.1169,"total":1273625.5,"market":"btczar","created_at":1594951845,"taker_type":"buy"}, + {"id":15,"price":10895000,"amount":0.2269,"total":2472075.5,"market":"btczar","created_at":1594951836,"taker_type":"buy"}, + {"id":1925296,"price":2500000,"amount":2.5,"total":6250000,"market":"btczar","created_at":1594619651,"taker_type":"sell"}, + {"id":1925230,"price":10031000,"amount":0.0039,"total":39120.9,"market":"btczar","created_at":1594572438,"taker_type":"buy"}, + {"id":1925229,"price":10031000,"amount":0.0019,"total":19058.9,"market":"btczar","created_at":1594571253,"taker_type":"buy"}, + {"id":1925228,"price":10029000,"amount":0.0042,"total":42121.8,"market":"btczar","created_at":1594571253,"taker_type":"buy"}, + {"id":1925227,"price":10028000,"amount":0.0052,"total":52145.6,"market":"btczar","created_at":1594571253,"taker_type":"buy"}, + {"id":1925226,"price":10025000,"amount":0.0051,"total":51127.5,"market":"btczar","created_at":1594571253,"taker_type":"buy"}, + {"id":1925225,"price":10023000,"amount":0.006,"total":60138,"market":"btczar","created_at":1594571253,"taker_type":"buy"}, + {"id":1925224,"price":10021000,"amount":0.0044,"total":44092.4,"market":"btczar","created_at":1594571253,"taker_type":"buy"}, + {"id":1925223,"price":10020000,"amount":0.0055,"total":55110,"market":"btczar","created_at":1594571253,"taker_type":"buy"} +] \ No newline at end of file diff --git a/mocks/api/v2/dena/public/markets/btczar/trades/OPTIONS.mock b/mocks/api/v2/dena/public/markets/btczar/trades/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/btczar/trades/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/public/markets/dashbtc/depth/GET.mock b/mocks/api/v2/dena/public/markets/dashbtc/depth/GET.mock new file mode 100644 index 0000000..1f9374a --- /dev/null +++ b/mocks/api/v2/dena/public/markets/dashbtc/depth/GET.mock @@ -0,0 +1,8 @@ +HTTP/2 200 +cContent-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +#import './script.js'; diff --git a/mocks/api/v2/dena/public/markets/dashbtc/depth/OPTIONS.mock b/mocks/api/v2/dena/public/markets/dashbtc/depth/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/dashbtc/depth/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/public/markets/dashbtc/depth/script.js b/mocks/api/v2/dena/public/markets/dashbtc/depth/script.js new file mode 100644 index 0000000..68905d6 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/dashbtc/depth/script.js @@ -0,0 +1,26 @@ +var ts = parseInt(Date.now() / 1000); + +module.exports = { + "timestamp": ts, + "asks": + [ + ["0.99","1"], + ["0.98","20"], + ["0.96","1"], + ["0.80","1"], + ["0.75","1"], + ["0.70","1"], + ["0.60","0.1"] + ], + "bids": + [ + ["0.50","0.041"], + ["0.49","0.5"], + ["0.48","0.2"], + ["0.47","0.1"], + ["0.30","10"], + ["0.28","2"], + ["0.27","5"], + ["0.26","25"] + ] +} diff --git a/mocks/api/v2/dena/public/markets/dashbtc/k-line/GET.mock b/mocks/api/v2/dena/public/markets/dashbtc/k-line/GET.mock new file mode 100644 index 0000000..de6558e --- /dev/null +++ b/mocks/api/v2/dena/public/markets/dashbtc/k-line/GET.mock @@ -0,0 +1,8 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +#import '../../k-line.js'; diff --git a/mocks/api/v2/dena/public/markets/dashbtc/k-line/OPTIONS.mock b/mocks/api/v2/dena/public/markets/dashbtc/k-line/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/dashbtc/k-line/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/public/markets/dashbtc/trades/GET.mock b/mocks/api/v2/dena/public/markets/dashbtc/trades/GET.mock new file mode 100644 index 0000000..2aec7f4 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/dashbtc/trades/GET.mock @@ -0,0 +1,109 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":492221222,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321400,"taker_type":"buy"}, + {"id":492221221,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321399,"taker_type":"buy"}, + {"id":492221220,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321398,"taker_type":"buy"}, + {"id":492221219,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321397,"taker_type":"buy"}, + {"id":492221213,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221212,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221214,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221210,"price":2.418e-05,"amount":20.15,"total":0.000487227,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221215,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221194,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221205,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221206,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221217,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221211,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221208,"price":2.418e-05,"amount":20.15,"total":0.000487227,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221216,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221202,"price":2.418e-05,"amount":20.15,"total":0.000487227,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221207,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221201,"price":2.418e-05,"amount":20.15,"total":0.000487227,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221204,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221200,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221209,"price":2.418e-05,"amount":20.15,"total":0.000487227,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221193,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221218,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221195,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221187,"price":2.418e-05,"amount":20.15,"total":0.000487227,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221198,"price":2.418e-05,"amount":20.11,"total":0.0004862598,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221197,"price":2.418e-05,"amount":20.11,"total":0.0004862598,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221203,"price":2.418e-05,"amount":20.15,"total":0.000487227,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221190,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221199,"price":2.418e-05,"amount":20.11,"total":0.0004862598,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221192,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221196,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221191,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221186,"price":2.418e-05,"amount":20.11,"total":0.0004862598,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221188,"price":2.418e-05,"amount":20.15,"total":0.000487227,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221183,"price":2.418e-05,"amount":20.11,"total":0.0004862598,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221184,"price":2.418e-05,"amount":20.11,"total":0.0004862598,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221189,"price":2.418e-05,"amount":20.15,"total":0.000487227,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221185,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221181,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221180,"price":2.418e-05,"amount":10.894185,"total":0.0002634213933,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221182,"price":2.418e-05,"amount":20.1,"total":0.000486018,"market":"dashbtc","created_at":1597321394,"taker_type":"sell"}, + {"id":492221179,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492221178,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492221177,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492221176,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492221173,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492221175,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492221174,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492221171,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492221172,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492205170,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492205169,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492205164,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492205168,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492205162,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492205167,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492205166,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492205163,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492205165,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492205161,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492205160,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492205156,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492205159,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492205152,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492205149,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492205158,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492205157,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492205155,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492205151,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492205150,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492205154,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492205153,"price":2.421e-05,"amount":20.1,"total":0.000486621,"market":"dashbtc","created_at":1597321386,"taker_type":"sell"}, + {"id":492205143,"price":2.423e-05,"amount":516.66323965,"total":0.0125187502967195,"market":"dashbtc","created_at":1597321121,"taker_type":"buy"}, + {"id":492205136,"price":2.423e-05,"amount":27.92569329,"total":0.0006766395484167,"market":"dashbtc","created_at":1597321121,"taker_type":"buy"}, + {"id":492205097,"price":2.422e-05,"amount":27.91353335,"total":0.000676065777737,"market":"dashbtc","created_at":1597321121,"taker_type":"buy"}, + {"id":492205140,"price":2.423e-05,"amount":27.94563541,"total":0.0006771227459843,"market":"dashbtc","created_at":1597321121,"taker_type":"buy"}, + {"id":492205133,"price":2.423e-05,"amount":27.94563541,"total":0.0006771227459843,"market":"dashbtc","created_at":1597321121,"taker_type":"buy"}, + {"id":492205112,"price":2.422e-05,"amount":27.91353335,"total":0.000676065777737,"market":"dashbtc","created_at":1597321121,"taker_type":"buy"}, + {"id":492205109,"price":2.422e-05,"amount":27.91353335,"total":0.000676065777737,"market":"dashbtc","created_at":1597321121,"taker_type":"buy"}, + {"id":492205131,"price":2.423e-05,"amount":27.94563541,"total":0.0006771227459843,"market":"dashbtc","created_at":1597321121,"taker_type":"buy"}, + {"id":492205122,"price":2.423e-05,"amount":27.96070701,"total":0.0006774879308523,"market":"dashbtc","created_at":1597321121,"taker_type":"buy"}, + {"id":492205120,"price":2.423e-05,"amount":27.96070701,"total":0.0006774879308523,"market":"dashbtc","created_at":1597321121,"taker_type":"buy"}, + {"id":492205124,"price":2.423e-05,"amount":27.96070701,"total":0.0006774879308523,"market":"dashbtc","created_at":1597321121,"taker_type":"buy"}, + {"id":492205139,"price":2.423e-05,"amount":27.94563541,"total":0.0006771227459843,"market":"dashbtc","created_at":1597321121,"taker_type":"buy"}, + {"id":492205114,"price":2.422e-05,"amount":27.91353335,"total":0.000676065777737,"market":"dashbtc","created_at":1597321121,"taker_type":"buy"}, + {"id":492205106,"price":2.422e-05,"amount":27.91353335,"total":0.000676065777737,"market":"dashbtc","created_at":1597321121,"taker_type":"buy"}, + {"id":492205115,"price":2.422e-05,"amount":27.94890792,"total":0.0006769225498224,"market":"dashbtc","created_at":1597321121,"taker_type":"buy"}, + {"id":492205104,"price":2.422e-05,"amount":27.91353335,"total":0.000676065777737,"market":"dashbtc","created_at":1597321121,"taker_type":"buy"}, + {"id":492205098,"price":2.422e-05,"amount":27.91353335,"total":0.000676065777737,"market":"dashbtc","created_at":1597321121,"taker_type":"buy"}, + {"id":492205142,"price":2.423e-05,"amount":27.94563541,"total":0.0006771227459843,"market":"dashbtc","created_at":1597321121,"taker_type":"buy"}, + {"id":492205107,"price":2.422e-05,"amount":27.91353335,"total":0.000676065777737,"market":"dashbtc","created_at":1597321121,"taker_type":"buy"}, + {"id":492205135,"price":2.423e-05,"amount":27.92569329,"total":0.0006766395484167,"market":"dashbtc","created_at":1597321121,"taker_type":"buy"}, + {"id":492205138,"price":2.423e-05,"amount":27.92569329,"total":0.0006766395484167,"market":"dashbtc","created_at":1597321121,"taker_type":"buy"}, + {"id":492205103,"price":2.422e-05,"amount":27.91353335,"total":0.000676065777737,"market":"dashbtc","created_at":1597321121,"taker_type":"buy"}, + {"id":492205099,"price":2.422e-05,"amount":27.91353335,"total":0.000676065777737,"market":"dashbtc","created_at":1597321121,"taker_type":"buy"}, + {"id":492205137,"price":2.423e-05,"amount":27.92569329,"total":0.0006766395484167,"market":"dashbtc","created_at":1597321121,"taker_type":"buy"}, + {"id":492205100,"price":2.422e-05,"amount":27.91353335,"total":0.000676065777737,"market":"dashbtc","created_at":1597321121,"taker_type":"buy"}, + {"id":492205128,"price":2.423e-05,"amount":27.94405457,"total":0.0006770844422311,"market":"dashbtc","created_at":1597321121,"taker_type":"buy"} +] \ No newline at end of file diff --git a/mocks/api/v2/dena/public/markets/dashbtc/trades/OPTIONS.mock b/mocks/api/v2/dena/public/markets/dashbtc/trades/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/dashbtc/trades/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/public/markets/ethbtc/depth/GET.mock b/mocks/api/v2/dena/public/markets/ethbtc/depth/GET.mock new file mode 100644 index 0000000..d814885 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/ethbtc/depth/GET.mock @@ -0,0 +1,8 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +#import './script.js'; diff --git a/mocks/api/v2/dena/public/markets/ethbtc/depth/OPTIONS.mock b/mocks/api/v2/dena/public/markets/ethbtc/depth/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/ethbtc/depth/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/public/markets/ethbtc/depth/script.js b/mocks/api/v2/dena/public/markets/ethbtc/depth/script.js new file mode 100644 index 0000000..68905d6 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/ethbtc/depth/script.js @@ -0,0 +1,26 @@ +var ts = parseInt(Date.now() / 1000); + +module.exports = { + "timestamp": ts, + "asks": + [ + ["0.99","1"], + ["0.98","20"], + ["0.96","1"], + ["0.80","1"], + ["0.75","1"], + ["0.70","1"], + ["0.60","0.1"] + ], + "bids": + [ + ["0.50","0.041"], + ["0.49","0.5"], + ["0.48","0.2"], + ["0.47","0.1"], + ["0.30","10"], + ["0.28","2"], + ["0.27","5"], + ["0.26","25"] + ] +} diff --git a/mocks/api/v2/dena/public/markets/ethbtc/k-line/GET.mock b/mocks/api/v2/dena/public/markets/ethbtc/k-line/GET.mock new file mode 100644 index 0000000..de6558e --- /dev/null +++ b/mocks/api/v2/dena/public/markets/ethbtc/k-line/GET.mock @@ -0,0 +1,8 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +#import '../../k-line.js'; diff --git a/mocks/api/v2/dena/public/markets/ethbtc/k-line/OPTIONS.mock b/mocks/api/v2/dena/public/markets/ethbtc/k-line/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/ethbtc/k-line/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/public/markets/ethbtc/trades/GET.mock b/mocks/api/v2/dena/public/markets/ethbtc/trades/GET.mock new file mode 100644 index 0000000..6576361 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/ethbtc/trades/GET.mock @@ -0,0 +1,109 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + {"id":492199108,"price":0.033987,"amount":2.07,"total":0.07035309,"market":"ethbtc","created_at":1597320544,"taker_type":"sell"}, + {"id":492199107,"price":0.033978,"amount":0.1145387,"total":0.0038917959486,"market":"ethbtc","created_at":1597320543,"taker_type":"sell"}, + {"id":492199106,"price":0.03398,"amount":0.029,"total":0.00098542,"market":"ethbtc","created_at":1597320541,"taker_type":"sell"}, + {"id":492199104,"price":0.03398,"amount":0.029,"total":0.00098542,"market":"ethbtc","created_at":1597320541,"taker_type":"sell"}, + {"id":492199105,"price":0.03398,"amount":0.029,"total":0.00098542,"market":"ethbtc","created_at":1597320541,"taker_type":"sell"}, + {"id":492199103,"price":0.03398,"amount":0.029,"total":0.00098542,"market":"ethbtc","created_at":1597320541,"taker_type":"sell"}, + {"id":492199102,"price":0.03398,"amount":0.0291,"total":0.000988818,"market":"ethbtc","created_at":1597320541,"taker_type":"sell"}, + {"id":492199101,"price":0.033987,"amount":0.13247508,"total":0.00450243054396,"market":"ethbtc","created_at":1597320540,"taker_type":"sell"}, + {"id":492199100,"price":0.033995,"amount":0.17065299,"total":0.00580134839505,"market":"ethbtc","created_at":1597320539,"taker_type":"sell"}, + {"id":492199097,"price":0.034005,"amount":0.1145387,"total":0.0038948884935,"market":"ethbtc","created_at":1597320437,"taker_type":"sell"}, + {"id":492199096,"price":0.034014,"amount":0.13247508,"total":0.00450600737112,"market":"ethbtc","created_at":1597320425,"taker_type":"sell"}, + {"id":492199093,"price":0.034025,"amount":0.029,"total":0.000986725,"market":"ethbtc","created_at":1597320417,"taker_type":"sell"}, + {"id":492199095,"price":0.034025,"amount":0.029,"total":0.000986725,"market":"ethbtc","created_at":1597320417,"taker_type":"sell"}, + {"id":492199094,"price":0.034025,"amount":0.029,"total":0.000986725,"market":"ethbtc","created_at":1597320417,"taker_type":"sell"}, + {"id":492199092,"price":0.034032,"amount":0.1145387,"total":0.0038979810384,"market":"ethbtc","created_at":1597320416,"taker_type":"sell"}, + {"id":492199088,"price":0.034036,"amount":0.029,"total":0.000987044,"market":"ethbtc","created_at":1597320415,"taker_type":"sell"}, + {"id":492199091,"price":0.034036,"amount":0.029,"total":0.000987044,"market":"ethbtc","created_at":1597320415,"taker_type":"sell"}, + {"id":492199090,"price":0.034036,"amount":0.029,"total":0.000987044,"market":"ethbtc","created_at":1597320415,"taker_type":"sell"}, + {"id":492199089,"price":0.034036,"amount":0.029,"total":0.000987044,"market":"ethbtc","created_at":1597320415,"taker_type":"sell"}, + {"id":492199087,"price":0.034036,"amount":0.0291,"total":0.0009904476,"market":"ethbtc","created_at":1597320415,"taker_type":"sell"}, + {"id":492199086,"price":0.034041,"amount":0.17042238,"total":0.00580134823758,"market":"ethbtc","created_at":1597320414,"taker_type":"sell"}, + {"id":492199085,"price":0.034041,"amount":0.13247508,"total":0.00450958419828,"market":"ethbtc","created_at":1597320414,"taker_type":"sell"}, + {"id":492199078,"price":0.034059,"amount":0.0291,"total":0.0009911169,"market":"ethbtc","created_at":1597320392,"taker_type":"sell"}, + {"id":492199079,"price":0.034059,"amount":0.0291,"total":0.0009911169,"market":"ethbtc","created_at":1597320392,"taker_type":"sell"}, + {"id":492199083,"price":0.034059,"amount":0.029,"total":0.000987711,"market":"ethbtc","created_at":1597320392,"taker_type":"sell"}, + {"id":492199075,"price":0.034059,"amount":0.029,"total":0.000987711,"market":"ethbtc","created_at":1597320392,"taker_type":"sell"}, + {"id":492199070,"price":0.034059,"amount":0.029,"total":0.000987711,"market":"ethbtc","created_at":1597320392,"taker_type":"sell"}, + {"id":492199065,"price":0.034059,"amount":0.029,"total":0.000987711,"market":"ethbtc","created_at":1597320392,"taker_type":"sell"}, + {"id":492199072,"price":0.034059,"amount":0.029,"total":0.000987711,"market":"ethbtc","created_at":1597320392,"taker_type":"sell"}, + {"id":492199067,"price":0.034059,"amount":0.0291,"total":0.0009911169,"market":"ethbtc","created_at":1597320392,"taker_type":"sell"}, + {"id":492199062,"price":0.034059,"amount":0.029,"total":0.000987711,"market":"ethbtc","created_at":1597320392,"taker_type":"sell"}, + {"id":492199061,"price":0.034059,"amount":0.029,"total":0.000987711,"market":"ethbtc","created_at":1597320392,"taker_type":"sell"}, + {"id":492199082,"price":0.034059,"amount":0.029,"total":0.000987711,"market":"ethbtc","created_at":1597320392,"taker_type":"sell"}, + {"id":492199076,"price":0.034059,"amount":0.029,"total":0.000987711,"market":"ethbtc","created_at":1597320392,"taker_type":"sell"}, + {"id":492199074,"price":0.034059,"amount":0.029,"total":0.000987711,"market":"ethbtc","created_at":1597320392,"taker_type":"sell"}, + {"id":492199084,"price":0.034059,"amount":0.029,"total":0.000987711,"market":"ethbtc","created_at":1597320392,"taker_type":"sell"}, + {"id":492199080,"price":0.034059,"amount":0.0291,"total":0.0009911169,"market":"ethbtc","created_at":1597320392,"taker_type":"sell"}, + {"id":492199081,"price":0.034059,"amount":0.029,"total":0.000987711,"market":"ethbtc","created_at":1597320392,"taker_type":"sell"}, + {"id":492199068,"price":0.034059,"amount":0.0291,"total":0.0009911169,"market":"ethbtc","created_at":1597320392,"taker_type":"sell"}, + {"id":492199077,"price":0.034059,"amount":0.029,"total":0.000987711,"market":"ethbtc","created_at":1597320392,"taker_type":"sell"}, + {"id":492199069,"price":0.034059,"amount":0.0291,"total":0.0009911169,"market":"ethbtc","created_at":1597320392,"taker_type":"sell"}, + {"id":492199073,"price":0.034059,"amount":0.029,"total":0.000987711,"market":"ethbtc","created_at":1597320392,"taker_type":"sell"}, + {"id":492199071,"price":0.034059,"amount":0.029,"total":0.000987711,"market":"ethbtc","created_at":1597320392,"taker_type":"sell"}, + {"id":492199066,"price":0.034059,"amount":0.029,"total":0.000987711,"market":"ethbtc","created_at":1597320392,"taker_type":"sell"}, + {"id":492199064,"price":0.034059,"amount":0.029,"total":0.000987711,"market":"ethbtc","created_at":1597320392,"taker_type":"sell"}, + {"id":492199063,"price":0.034059,"amount":0.029,"total":0.000987711,"market":"ethbtc","created_at":1597320392,"taker_type":"sell"}, + {"id":492199059,"price":0.03407,"amount":0.029,"total":0.00098803,"market":"ethbtc","created_at":1597320368,"taker_type":"buy"}, + {"id":492199057,"price":0.034066,"amount":0.15,"total":0.0051099,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199055,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199050,"price":0.034066,"amount":0.0291,"total":0.0009913206,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199043,"price":0.034066,"amount":0.0291,"total":0.0009913206,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199052,"price":0.034066,"amount":0.0291,"total":0.0009913206,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199047,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199039,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199040,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199044,"price":0.034066,"amount":0.0291,"total":0.0009913206,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199030,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199056,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199036,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199049,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199054,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199038,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199042,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199029,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199041,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199048,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199045,"price":0.034066,"amount":0.0291,"total":0.0009913206,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199024,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199053,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199033,"price":0.034066,"amount":0.0291,"total":0.0009913206,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199051,"price":0.034066,"amount":0.0291,"total":0.0009913206,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199025,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199022,"price":0.034066,"amount":0.0291,"total":0.0009913206,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199034,"price":0.034066,"amount":0.0291,"total":0.0009913206,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199018,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199046,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199035,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199020,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199037,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199031,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199028,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199032,"price":0.034066,"amount":0.0291,"total":0.0009913206,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199021,"price":0.034066,"amount":0.0291,"total":0.0009913206,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199026,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199015,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199027,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199023,"price":0.034066,"amount":0.0291,"total":0.0009913206,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199019,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199017,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199013,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199012,"price":0.034066,"amount":0.0291,"total":0.0009913206,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199009,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199016,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492198986,"price":0.034067,"amount":0.029,"total":0.000987943,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199008,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199005,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199010,"price":0.034066,"amount":0.0291,"total":0.0009913206,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199006,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492198997,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"}, + {"id":492199014,"price":0.034066,"amount":0.029,"total":0.000987914,"market":"ethbtc","created_at":1597320367,"taker_type":"sell"} +] \ No newline at end of file diff --git a/mocks/api/v2/dena/public/markets/ethbtc/trades/OPTIONS.mock b/mocks/api/v2/dena/public/markets/ethbtc/trades/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/ethbtc/trades/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/public/markets/eurusd/depth/GET.mock b/mocks/api/v2/dena/public/markets/eurusd/depth/GET.mock new file mode 100644 index 0000000..9e92013 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/eurusd/depth/GET.mock @@ -0,0 +1,31 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + + +{ + "timestamp": 1544783545, + "asks": [ + [ + "25.0", + "0.5" + ], + [ + "20.0", + "4.0" + ] + ], + "bids": [ + [ + "15.0", + "2.0" + ], + [ + "10.0", + "1.0" + ] + ] +} diff --git a/mocks/api/v2/dena/public/markets/eurusd/depth/OPTIONS.mock b/mocks/api/v2/dena/public/markets/eurusd/depth/OPTIONS.mock new file mode 100644 index 0000000..430bd07 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/eurusd/depth/OPTIONS.mock @@ -0,0 +1,6 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/public/markets/eurusd/k-line/GET.mock b/mocks/api/v2/dena/public/markets/eurusd/k-line/GET.mock new file mode 100644 index 0000000..de6558e --- /dev/null +++ b/mocks/api/v2/dena/public/markets/eurusd/k-line/GET.mock @@ -0,0 +1,8 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +#import '../../k-line.js'; diff --git a/mocks/api/v2/dena/public/markets/eurusd/k-line/OPTIONS.mock b/mocks/api/v2/dena/public/markets/eurusd/k-line/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/eurusd/k-line/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/public/markets/eurusd/trades/GET.mock b/mocks/api/v2/dena/public/markets/eurusd/trades/GET.mock new file mode 100644 index 0000000..a557865 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/eurusd/trades/GET.mock @@ -0,0 +1,108 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[{"id":492040459,"price":1.31,"amount":394.61490657,"total":516.9455276067,"market":"eurusd","created_at":1597320614,"taker_type":"buy"}, +{"id":492040458,"price":1.3046,"amount":45.56013984,"total":59.437758435264,"market":"eurusd","created_at":1597320281,"taker_type":"sell"}, +{"id":492040456,"price":1.3046,"amount":1590.04462822,"total":2074.372221975812,"market":"eurusd","created_at":1597320281,"taker_type":"sell"}, +{"id":492040457,"price":1.3046,"amount":397.26727176,"total":518.274882738096,"market":"eurusd","created_at":1597320281,"taker_type":"sell"}, +{"id":492040454,"price":1.3218,"amount":393.9111523,"total":520.67176111014,"market":"eurusd","created_at":1597319868,"taker_type":"buy"}, +{"id":492040453,"price":1.3218,"amount":393.67620492,"total":520.361207663256,"market":"eurusd","created_at":1597319836,"taker_type":"buy"}, +{"id":492040451,"price":1.319,"amount":394.26696561,"total":520.03812763959,"market":"eurusd","created_at":1597319500,"taker_type":"buy"}, +{"id":492040450,"price":1.3189,"amount":392.47238776,"total":517.631832216664,"market":"eurusd","created_at":1597319407,"taker_type":"buy"}, +{"id":492040449,"price":1.3159,"amount":392.08566349,"total":515.945524586491,"market":"eurusd","created_at":1597319390,"taker_type":"buy"}, +{"id":492040448,"price":1.3159,"amount":392.86477063,"total":516.970751672017,"market":"eurusd","created_at":1597319214,"taker_type":"buy"}, +{"id":492040444,"price":1.3159,"amount":394.60232578,"total":519.257200493902,"market":"eurusd","created_at":1597317665,"taker_type":"buy"}, +{"id":492040443,"price":1.3159,"amount":393.66269374,"total":518.020738692466,"market":"eurusd","created_at":1597317662,"taker_type":"buy"}, +{"id":492040442,"price":1.3159,"amount":393.65057078,"total":518.004786089402,"market":"eurusd","created_at":1597317659,"taker_type":"buy"}, +{"id":492040441,"price":1.3159,"amount":393.61640645,"total":517.959829247555,"market":"eurusd","created_at":1597317656,"taker_type":"buy"}, +{"id":492040439,"price":1.3073,"amount":1000,"total":1307.3,"market":"eurusd","created_at":1597317513,"taker_type":"sell"}, +{"id":492040438,"price":1.315,"amount":394.67635325,"total":518.99940452375,"market":"eurusd","created_at":1597317224,"taker_type":"buy"}, +{"id":492040436,"price":1.2992,"amount":888,"total":1153.6896,"market":"eurusd","created_at":1597316844,"taker_type":"sell"}, +{"id":492040435,"price":1.2986,"amount":888,"total":1153.1568,"market":"eurusd","created_at":1597316766,"taker_type":"sell"}, +{"id":492040423,"price":1.3331,"amount":45.5845895,"total":60.76881626245,"market":"eurusd","created_at":1597312774,"taker_type":"buy"}, +{"id":492040424,"price":1.3348,"amount":1265.38331556,"total":1689.033649609488,"market":"eurusd","created_at":1597312774,"taker_type":"buy"}, +{"id":492040422,"price":1.333,"amount":1587.70656213,"total":2116.41284731929,"market":"eurusd","created_at":1597312774,"taker_type":"buy"}, +{"id":492040421,"price":1.333,"amount":396.92664053,"total":529.10321182649,"market":"eurusd","created_at":1597312774,"taker_type":"buy"}, +{"id":492040416,"price":1.2705,"amount":131.78210778,"total":167.42916793449,"market":"eurusd","created_at":1597310588,"taker_type":"sell"}, +{"id":492040415,"price":1.2706,"amount":64.66011722,"total":82.157144939732,"market":"eurusd","created_at":1597310588,"taker_type":"sell"}, +{"id":492040414,"price":1.2761,"amount":9.299e-05,"total":0.000118664539,"market":"eurusd","created_at":1597310377,"taker_type":"sell"}, +{"id":492040413,"price":1.2761,"amount":64.31238919,"total":82.069039845359,"market":"eurusd","created_at":1597310377,"taker_type":"sell"}, +{"id":492040412,"price":1.2816,"amount":63.96484714,"total":81.977348094624,"market":"eurusd","created_at":1597310159,"taker_type":"sell"}, +{"id":492040410,"price":1.2871,"amount":63.61721211,"total":81.881713706781,"market":"eurusd","created_at":1597310048,"taker_type":"sell"}, +{"id":492040409,"price":1.2926,"amount":15.26957707,"total":19.737455320682,"market":"eurusd","created_at":1597310048,"taker_type":"sell"}, +{"id":492040407,"price":1.3,"amount":94.33,"total":122.629,"market":"eurusd","created_at":1597310007,"taker_type":"sell"}, +{"id":492040408,"price":1.3,"amount":45.63021972,"total":59.319285636,"market":"eurusd","created_at":1597310007,"taker_type":"sell"}, +{"id":492040404,"price":1.2926,"amount":48,"total":62.0448,"market":"eurusd","created_at":1597308179,"taker_type":"sell"}, +{"id":492040402,"price":1.2981,"amount":62.92194203,"total":81.678972949143,"market":"eurusd","created_at":1597308162,"taker_type":"sell"}, +{"id":492040401,"price":1.3037,"amount":62.57430699,"total":81.578124022863,"market":"eurusd","created_at":1597308120,"taker_type":"sell"}, +{"id":492040400,"price":1.3092,"amount":62.22667195,"total":81.46715891694,"market":"eurusd","created_at":1597308109,"taker_type":"sell"}, +{"id":492040399,"price":1.3147,"amount":61.87903691,"total":81.352369825577,"market":"eurusd","created_at":1597307995,"taker_type":"sell"}, +{"id":492040398,"price":1.3202,"amount":61.53140187,"total":81.233756748774,"market":"eurusd","created_at":1597307994,"taker_type":"sell"}, +{"id":492040396,"price":1.3257,"amount":61.18376683,"total":81.111319686531,"market":"eurusd","created_at":1597307260,"taker_type":"sell"}, +{"id":492040395,"price":1.3312,"amount":60.8361318,"total":80.98505865216,"market":"eurusd","created_at":1597307260,"taker_type":"sell"}, +{"id":492040397,"price":1.3245,"amount":376.98010137,"total":499.310144264565,"market":"eurusd","created_at":1597307260,"taker_type":"sell"}, +{"id":492040392,"price":1.3367,"amount":60.48849676,"total":80.854973619092,"market":"eurusd","created_at":1597306106,"taker_type":"sell"}, +{"id":492040389,"price":1.349,"amount":293.7363074,"total":396.2502786826,"market":"eurusd","created_at":1597306102,"taker_type":"sell"}, +{"id":492040390,"price":1.3478,"amount":59.79322668,"total":80.589310919304,"market":"eurusd","created_at":1597306102,"taker_type":"sell"}, +{"id":492040391,"price":1.3422,"amount":60.14086172,"total":80.721064600584,"market":"eurusd","created_at":1597306102,"taker_type":"sell"}, +{"id":492040388,"price":1.349,"amount":212.77469259,"total":287.03306030391,"market":"eurusd","created_at":1597306064,"taker_type":"sell"}, +{"id":492040387,"price":1.3533,"amount":59.44559164,"total":80.447719166412,"market":"eurusd","created_at":1597306064,"taker_type":"sell"}, +{"id":492040386,"price":1.3541,"amount":0.08562665,"total":0.115947046765,"market":"eurusd","created_at":1597306064,"taker_type":"sell"}, +{"id":492040385,"price":1.3588,"amount":59.0979566,"total":80.30230342808,"market":"eurusd","created_at":1597306064,"taker_type":"sell"}, +{"id":492040384,"price":1.3643,"amount":58.75032156,"total":80.153063704308,"market":"eurusd","created_at":1597306064,"taker_type":"sell"}, +{"id":492040383,"price":1.3698,"amount":5.42648252,"total":7.433195755896,"market":"eurusd","created_at":1597306052,"taker_type":"sell"}, +{"id":492040381,"price":1.3698,"amount":48.80115,"total":66.84781527,"market":"eurusd","created_at":1597305097,"taker_type":"sell"}, +{"id":492040379,"price":1.3698,"amount":50.769946,"total":69.5446720308,"market":"eurusd","created_at":1597305072,"taker_type":"sell"}, +{"id":492040380,"price":1.3698,"amount":4.175054,"total":5.7189889692,"market":"eurusd","created_at":1597305072,"taker_type":"sell"}, +{"id":492040376,"price":1.3735,"amount":369.89048027,"total":508.044574650845,"market":"eurusd","created_at":1597304425,"taker_type":"sell"}, +{"id":492040377,"price":1.3735,"amount":29.50951973,"total":40.531325349155,"market":"eurusd","created_at":1597304425,"taker_type":"sell"}, +{"id":492040373,"price":1.39,"amount":40,"total":55.6,"market":"eurusd","created_at":1597304276,"taker_type":"buy"}, +{"id":492040374,"price":1.3733,"amount":998,"total":1370.5534,"market":"eurusd","created_at":1597304276,"taker_type":"sell"}, +{"id":492040372,"price":1.39,"amount":373.01198274,"total":518.4866560086,"market":"eurusd","created_at":1597304117,"taker_type":"buy"}, +{"id":492040371,"price":1.39,"amount":374.14040366,"total":520.0551610874,"market":"eurusd","created_at":1597304114,"taker_type":"buy"}, +{"id":492040370,"price":1.39,"amount":374.27485967,"total":520.2420549413,"market":"eurusd","created_at":1597304110,"taker_type":"buy"}, +{"id":492040369,"price":1.39,"amount":374.16821212,"total":520.0938148468,"market":"eurusd","created_at":1597304107,"taker_type":"buy"}, +{"id":492040368,"price":1.39,"amount":375.11608549,"total":521.4113588311,"market":"eurusd","created_at":1597304076,"taker_type":"buy"}, +{"id":492040367,"price":1.39,"amount":375.39863172,"total":521.8040980908,"market":"eurusd","created_at":1597304071,"taker_type":"buy"}, +{"id":492040365,"price":1.39,"amount":40,"total":55.6,"market":"eurusd","created_at":1597304006,"taker_type":"buy"}, +{"id":492040364,"price":1.3873,"amount":92.81332885,"total":128.759931113605,"market":"eurusd","created_at":1597304006,"taker_type":"buy"}, +{"id":492040366,"price":1.39,"amount":1049.49093232,"total":1458.7923959248,"market":"eurusd","created_at":1597304006,"taker_type":"buy"}, +{"id":492040363,"price":1.3864,"amount":49.901219,"total":69.1830500216,"market":"eurusd","created_at":1597304006,"taker_type":"buy"}, +{"id":492040362,"price":1.385,"amount":264.331167,"total":366.098666295,"market":"eurusd","created_at":1597304006,"taker_type":"buy"}, +{"id":492040361,"price":1.3843,"amount":7.46335283,"total":10.331519322569,"market":"eurusd","created_at":1597304006,"taker_type":"buy"}, +{"id":492040360,"price":1.3842,"amount":196.832013,"total":272.4548723946,"market":"eurusd","created_at":1597303823,"taker_type":"buy"}, +{"id":492040357,"price":1.3843,"amount":50,"total":69.215,"market":"eurusd","created_at":1597302338,"taker_type":"buy"}, +{"id":492040355,"price":1.3843,"amount":35.34997602,"total":48.934971804486,"market":"eurusd","created_at":1597302321,"taker_type":"buy"}, +{"id":492040354,"price":1.3812,"amount":14.65002398,"total":20.234613121176,"market":"eurusd","created_at":1597302321,"taker_type":"buy"}, +{"id":492040353,"price":1.3812,"amount":50,"total":69.06,"market":"eurusd","created_at":1597302306,"taker_type":"buy"}, +{"id":492040352,"price":1.3812,"amount":28.16330487,"total":38.899156686444,"market":"eurusd","created_at":1597302292,"taker_type":"buy"}, +{"id":492040350,"price":1.3782,"amount":92.81332885,"total":127.91532982107,"market":"eurusd","created_at":1597302292,"taker_type":"buy"}, +{"id":492040351,"price":1.38,"amount":200,"total":276,"market":"eurusd","created_at":1597302292,"taker_type":"buy"}, +{"id":492040349,"price":1.3752,"amount":56.89057568,"total":78.235919675136,"market":"eurusd","created_at":1597302292,"taker_type":"buy"}, +{"id":492040348,"price":1.3752,"amount":35.92275317,"total":49.400970159384,"market":"eurusd","created_at":1597302292,"taker_type":"buy"}, +{"id":492040347,"price":1.3722,"amount":14.07724683,"total":19.316798100126,"market":"eurusd","created_at":1597302292,"taker_type":"buy"}, +{"id":492040346,"price":1.3722,"amount":78.73608202,"total":108.041651747844,"market":"eurusd","created_at":1597302215,"taker_type":"buy"}, +{"id":492040345,"price":1.37,"amount":299.61828748,"total":410.4770538476,"market":"eurusd","created_at":1597302215,"taker_type":"buy"}, +{"id":492040342,"price":1.37,"amount":379.74245203,"total":520.2471592811,"market":"eurusd","created_at":1597300997,"taker_type":"buy"}, +{"id":492040341,"price":1.37,"amount":379.42143271,"total":519.8073628127,"market":"eurusd","created_at":1597300990,"taker_type":"buy"}, +{"id":492040340,"price":1.37,"amount":374.51850572,"total":513.0903528364,"market":"eurusd","created_at":1597300987,"taker_type":"buy"}, +{"id":492040339,"price":1.37,"amount":379.45621859,"total":519.8550194683,"market":"eurusd","created_at":1597300982,"taker_type":"buy"}, +{"id":492040338,"price":1.37,"amount":379.50128177,"total":519.9167560249,"market":"eurusd","created_at":1597300965,"taker_type":"buy"}, +{"id":492040337,"price":1.37,"amount":379.41986245,"total":519.8052115565,"market":"eurusd","created_at":1597300962,"taker_type":"buy"}, +{"id":492040336,"price":1.37,"amount":375.37418405,"total":514.2626321485,"market":"eurusd","created_at":1597300898,"taker_type":"buy"}, +{"id":492040335,"price":1.37,"amount":52.9477752,"total":72.538452024,"market":"eurusd","created_at":1597300893,"taker_type":"buy"}, +{"id":492040333,"price":1.3662,"amount":92.81332885,"total":126.80156987487,"market":"eurusd","created_at":1597300893,"taker_type":"buy"}, +{"id":492040331,"price":1.3602,"amount":49.26042042,"total":67.004023855284,"market":"eurusd","created_at":1597300893,"taker_type":"buy"}, +{"id":492040334,"price":1.3692,"amount":92.81332885,"total":127.08000986142,"market":"eurusd","created_at":1597300893,"taker_type":"buy"}, +{"id":492040332,"price":1.3632,"amount":92.81332885,"total":126.52312988832,"market":"eurusd","created_at":1597300893,"taker_type":"buy"}, +{"id":492040329,"price":1.3571,"amount":4.54309157,"total":6.165429569647,"market":"eurusd","created_at":1597300610,"taker_type":"buy"}, +{"id":492040330,"price":1.3602,"amount":43.55290843,"total":59.240666046486,"market":"eurusd","created_at":1597300610,"taker_type":"buy"}, +{"id":492040328,"price":1.3571,"amount":41.6960092,"total":56.58565408532,"market":"eurusd","created_at":1597300581,"taker_type":"buy"}, +{"id":492040327,"price":1.3571,"amount":46.42432809,"total":63.002455650939,"market":"eurusd","created_at":1597300573,"taker_type":"buy"}, +{"id":492040326,"price":1.3571,"amount":0.14989999,"total":0.203429276429,"market":"eurusd","created_at":1597300535,"taker_type":"buy"}, +{"id":492040325,"price":1.3562,"amount":49.85010001,"total":67.606705633562,"market":"eurusd","created_at":1597300535,"taker_type":"buy"} +] \ No newline at end of file diff --git a/mocks/api/v2/dena/public/markets/eurusd/trades/OPTIONS.mock b/mocks/api/v2/dena/public/markets/eurusd/trades/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/eurusd/trades/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/public/markets/k-line.js b/mocks/api/v2/dena/public/markets/k-line.js new file mode 100644 index 0000000..3e6daf0 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/k-line.js @@ -0,0 +1,50 @@ +const queryIndex = request.url.indexOf('?') +let k = []; + +const parseQuery = (url) => { + let vars = {}; + url.substring(queryIndex + 1).split("&").forEach((chunk) => { + const arr = chunk.split("="); + vars[arr[0]] = arr[1]; + }); + return vars; +} + +// Those functions are the same used in k-line mocked ranger event +const minDay = 6; +const maxDay = 10; +const fakePeriod = 86400; + +const timeToPrice = (time) => { + return minDay + (maxDay - minDay) / 2 * (1 + Math.cos((time / fakePeriod) * 2 * Math.PI)); +} +const timeToVolume = (time, periodInSeconds) => { + return maxDay * 10 / 2 * (1 + Math.cos((time / fakePeriod) * 2 * Math.PI)); +}; + +const kLine = (time, period) => { + const periodInSeconds = parseInt(period * 60); + time = parseInt(time / periodInSeconds) * periodInSeconds; + const open = timeToPrice(time); + const close = timeToPrice(time + periodInSeconds); + const delta = (maxDay - minDay) / fakePeriod * periodInSeconds * 2; + const high = Math.max(open, close) + delta; + const low = Math.min(open, close) - delta; + const volume = timeToVolume(time, periodInSeconds); + return [time, open, high, low, close, volume] +} + +if (queryIndex != -1) { + const vars = parseQuery(request.url); + const period = parseInt(vars.period); + const time_to = parseInt(vars.time_to); + const time_from = parseInt(vars.time_from); + let time = time_from; + + while (time < time_to) { + k.push(kLine(time, period)); + time += period * 60; + } +} + +module.exports = k; diff --git a/mocks/api/v2/dena/public/markets/tickers/GET.mock b/mocks/api/v2/dena/public/markets/tickers/GET.mock new file mode 100644 index 0000000..d814885 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/tickers/GET.mock @@ -0,0 +1,8 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +#import './script.js'; diff --git a/mocks/api/v2/dena/public/markets/tickers/OPTIONS.mock b/mocks/api/v2/dena/public/markets/tickers/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/tickers/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/public/markets/tickers/script.js b/mocks/api/v2/dena/public/markets/tickers/script.js new file mode 100644 index 0000000..07d3781 --- /dev/null +++ b/mocks/api/v2/dena/public/markets/tickers/script.js @@ -0,0 +1,172 @@ +var ts = parseInt(Date.now() / 1000); + +module.exports = { + "btczar": { + "at": ts, + "ticker": { + "amount": "60.0", + "buy": "1200.0", + "sell": "1300.0", + "low": "1150.0", + "high": "1350.0", + "last": "1250.0", + "volume": "120.0", + "open": 1251.0, + "price_change_percent": "+0.08%" + } + }, + "bchbtc": { + "at": ts, + "ticker": { + "amount": "8.0", + "buy": "120.0", + "sell": "130.0", + "low": "115.0", + "high": "135.0", + "last": "125.0", + "volume": "12.0", + "open": 123.2, + "price_change_percent": "-1.44%" + } + }, + "ethbtc": { + "at": ts, + "ticker": { + "amount": "124.021", + "buy": "0.240", + "sell": "0.250", + "low": "0.238", + "high": "0.253", + "last": "0.245", + "volume": "200.0", + "open": 0.247, + "price_change_percent": "+0.81%" + } + }, + "dashbtc": { + "at": ts, + "ticker": { + "amount": "23.0", + "buy": "1.20", + "sell": "1.30", + "low": "1.15", + "high": "1.35", + "last": "1.250", + "volume": "50.0", + "open": 1.250, + "price_change_percent": "+0.00%" + } + }, + "ltcbtc": { + "at": ts, + "ticker": { + "amount": "5.0", + "buy": "100.0", + "sell": "110.0", + "low": "99.0", + "high": "150.0", + "last": "105.0", + "volume": "10.0", + "open": 106.0, + "price_change_percent": "+0.95%" + } + }, + "xrpbtc": { + "at": ts, + "ticker": { + "amount": "12.0", + "buy": "200.0", + "sell": "300.0", + "low": "150.0", + "high": "350.0", + "last": "250.0", + "volume": "20.0", + "open": 250.3, + "price_change_percent": "+0.12%" + } + }, + "xrpzar": { + "at": ts, + "ticker": { + "amount": "11.0", + "buy": "200.0", + "sell": "300.0", + "low": "150.0", + "high": "350.0", + "last": "250.0", + "volume": "20.0", + "open": 251.2, + "price_change_percent": "+0.48%" + } + }, + "ltczar": { + "at": ts, + "ticker": { + "amount": "13.0", + "buy": "200.0", + "sell": "300.0", + "low": "150.0", + "high": "350.0", + "last": "250.0", + "volume": "20.0", + "open": 248.0, + "price_change_percent": "-0.80%" + } + }, + "eurusd": { + "at": ts, + "ticker": { + "amount": "9.0", + "buy": "200.0", + "sell": "300.0", + "low": "150.0", + "high": "350.0", + "last": "250.0", + "volume": "20.0", + "open": 250.1, + "price_change_percent": "+0.04%" + } + }, + "ethzar": { + "at": ts, + "ticker": { + "amount": "8.0", + "buy": "200.0", + "sell": "300.0", + "low": "150.0", + "high": "350.0", + "last": "250.0", + "volume": "20.0", + "open": 235.4, + "price_change_percent": "-5.84%" + } + }, + "dashzar": { + "at": ts, + "ticker": { + "amount": "9.0", + "buy": "200.0", + "sell": "300.0", + "low": "150.0", + "high": "350.0", + "last": "250.0", + "volume": "20.0", + "open": 252.0, + "price_change_percent": "+0.80%" + } + }, + "btczar": { + "at": ts, + "ticker": { + "amount": "5.0", + "buy": "200.0", + "sell": "300.0", + "low": "150.0", + "high": "350.0", + "last": "250.0", + "volume": "20.0", + "open": 266.1, + "price_change_percent": "+6.44%" + } + } +} diff --git a/mocks/api/v2/dena/public/member-levels/GET.mock b/mocks/api/v2/dena/public/member-levels/GET.mock new file mode 100644 index 0000000..862b1ff --- /dev/null +++ b/mocks/api/v2/dena/public/member-levels/GET.mock @@ -0,0 +1,18 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +{ + "deposit": { + "minimum_level": 3 + }, + "withdraw": { + "minimum_level": 3 + }, + "trading": { + "minimum_level": 3 + } +} diff --git a/mocks/api/v2/dena/public/member-levels/OPTIONS.mock b/mocks/api/v2/dena/public/member-levels/OPTIONS.mock new file mode 100644 index 0000000..64560a4 --- /dev/null +++ b/mocks/api/v2/dena/public/member-levels/OPTIONS.mock @@ -0,0 +1,5 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true diff --git a/mocks/api/v2/dena/swagger/GET.mock b/mocks/api/v2/dena/swagger/GET.mock new file mode 100644 index 0000000..685d1fd --- /dev/null +++ b/mocks/api/v2/dena/swagger/GET.mock @@ -0,0 +1,3303 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +{ + "info": { + "title": "dena User API v2", + "description": "API for Dena application.", + "contact": { + "name": "Fibitex", + "email": "info@Fibitex.com", + "url": "https://www.Fibitex.com" + }, + "version": "2.6.0" + }, + "swagger": "2.0", + "produces": [ + "application/json" + ], + "securityDefinitions": { + "Bearer": { + "type": "apiKey", + "name": "JWT", + "in": "header" + } + }, + "host": "localhost", + "basePath": "/api/v2/dena", + "tags": [ + { + "name": "api", + "description": "Operations about apis" + } + ], + "paths": { + "/api/v2/dena/public/withdraw_limits": { + "get": { + "description": "Returns withdraw limits table as paginated collection", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "query", + "name": "group", + "description": "Member group for define withdraw limits.", + "type": "string", + "required": false + }, + { + "in": "query", + "name": "kyc_level", + "description": "KYC level for define withdraw limits.", + "type": "string", + "required": false + }, + { + "in": "query", + "name": "limit", + "description": "Limit the number of returned paginations. Defaults to 100.", + "type": "integer", + "format": "int32", + "default": 100, + "minimum": 1, + "maximum": 1000, + "required": false + }, + { + "in": "query", + "name": "page", + "description": "Specify the page of paginated results.", + "type": "integer", + "format": "int32", + "default": 1, + "required": false + }, + { + "in": "query", + "name": "ordering", + "description": "If set, returned values will be sorted in specific order, defaults to 'asc'.", + "type": "string", + "default": "asc", + "enum": [ + "asc", + "desc" + ], + "required": false + }, + { + "in": "query", + "name": "order_by", + "description": "Name of the field, which result will be ordered by.", + "type": "string", + "default": "id", + "required": false + } + ], + "responses": { + "200": { + "description": "Returns withdraw limits table as paginated collection", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/WithdrawLimit" + } + } + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaPublicWithdrawLimits" + } + }, + "/api/v2/dena/public/webhooks/{event}": { + "post": { + "description": "Bitgo Webhook", + "produces": [ + "application/json" + ], + "consumes": [ + "application/json" + ], + "parameters": [ + { + "in": "path", + "name": "event", + "description": "Name of event can be deposit or withdraw", + "type": "string", + "enum": [ + "deposit", + "withdraw" + ], + "required": true + }, + { + "in": "formData", + "name": "type", + "description": "Type of event.", + "type": "string", + "required": true + }, + { + "in": "formData", + "name": "hash", + "description": "Address txid.", + "type": "string", + "required": true + }, + { + "in": "formData", + "name": "transfer", + "description": "Transfer id.", + "type": "string", + "required": true + }, + { + "in": "formData", + "name": "coin", + "description": "Currency code.", + "type": "string", + "required": true + }, + { + "in": "formData", + "name": "wallet", + "description": "Wallet id.", + "type": "string", + "required": true + }, + { + "in": "formData", + "name": "address", + "description": "User Address.", + "type": "string", + "required": true + }, + { + "in": "formData", + "name": "walletId", + "description": "Wallet id.", + "type": "string", + "required": true + } + ], + "responses": { + "201": { + "description": "Bitgo Webhook" + } + }, + "tags": [ + "api" + ], + "operationId": "postApiV2DenaPublicWebhooksEvent" + } + }, + "/api/v2/dena/public/trading_fees": { + "get": { + "description": "Returns trading_fees table as paginated collection", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "query", + "name": "group", + "description": "Member group for define maker/taker fee.", + "type": "string", + "required": false + }, + { + "in": "query", + "name": "market_id", + "description": "Market id for define maker/taker fee.", + "type": "string", + "enum": [ + "ttkkrw", + "hsskrw", + "btcusd", + "wmskrw", + "dashkrw", + "usdkrw", + "algobtc", + "algousd", + "algokrw", + "xxxxusd", + "xxxxbtc", + "yunakrw", + "teekrw", + "teqkrw", + "apibtc", + "opsbtc", + "terkrw", + "btgbtc", + "apikrw", + "apiusd", + "btgkrw", + "opsusd", + "dashbtc", + "opskrw", + "btgdash", + "btckrw", + "ethkrw", + "ethbtc", + "ethusd", + "xrpkrw", + "xrpbtc", + "usdtkrw", + "xrpusd", + "usdtusd", + "ringxkrw", + "ringxusd", + "bchkrw", + "bchbtc", + "bchusd", + "eoskrw", + "eosbtc", + "eosusd", + "niaxkrw", + "linkkrw", + "ltckrw", + "ltcbtc", + "ltcusd", + "xlmkrw", + "xlmbtc", + "xlmusd", + "mkrkrw", + "daikrw", + "lendkrw", + "balkrw", + "pntkrw", + "volkrw", + "tetkrw", + "unikrw", + "t0krw", + "mtskrw", + "t1krw", + "t2krw", + "t3krw", + "t4krw", + "t5krw", + "t6krw", + "t7krw", + "t8krw", + "t9krw", + "any" + ], + "required": false + }, + { + "in": "query", + "name": "limit", + "description": "Limit the number of returned paginations. Defaults to 100.", + "type": "integer", + "format": "int32", + "default": 100, + "minimum": 1, + "maximum": 1000, + "required": false + }, + { + "in": "query", + "name": "page", + "description": "Specify the page of paginated results.", + "type": "integer", + "format": "int32", + "default": 1, + "required": false + }, + { + "in": "query", + "name": "ordering", + "description": "If set, returned values will be sorted in specific order, defaults to 'asc'.", + "type": "string", + "default": "asc", + "enum": [ + "asc", + "desc" + ], + "required": false + }, + { + "in": "query", + "name": "order_by", + "description": "Name of the field, which result will be ordered by.", + "type": "string", + "default": "id", + "required": false + } + ], + "responses": { + "200": { + "description": "Returns trading_fees table as paginated collection", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/TradingFee" + } + } + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaPublicTradingFees" + } + }, + "/api/v2/dena/public/health/ready": { + "get": { + "description": "Get application readiness status", + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "Get application readiness status" + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaPublicHealthReady" + } + }, + "/api/v2/dena/public/health/alive": { + "get": { + "description": "Get application liveness status", + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "Get application liveness status" + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaPublicHealthAlive" + } + }, + "/api/v2/dena/public/version": { + "get": { + "description": "Get running Dena version and build details.", + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "Get running Dena version and build details." + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaPublicVersion" + } + }, + "/api/v2/dena/public/timestamp": { + "get": { + "description": "Get server current time, in seconds since Unix epoch.", + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "Get server current time, in seconds since Unix epoch." + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaPublicTimestamp" + } + }, + "/api/v2/dena/public/member-levels": { + "get": { + "description": "Returns hash of minimum levels and the privileges they provide.", + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "Returns hash of minimum levels and the privileges they provide." + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaPublicMemberLevels" + } + }, + "/api/v2/dena/public/markets/{market}/tickers": { + "get": { + "description": "Get ticker of specific market.", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "path", + "name": "market", + "description": "", + "type": "string", + "enum": [ + "btckrw", + "mtskrw", + "ttkkrw", + "usdtkrw", + "wmskrw", + "xrpkrw" + ], + "required": true + } + ], + "responses": { + "200": { + "description": "Get ticker of specific market.", + "schema": { + "$ref": "#/definitions/Ticker" + } + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaPublicMarketsMarketTickers" + } + }, + "/api/v2/dena/public/markets/tickers": { + "get": { + "description": "Get ticker of all markets (For response doc see /:market/tickers/ response).", + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "Get ticker of all markets (For response doc see /:market/tickers/ response).", + "schema": { + "$ref": "#/definitions/Ticker" + } + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaPublicMarketsTickers" + } + }, + "/api/v2/dena/public/markets/{market}/k-line": { + "get": { + "description": "Get OHLC(k line) of specific market.", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "path", + "name": "market", + "description": "", + "type": "string", + "enum": [ + "btckrw", + "mtskrw", + "ttkkrw", + "usdtkrw", + "wmskrw", + "xrpkrw" + ], + "required": true + }, + { + "in": "query", + "name": "period", + "description": "Time period of K line, default to 1. You can choose between 1, 5, 15, 30, 60, 120, 240, 360, 720, 1440, 4320, 10080", + "type": "integer", + "format": "int32", + "default": 1, + "enum": [ + 1, + 5, + 15, + 30, + 60, + 120, + 240, + 360, + 720, + 1440, + 4320, + 10080 + ], + "required": false + }, + { + "in": "query", + "name": "time_from", + "description": "An integer represents the seconds elapsed since Unix epoch. If set, only k-line data after that time will be returned.", + "type": "integer", + "format": "int32", + "required": false + }, + { + "in": "query", + "name": "time_to", + "description": "An integer represents the seconds elapsed since Unix epoch. If set, only k-line data till that time will be returned.", + "type": "integer", + "format": "int32", + "required": false + }, + { + "in": "query", + "name": "limit", + "description": "Limit the number of returned data points default to 30. Ignored if time_from and time_to are given.", + "type": "integer", + "format": "int32", + "default": 30, + "minimum": 1, + "maximum": 10000, + "required": false + } + ], + "responses": { + "200": { + "description": "Get OHLC(k line) of specific market." + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaPublicMarketsMarketKLine" + } + }, + "/api/v2/dena/public/markets/{market}/depth": { + "get": { + "description": "Get depth or specified market. Both asks and bids are sorted from highest price to lowest.", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "path", + "name": "market", + "description": "", + "type": "string", + "enum": [ + "btckrw", + "mtskrw", + "ttkkrw", + "usdtkrw", + "wmskrw", + "xrpkrw" + ], + "required": true + }, + { + "in": "query", + "name": "limit", + "description": "Limit the number of returned price levels. Default to 300.", + "type": "integer", + "format": "int32", + "default": 300, + "minimum": 1, + "maximum": 1000, + "required": false + } + ], + "responses": { + "200": { + "description": "Get depth or specified market. Both asks and bids are sorted from highest price to lowest." + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaPublicMarketsMarketDepth" + } + }, + "/api/v2/dena/public/markets/{market}/trades": { + "get": { + "description": "Get recent trades on market, each trade is included only once. Trades are sorted in reverse creation order.", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "path", + "name": "market", + "description": "", + "type": "string", + "enum": [ + "btckrw", + "mtskrw", + "ttkkrw", + "usdtkrw", + "wmskrw", + "xrpkrw" + ], + "required": true + }, + { + "in": "query", + "name": "limit", + "description": "Limit the number of returned trades. Default to 100.", + "type": "integer", + "format": "int32", + "default": 100, + "minimum": 1, + "maximum": 1000, + "required": false + }, + { + "in": "query", + "name": "timestamp", + "description": "An integer represents the seconds elapsed since Unix epoch.If set, only trades executed before the time will be returned.", + "type": "integer", + "format": "int32", + "required": false + }, + { + "in": "query", + "name": "order_by", + "description": "If set, returned trades will be sorted in specific order, default to 'desc'.", + "type": "string", + "default": "desc", + "enum": [ + "asc", + "desc" + ], + "required": false + } + ], + "responses": { + "200": { + "description": "Get recent trades on market, each trade is included only once. Trades are sorted in reverse creation order.", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/Trade" + } + } + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaPublicMarketsMarketTrades" + } + }, + "/api/v2/dena/public/markets/{market}/order-book": { + "get": { + "description": "Get the order book of specified market.", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "path", + "name": "market", + "description": "", + "type": "string", + "enum": [ + "btckrw", + "mtskrw", + "ttkkrw", + "usdtkrw", + "wmskrw", + "xrpkrw" + ], + "required": true + }, + { + "in": "query", + "name": "asks_limit", + "description": "Limit the number of returned sell orders. Default to 20.", + "type": "integer", + "format": "int32", + "default": 20, + "minimum": 1, + "maximum": 200, + "required": false + }, + { + "in": "query", + "name": "bids_limit", + "description": "Limit the number of returned buy orders. Default to 20.", + "type": "integer", + "format": "int32", + "default": 20, + "minimum": 1, + "maximum": 200, + "required": false + } + ], + "responses": { + "200": { + "description": "Get the order book of specified market.", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/OrderBook" + } + } + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaPublicMarketsMarketOrderBook" + } + }, + "/api/v2/dena/public/markets": { + "get": { + "description": "Get all available markets.", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "query", + "name": "limit", + "description": "Limit the number of returned paginations. Defaults to 100.", + "type": "integer", + "format": "int32", + "default": 100, + "minimum": 1, + "maximum": 1000, + "required": false + }, + { + "in": "query", + "name": "page", + "description": "Specify the page of paginated results.", + "type": "integer", + "format": "int32", + "default": 1, + "required": false + }, + { + "in": "query", + "name": "ordering", + "description": "If set, returned values will be sorted in specific order, defaults to 'asc'.", + "type": "string", + "default": "asc", + "enum": [ + "asc", + "desc" + ], + "required": false + }, + { + "in": "query", + "name": "order_by", + "description": "Name of the field, which result will be ordered by.", + "type": "string", + "default": "position", + "enum": [ + "id", + "position" + ], + "required": false + }, + { + "in": "query", + "name": "base_unit", + "description": "Strict filter for base unit", + "type": "string", + "required": false + }, + { + "in": "query", + "name": "quote_unit", + "description": "Strict filter for quote unit", + "type": "string", + "required": false + }, + { + "in": "query", + "name": "search", + "description": "", + "type": "json", + "required": false + }, + { + "in": "query", + "name": "search[base_code]", + "description": "Search base currency code using LIKE", + "type": "string", + "required": false + }, + { + "in": "query", + "name": "search[quote_code]", + "description": "Search qoute currency code using LIKE", + "type": "string", + "required": false + }, + { + "in": "query", + "name": "search[base_name]", + "description": "Search base currency name using LIKE", + "type": "string", + "required": false + }, + { + "in": "query", + "name": "search[quote_name]", + "description": "Search quote currency name using LIKE", + "type": "string", + "required": false + } + ], + "responses": { + "200": { + "description": "Get all available markets.", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/Market" + } + } + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaPublicMarkets" + } + }, + "/api/v2/dena/public/currencies": { + "get": { + "description": "Get list of currencies", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "query", + "name": "limit", + "description": "Limit the number of returned paginations. Defaults to 100.", + "type": "integer", + "format": "int32", + "default": 100, + "minimum": 1, + "maximum": 1000, + "required": false + }, + { + "in": "query", + "name": "page", + "description": "Specify the page of paginated results.", + "type": "integer", + "format": "int32", + "default": 1, + "required": false + }, + { + "in": "query", + "name": "type", + "description": "Currency type", + "type": "string", + "enum": [ + "fiat", + "coin" + ], + "required": false + }, + { + "in": "query", + "name": "search", + "description": "", + "type": "json", + "required": false + }, + { + "in": "query", + "name": "search[code]", + "description": "Search by currency code using SQL LIKE", + "type": "string", + "required": false + }, + { + "in": "query", + "name": "search[name]", + "description": "Search by currency name using SQL LIKE", + "type": "string", + "required": false + } + ], + "responses": { + "200": { + "description": "Get list of currencies", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/Currency" + } + } + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaPublicCurrencies" + } + }, + "/api/v2/dena/public/currencies/{id}": { + "get": { + "description": "Get a currency", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "path", + "name": "id", + "description": "Currency code.", + "type": "string", + "enum": [ + "btc", + "krw", + "mts", + "ter", + "tpp", + "ttk", + "usdt", + "wms", + "xrp", + "BTC", + "KRW", + "MTS", + "TER", + "TPP", + "TTK", + "USDT", + "WMS", + "XRP" + ], + "required": true + } + ], + "responses": { + "200": { + "description": "Get a currency", + "schema": { + "$ref": "#/definitions/Currency" + } + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaPublicCurrenciesId" + } + }, + "/api/v2/dena/account/stats/pnl": { + "get": { + "description": "Get assets pnl calculated into one currency", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "query", + "name": "pnl_currency", + "description": "Currency code in which the PnL is calculated", + "type": "string", + "enum": [ + "btc", + "krw", + "mts", + "ter", + "tpp", + "ttk", + "usdt", + "wms", + "xrp", + "BTC", + "KRW", + "MTS", + "TER", + "TPP", + "TTK", + "USDT", + "WMS", + "XRP" + ], + "required": false + } + ], + "responses": { + "200": { + "description": "Get assets pnl calculated into one currency" + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaAccountStatsPnl" + } + }, + "/api/v2/dena/account/transactions": { + "get": { + "description": "Get your transactions history.", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "query", + "name": "currency", + "description": "Currency code", + "type": "string", + "enum": [ + "btc", + "krw", + "mts", + "ter", + "tpp", + "ttk", + "usdt", + "wms", + "xrp", + "BTC", + "KRW", + "MTS", + "TER", + "TPP", + "TTK", + "USDT", + "WMS", + "XRP" + ], + "required": false + }, + { + "in": "query", + "name": "order_by", + "description": "Sorting order", + "type": "string", + "default": "desc", + "enum": [ + "asc", + "desc" + ], + "required": false + }, + { + "in": "query", + "name": "time_from", + "description": "An integer represents the seconds elapsed since Unix epoch.", + "type": "integer", + "format": "int32", + "required": false + }, + { + "in": "query", + "name": "time_to", + "description": "An integer represents the seconds elapsed since Unix epoch.", + "type": "integer", + "format": "int32", + "required": false + }, + { + "in": "query", + "name": "deposit_state", + "description": "Filter deposits by states.", + "type": "string", + "required": false + }, + { + "in": "query", + "name": "withdraw_state", + "description": "Filter withdraws by states.", + "type": "string", + "required": false + }, + { + "in": "query", + "name": "txid", + "description": "Transaction id.", + "type": "string", + "required": false + }, + { + "in": "query", + "name": "limit", + "description": "Limit the number of returned transactions. Default to 100.", + "type": "integer", + "format": "int32", + "default": 100, + "minimum": 1, + "maximum": 1000, + "required": false + }, + { + "in": "query", + "name": "page", + "description": "Specify the page of paginated results.", + "type": "integer", + "format": "int32", + "default": 1, + "required": false + } + ], + "responses": { + "200": { + "description": "Get your transactions history." + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaAccountTransactions" + } + }, + "/api/v2/dena/account/withdraws": { + "post": { + "description": "Creates new withdrawal to active beneficiary.", + "produces": [ + "application/json" + ], + "consumes": [ + "application/json" + ], + "parameters": [ + { + "in": "formData", + "name": "otp", + "description": "OTP to perform action", + "type": "integer", + "format": "int32", + "required": true + }, + { + "in": "formData", + "name": "beneficiary_id", + "description": "ID of Active Beneficiary belonging to user.", + "type": "integer", + "format": "int32", + "required": true + }, + { + "in": "formData", + "name": "currency", + "description": "The currency code.", + "type": "string", + "enum": [ + "btc", + "krw", + "mts", + "ter", + "tpp", + "ttk", + "usdt", + "wms", + "xrp", + "BTC", + "KRW", + "MTS", + "TER", + "TPP", + "TTK", + "USDT", + "WMS", + "XRP" + ], + "required": true + }, + { + "in": "formData", + "name": "amount", + "description": "The amount to withdraw.", + "type": "number", + "format": "double", + "required": true + }, + { + "in": "formData", + "name": "note", + "description": "Optional user metadata to be applied to the transaction. Used to tag transactions with memorable comments.", + "type": "string", + "required": false + } + ], + "responses": { + "201": { + "description": "Creates new withdrawal to active beneficiary." + } + }, + "tags": [ + "api" + ], + "operationId": "postApiV2DenaAccountWithdraws" + }, + "get": { + "description": "List your withdraws as paginated collection.", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "query", + "name": "currency", + "description": "Currency code.", + "type": "string", + "enum": [ + "btc", + "krw", + "mts", + "ter", + "tpp", + "ttk", + "usdt", + "wms", + "xrp", + "BTC", + "KRW", + "MTS", + "TER", + "TPP", + "TTK", + "USDT", + "WMS", + "XRP" + ], + "required": false + }, + { + "in": "query", + "name": "limit", + "description": "Number of withdraws per page (defaults to 100, maximum is 100).", + "type": "integer", + "format": "int32", + "default": 100, + "minimum": 1, + "maximum": 100, + "required": false + }, + { + "in": "query", + "name": "state", + "description": "Filter withdrawals by states.", + "type": "string", + "required": false + }, + { + "in": "query", + "name": "rid", + "description": "Wallet address on the Blockchain.", + "type": "string", + "required": false + }, + { + "in": "query", + "name": "page", + "description": "Page number (defaults to 1).", + "type": "integer", + "format": "int32", + "default": 1, + "required": false + } + ], + "responses": { + "200": { + "description": "List your withdraws as paginated collection.", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/Withdraw" + } + } + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaAccountWithdraws" + } + }, + "/api/v2/dena/account/withdraws/sums": { + "get": { + "description": "Returns withdrawal sums for last 4 hours and 1 month", + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "Returns withdrawal sums for last 4 hours and 1 month" + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaAccountWithdrawsSums" + } + }, + "/api/v2/dena/account/beneficiaries/{id}": { + "delete": { + "description": "Delete beneficiary", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "path", + "name": "id", + "description": "Beneficiary Identifier in Database", + "type": "integer", + "format": "int32", + "required": true + } + ], + "responses": { + "204": { + "description": "Delete beneficiary" + } + }, + "tags": [ + "api" + ], + "operationId": "deleteApiV2DenaAccountBeneficiariesId" + }, + "get": { + "description": "Get beneficiary by ID", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "path", + "name": "id", + "description": "Beneficiary Identifier in Database", + "type": "integer", + "format": "int32", + "required": true + } + ], + "responses": { + "200": { + "description": "Get beneficiary by ID", + "schema": { + "$ref": "#/definitions/Beneficiary" + } + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaAccountBeneficiariesId" + } + }, + "/api/v2/dena/account/beneficiaries/{id}/activate": { + "patch": { + "description": "Activates beneficiary with pin", + "produces": [ + "application/json" + ], + "consumes": [ + "application/json" + ], + "parameters": [ + { + "in": "path", + "name": "id", + "description": "Beneficiary Identifier in Database", + "type": "integer", + "format": "int32", + "required": true + }, + { + "in": "formData", + "name": "pin", + "description": "Pin code for beneficiary activation", + "type": "integer", + "format": "int32", + "required": true + } + ], + "responses": { + "200": { + "description": "Activates beneficiary with pin", + "schema": { + "$ref": "#/definitions/Beneficiary" + } + } + }, + "tags": [ + "api" + ], + "operationId": "patchApiV2DenaAccountBeneficiariesIdActivate" + } + }, + "/api/v2/dena/account/beneficiaries/{id}/resend_pin": { + "patch": { + "description": "Resend beneficiary pin", + "produces": [ + "application/json" + ], + "consumes": [ + "application/json" + ], + "parameters": [ + { + "in": "path", + "name": "id", + "description": "Beneficiary Identifier in Database", + "type": "integer", + "format": "int32", + "required": true + } + ], + "responses": { + "200": { + "description": "Resend beneficiary pin" + } + }, + "tags": [ + "api" + ], + "operationId": "patchApiV2DenaAccountBeneficiariesIdResendPin" + } + }, + "/api/v2/dena/account/beneficiaries": { + "post": { + "description": "Create new beneficiary", + "produces": [ + "application/json" + ], + "consumes": [ + "application/json" + ], + "parameters": [ + { + "in": "formData", + "name": "currency", + "description": "Beneficiary currency code.", + "type": "string", + "enum": [ + "btc", + "krw", + "mts", + "ter", + "tpp", + "ttk", + "usdt", + "wms", + "xrp", + "BTC", + "KRW", + "MTS", + "TER", + "TPP", + "TTK", + "USDT", + "WMS", + "XRP" + ], + "required": true + }, + { + "in": "formData", + "name": "name", + "description": "Human rememberable name which refer beneficiary.", + "type": "string", + "required": true + }, + { + "in": "formData", + "name": "description", + "description": "Human rememberable name which refer beneficiary.", + "type": "string", + "required": false + }, + { + "in": "formData", + "name": "data", + "description": "Beneficiary data in JSON format", + "type": "json", + "required": true + } + ], + "responses": { + "201": { + "description": "Create new beneficiary", + "schema": { + "$ref": "#/definitions/Beneficiary" + } + } + }, + "tags": [ + "api" + ], + "operationId": "postApiV2DenaAccountBeneficiaries" + }, + "get": { + "description": "Get list of user beneficiaries", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "query", + "name": "currency", + "description": "Beneficiary currency code.", + "type": "string", + "enum": [ + "btc", + "krw", + "mts", + "ter", + "tpp", + "ttk", + "usdt", + "wms", + "xrp", + "BTC", + "KRW", + "MTS", + "TER", + "TPP", + "TTK", + "USDT", + "WMS", + "XRP" + ], + "required": false + }, + { + "in": "query", + "name": "state", + "description": "Defines either beneficiary active - user can use it to withdraw moneyor pending - requires beneficiary activation with pin.", + "type": "string", + "enum": [ + "pending", + "active" + ], + "required": false + } + ], + "responses": { + "200": { + "description": "Get list of user beneficiaries", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/Beneficiary" + } + } + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaAccountBeneficiaries" + } + }, + "/api/v2/dena/account/deposit_address/{currency}": { + "get": { + "description": "Returns deposit address for account you want to deposit to by currency. The address may be blank because address generation process is still in progress. If this case you should try again later.", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "path", + "name": "currency", + "description": "The account you want to deposit to.", + "type": "string", + "enum": [ + "btc", + "mts", + "ter", + "tpp", + "ttk", + "usdt", + "wms", + "xrp", + "BTC", + "MTS", + "TER", + "TPP", + "TTK", + "USDT", + "WMS", + "XRP" + ], + "required": true + }, + { + "in": "query", + "name": "address_format", + "description": "Address format legacy/cash", + "type": "string", + "enum": [ + "legacy", + "cash" + ], + "required": false + } + ], + "responses": { + "200": { + "description": "Returns deposit address for account you want to deposit to by currency. The address may be blank because address generation process is still in progress. If this case you should try again later.", + "schema": { + "$ref": "#/definitions/Deposit" + } + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaAccountDepositAddressCurrency" + } + }, + "/api/v2/dena/account/deposits/{txid}": { + "get": { + "description": "Get details of specific deposit.", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "path", + "name": "txid", + "description": "Deposit transaction id", + "type": "string", + "required": true + } + ], + "responses": { + "200": { + "description": "Get details of specific deposit.", + "schema": { + "$ref": "#/definitions/Deposit" + } + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaAccountDepositsTxid" + } + }, + "/api/v2/dena/account/deposits": { + "get": { + "description": "Get your deposits history.", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "query", + "name": "currency", + "description": "Currency code", + "type": "string", + "enum": [ + "btc", + "krw", + "mts", + "ter", + "tpp", + "ttk", + "usdt", + "wms", + "xrp", + "BTC", + "KRW", + "MTS", + "TER", + "TPP", + "TTK", + "USDT", + "WMS", + "XRP" + ], + "required": false + }, + { + "in": "query", + "name": "state", + "description": "Filter deposits by states.", + "type": "string", + "required": false + }, + { + "in": "query", + "name": "txid", + "description": "Deposit transaction id.", + "type": "string", + "required": false + }, + { + "in": "query", + "name": "limit", + "description": "Number of deposits per page (defaults to 100, maximum is 100).", + "type": "integer", + "format": "int32", + "default": 100, + "minimum": 1, + "maximum": 100, + "required": false + }, + { + "in": "query", + "name": "page", + "description": "Page number (defaults to 1).", + "type": "integer", + "format": "int32", + "default": 1, + "required": false + } + ], + "responses": { + "200": { + "description": "Get your deposits history.", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/Deposit" + } + } + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaAccountDeposits" + } + }, + "/api/v2/dena/account/balances/{currency}": { + "get": { + "description": "Get user account by currency", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "path", + "name": "currency", + "description": "The currency code.", + "type": "string", + "enum": [ + "btc", + "krw", + "mts", + "ter", + "tpp", + "ttk", + "usdt", + "wms", + "xrp" + ], + "required": true + } + ], + "responses": { + "200": { + "description": "Get user account by currency", + "schema": { + "$ref": "#/definitions/Account" + } + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaAccountBalancesCurrency" + } + }, + "/api/v2/dena/account/balances": { + "get": { + "description": "Get list of user accounts", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "query", + "name": "limit", + "description": "Limit the number of returned paginations. Defaults to 100.", + "type": "integer", + "format": "int32", + "default": 100, + "minimum": 1, + "maximum": 1000, + "required": false + }, + { + "in": "query", + "name": "page", + "description": "Specify the page of paginated results.", + "type": "integer", + "format": "int32", + "default": 1, + "required": false + }, + { + "in": "query", + "name": "nonzero", + "description": "Filter non zero balances.", + "type": "Boolean", + "required": false + }, + { + "in": "query", + "name": "search", + "description": "", + "type": "json", + "required": false + }, + { + "in": "query", + "name": "search[currency_code]", + "description": "", + "type": "string", + "required": false + }, + { + "in": "query", + "name": "search[currency_name]", + "description": "", + "type": "string", + "required": false + } + ], + "responses": { + "200": { + "description": "Get list of user accounts", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/Account" + } + } + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaAccountBalances" + } + }, + "/api/v2/dena/market/trades": { + "get": { + "description": "Get your executed trades. Trades are sorted in reverse creation order.", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "query", + "name": "market", + "description": "", + "type": "string", + "required": false + }, + { + "in": "query", + "name": "limit", + "description": "Limit the number of returned trades. Default to 100.", + "type": "integer", + "format": "int32", + "default": 100, + "minimum": 1, + "maximum": 1000, + "required": false + }, + { + "in": "query", + "name": "page", + "description": "Specify the page of paginated results.", + "type": "integer", + "format": "int32", + "default": 1, + "required": false + }, + { + "in": "query", + "name": "time_from", + "description": "An integer represents the seconds elapsed since Unix epoch.If set, only trades executed after the time will be returned.", + "type": "integer", + "format": "int32", + "required": false + }, + { + "in": "query", + "name": "time_to", + "description": "An integer represents the seconds elapsed since Unix epoch.If set, only trades executed before the time will be returned.", + "type": "integer", + "format": "int32", + "required": false + }, + { + "in": "query", + "name": "order_by", + "description": "If set, returned trades will be sorted in specific order, default to 'desc'.", + "type": "string", + "default": "desc", + "enum": [ + "asc", + "desc" + ], + "required": false + } + ], + "responses": { + "200": { + "description": "Get your executed trades. Trades are sorted in reverse creation order.", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/Trade" + } + } + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaMarketTrades" + } + }, + "/api/v2/dena/market/orders/cancel": { + "post": { + "description": "Cancel all my orders.", + "produces": [ + "application/json" + ], + "consumes": [ + "application/json" + ], + "parameters": [ + { + "in": "formData", + "name": "market", + "description": "", + "type": "string", + "enum": [ + "btckrw", + "mtskrw", + "ttkkrw", + "usdtkrw", + "wmskrw", + "xrpkrw" + ], + "required": false + }, + { + "in": "formData", + "name": "side", + "description": "If present, only sell orders (asks) or buy orders (bids) will be canncelled.", + "type": "string", + "enum": [ + "sell", + "buy" + ], + "required": false + } + ], + "responses": { + "201": { + "description": "Cancel all my orders.", + "schema": { + "$ref": "#/definitions/Order" + } + } + }, + "tags": [ + "api" + ], + "operationId": "postApiV2DenaMarketOrdersCancel" + } + }, + "/api/v2/dena/market/orders/{id}/cancel": { + "post": { + "description": "Cancel an order.", + "produces": [ + "application/json" + ], + "consumes": [ + "application/json" + ], + "parameters": [ + { + "in": "path", + "name": "id", + "description": "", + "type": "string", + "required": true + } + ], + "responses": { + "201": { + "description": "Cancel an order." + } + }, + "tags": [ + "api" + ], + "operationId": "postApiV2DenaMarketOrdersIdCancel" + } + }, + "/api/v2/dena/market/orders": { + "post": { + "description": "Create a Sell/Buy order.", + "produces": [ + "application/json" + ], + "consumes": [ + "application/json" + ], + "parameters": [ + { + "in": "formData", + "name": "market", + "description": "", + "type": "string", + "enum": [ + "btckrw", + "mtskrw", + "ttkkrw", + "usdtkrw", + "wmskrw", + "xrpkrw" + ], + "required": true + }, + { + "in": "formData", + "name": "side", + "description": "", + "type": "string", + "enum": [ + "sell", + "buy" + ], + "required": true + }, + { + "in": "formData", + "name": "volume", + "description": "", + "type": "number", + "format": "double", + "required": true + }, + { + "in": "formData", + "name": "ord_type", + "description": "", + "type": "string", + "default": "limit", + "enum": [ + "market", + "limit" + ], + "required": false + }, + { + "in": "formData", + "name": "price", + "description": "", + "type": "number", + "format": "double", + "required": true + } + ], + "responses": { + "201": { + "description": "Create a Sell/Buy order.", + "schema": { + "$ref": "#/definitions/Order" + } + } + }, + "tags": [ + "api" + ], + "operationId": "postApiV2DenaMarketOrders" + }, + "get": { + "description": "Get your orders, result is paginated.", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "query", + "name": "market", + "description": "", + "type": "string", + "required": false + }, + { + "in": "query", + "name": "base_unit", + "description": "", + "type": "string", + "enum": [ + "btc", + "mts", + "ttk", + "usdt", + "wms", + "xrp" + ], + "required": false + }, + { + "in": "query", + "name": "quote_unit", + "description": "", + "type": "string", + "enum": [ + "krw", + "krw", + "krw", + "krw", + "krw", + "krw" + ], + "required": false + }, + { + "in": "query", + "name": "state", + "description": "Filter order by state.", + "type": "string", + "required": false + }, + { + "in": "query", + "name": "limit", + "description": "Limit the number of returned orders, default to 100.", + "type": "integer", + "format": "int32", + "default": 100, + "minimum": 0, + "maximum": 1000, + "required": false + }, + { + "in": "query", + "name": "page", + "description": "Specify the page of paginated results.", + "type": "integer", + "format": "int32", + "default": 1, + "required": false + }, + { + "in": "query", + "name": "order_by", + "description": "If set, returned orders will be sorted in specific order, default to \"desc\".", + "type": "string", + "default": "desc", + "enum": [ + "asc", + "desc" + ], + "required": false + }, + { + "in": "query", + "name": "ord_type", + "description": "Filter order by ord_type.", + "type": "string", + "enum": [ + "market", + "limit" + ], + "required": false + }, + { + "in": "query", + "name": "type", + "description": "Filter order by type.", + "type": "string", + "enum": [ + "buy", + "sell" + ], + "required": false + }, + { + "in": "query", + "name": "time_from", + "description": "An integer represents the seconds elapsed since Unix epoch.If set, only orders created after the time will be returned.", + "type": "integer", + "format": "int32", + "required": false + }, + { + "in": "query", + "name": "time_to", + "description": "An integer represents the seconds elapsed since Unix epoch.If set, only orders created before the time will be returned.", + "type": "integer", + "format": "int32", + "required": false + } + ], + "responses": { + "200": { + "description": "Get your orders, result is paginated.", + "schema": { + "type": "array", + "items": { + "$ref": "#/definitions/Order" + } + } + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaMarketOrders" + } + }, + "/api/v2/dena/market/orders/{id}": { + "get": { + "description": "Get information of specified order.", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "path", + "name": "id", + "description": "", + "type": "string", + "required": true + } + ], + "responses": { + "200": { + "description": "Get information of specified order.", + "schema": { + "$ref": "#/definitions/Order" + } + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaMarketOrdersId" + } + }, + "/api/v2/dena/coinmarketcap/orderbook/{market_pair}": { + "get": { + "description": "Get depth or specified market", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "path", + "name": "market_pair", + "description": "A pair such as \"LTC_BTC\"", + "type": "string", + "required": true + }, + { + "in": "query", + "name": "depth", + "description": "Orders depth quantity: [0,5,10,20,50,100,500]", + "type": "integer", + "format": "int32", + "minimum": 0, + "maximum": 500, + "required": false + } + ], + "responses": { + "200": { + "description": "Get depth or specified market" + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaCoinmarketcapOrderbookMarketPair" + } + }, + "/api/v2/dena/coinmarketcap/trades/{market_pair}": { + "get": { + "description": "Get recent trades on market", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "path", + "name": "market_pair", + "description": "A pair such as \"LTC_BTC\"", + "type": "string", + "required": true + } + ], + "responses": { + "200": { + "description": "Get recent trades on market", + "schema": { + "$ref": "#/definitions/Trade" + } + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaCoinmarketcapTradesMarketPair" + } + }, + "/api/v2/dena/coinmarketcap/ticker": { + "get": { + "description": "Get 24-hour pricing and volume summary for each market pair", + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "Get 24-hour pricing and volume summary for each market pair", + "schema": { + "$ref": "#/definitions/Ticker" + } + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaCoinmarketcapTicker" + } + }, + "/api/v2/dena/coinmarketcap/assets": { + "get": { + "description": "Details on crypto currencies available on the exchange", + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "Details on crypto currencies available on the exchange" + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaCoinmarketcapAssets" + } + }, + "/api/v2/dena/coinmarketcap/summary": { + "get": { + "description": "Overview of market data for all tickers and all market pairs on the exchange", + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "Overview of market data for all tickers and all market pairs on the exchange" + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaCoinmarketcapSummary" + } + }, + "/api/v2/dena/coingecko/historical_trades": { + "get": { + "description": "Get recent trades on market", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "query", + "name": "ticker_id", + "description": "A pair such as \"LTC_BTC\"", + "type": "string", + "required": true + }, + { + "in": "query", + "name": "type", + "description": "To indicate nature of trade - buy/sell", + "type": "string", + "enum": [ + "buy", + "sell" + ], + "required": false + }, + { + "in": "query", + "name": "limit", + "description": "Number of historical trades to retrieve from time of query. [0, 200, 500...]. 0 returns full history", + "type": "integer", + "format": "int32", + "minimum": 0, + "maximum": 1000, + "required": false + }, + { + "in": "query", + "name": "start_time", + "description": "", + "type": "integer", + "format": "int32", + "required": false + }, + { + "in": "query", + "name": "end_time", + "description": "", + "type": "integer", + "format": "int32", + "required": false + } + ], + "responses": { + "200": { + "description": "Get recent trades on market" + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaCoingeckoHistoricalTrades" + } + }, + "/api/v2/dena/coingecko/orderbook": { + "get": { + "description": "Get depth or specified market", + "produces": [ + "application/json" + ], + "parameters": [ + { + "in": "query", + "name": "ticker_id", + "description": "A pair such as \"LTC_BTC\"", + "type": "string", + "required": true + }, + { + "in": "query", + "name": "depth", + "description": "Orders depth quantity: [0, 100, 200, 500...]", + "type": "integer", + "format": "int32", + "minimum": 0, + "maximum": 1000, + "required": false + } + ], + "responses": { + "200": { + "description": "Get depth or specified market" + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaCoingeckoOrderbook" + } + }, + "/api/v2/dena/coingecko/tickers": { + "get": { + "description": "Get list of all available trading pairs", + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "Get list of all available trading pairs", + "schema": { + "$ref": "#/definitions/Ticker" + } + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaCoingeckoTickers" + } + }, + "/api/v2/dena/coingecko/pairs": { + "get": { + "description": "Get list of all available trading pairs", + "produces": [ + "application/json" + ], + "responses": { + "200": { + "description": "Get list of all available trading pairs" + } + }, + "tags": [ + "api" + ], + "operationId": "getApiV2DenaCoingeckoPairs" + } + } + }, + "definitions": { + "WithdrawLimit": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32", + "description": "Unique withdraw limit table identifier in database." + }, + "group": { + "type": "string", + "description": "Member group for define withdraw limits." + }, + "kyc_level": { + "type": "string", + "description": "KYC level for define withdraw limits." + }, + "limit_24_hour": { + "type": "number", + "format": "double", + "description": "24 hours withdraw limit." + }, + "limit_1_month": { + "type": "number", + "format": "double", + "description": "1 month withdraw limit." + }, + "created_at": { + "type": "string", + "description": "Withdraw limit table created time in iso8601 format." + }, + "updated_at": { + "type": "string", + "description": "Withdraw limit table updated time in iso8601 format." + } + }, + "description": "Returns withdraw limits table as paginated collection" + }, + "TradingFee": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32", + "description": "Unique trading fee table identifier in database." + }, + "group": { + "type": "string", + "description": "Member group for define maker/taker fee." + }, + "market_id": { + "type": "string", + "description": "Market id for define maker/taker fee." + }, + "maker": { + "type": "number", + "format": "double", + "description": "Market maker fee." + }, + "taker": { + "type": "number", + "format": "double", + "description": "Market taker fee." + }, + "created_at": { + "type": "string", + "description": "Trading fee table created time in iso8601 format." + }, + "updated_at": { + "type": "string", + "description": "Trading fee table updated time in iso8601 format." + } + }, + "description": "Returns trading_fees table as paginated collection" + }, + "Ticker": { + "type": "object", + "properties": { + "at": { + "type": "integer", + "format": "int32", + "description": "Timestamp of ticker" + }, + "ticker": { + "$ref": "#/definitions/TickerEntry", + "description": "Ticker entry for specified time" + } + }, + "description": "Get list of all available trading pairs" + }, + "TickerEntry": { + "type": "object", + "properties": { + "low": { + "type": "number", + "format": "double", + "description": "The lowest trade price during last 24 hours (0.0 if no trades executed during last 24 hours)" + }, + "high": { + "type": "number", + "format": "double", + "description": "The highest trade price during last 24 hours (0.0 if no trades executed during last 24 hours)" + }, + "open": { + "type": "number", + "format": "double", + "description": "Price of the first trade executed 24 hours ago or less" + }, + "last": { + "type": "number", + "format": "double", + "description": "The last executed trade price" + }, + "volume": { + "type": "number", + "format": "double", + "description": "Total volume of trades executed during last 24 hours" + }, + "amount": { + "type": "number", + "format": "double", + "description": "Total amount of trades executed during last 24 hours" + }, + "vol": { + "type": "number", + "format": "double", + "description": "Alias to volume" + }, + "avg_price": { + "type": "number", + "format": "double", + "description": "Average price more precisely VWAP is calculated by adding up the total traded for every transaction(price multiplied by the number of shares traded) and then dividing by the total shares traded" + }, + "price_change_percent": { + "type": "string", + "description": "Price change in the next format +3.19%.Price change is calculated using next formula (last - open) / open * 100%" + }, + "at": { + "type": "integer", + "format": "int32", + "description": "Timestamp of ticker" + } + } + }, + "Trade": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Trade ID." + }, + "price": { + "type": "number", + "format": "double", + "description": "Trade price." + }, + "amount": { + "type": "number", + "format": "double", + "description": "Trade amount." + }, + "total": { + "type": "number", + "format": "double", + "description": "Trade total (Amount * Price)." + }, + "fee_currency": { + "type": "number", + "format": "double", + "description": "Currency user's fees were charged in." + }, + "fee": { + "type": "number", + "format": "double", + "description": "Percentage of fee user was charged for performed trade." + }, + "fee_amount": { + "type": "number", + "format": "double", + "description": "Amount of fee user was charged for performed trade." + }, + "market": { + "type": "string", + "description": "Trade market id." + }, + "created_at": { + "type": "string", + "description": "Trade create time in iso8601 format." + }, + "taker_type": { + "type": "string", + "description": "Trade taker order type (sell or buy)." + }, + "side": { + "type": "string", + "description": "Trade side." + }, + "order_id": { + "type": "integer", + "format": "int32", + "description": "Order id." + } + }, + "description": "Get recent trades on market" + }, + "OrderBook": { + "type": "object", + "properties": { + "asks": { + "type": "array", + "items": { + "$ref": "#/definitions/Order" + }, + "description": "Asks in orderbook" + }, + "bids": { + "type": "array", + "items": { + "$ref": "#/definitions/Order" + }, + "description": "Bids in orderbook" + } + }, + "description": "Get the order book of specified market." + }, + "Order": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32", + "description": "Unique order id." + }, + "uuid": { + "type": "string", + "description": "Unique order UUID." + }, + "side": { + "type": "string", + "description": "Either 'sell' or 'buy'." + }, + "ord_type": { + "type": "string", + "description": "Type of order, either 'limit' or 'market'." + }, + "price": { + "type": "number", + "format": "double", + "description": "Price for each unit. e.g.If you want to sell/buy 1 btc at 3000 usd, the price is '3000.0'" + }, + "avg_price": { + "type": "number", + "format": "double", + "description": "Average execution price, average of price in trades." + }, + "state": { + "type": "string", + "description": "One of 'wait', 'done', or 'cancel'.An order in 'wait' is an active order, waiting fulfillment;a 'done' order is an order fulfilled;'cancel' means the order has been canceled." + }, + "market": { + "type": "string", + "description": "The market in which the order is placed, e.g. 'btcusd'.All available markets can be found at /api/v2/markets." + }, + "created_at": { + "type": "string", + "description": "Order create time in iso8601 format." + }, + "updated_at": { + "type": "string", + "description": "Order updated time in iso8601 format." + }, + "origin_volume": { + "type": "number", + "format": "double", + "description": "The amount user want to sell/buy.An order could be partially executed,e.g. an order sell 5 btc can be matched with a buy 3 btc order,left 2 btc to be sold; in this case the order's volume would be '5.0',its remaining_volume would be '2.0', its executed volume is '3.0'." + }, + "remaining_volume": { + "type": "number", + "format": "double", + "description": "The remaining volume, see 'volume'." + }, + "executed_volume": { + "type": "number", + "format": "double", + "description": "The executed volume, see 'volume'." + }, + "maker_fee": { + "type": "number", + "format": "double", + "description": "Fee for maker." + }, + "taker_fee": { + "type": "number", + "format": "double", + "description": "Fee for taker." + }, + "trades_count": { + "type": "integer", + "format": "int32", + "description": "Count of trades." + }, + "trades": { + "type": "array", + "items": { + "$ref": "#/definitions/Trade" + }, + "description": "Trades wiht this order." + } + }, + "description": "Get your orders, result is paginated." + }, + "Market": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Unique market id. It's always in the form of xxxyyy,where xxx is the base currency code, yyy is the quotecurrency code, e.g. 'btcusd'. All available markets canbe found at /api/v2/markets." + }, + "name": { + "type": "string", + "description": "Market name." + }, + "base_unit": { + "type": "string", + "description": "Market Base unit." + }, + "quote_unit": { + "type": "string", + "description": "Market Quote unit." + }, + "min_price": { + "type": "number", + "format": "double", + "description": "Minimum order price." + }, + "max_price": { + "type": "number", + "format": "double", + "description": "Maximum order price." + }, + "min_amount": { + "type": "number", + "format": "double", + "description": "Minimum order amount." + }, + "amount_precision": { + "type": "number", + "format": "double", + "description": "Precision for order amount." + }, + "price_precision": { + "type": "number", + "format": "double", + "description": "Precision for order price." + }, + "state": { + "type": "string", + "description": "Market state defines if user can see/trade on current market." + } + }, + "description": "Get all available markets." + }, + "Currency": { + "type": "object", + "properties": { + "id": { + "type": "string", + "example": "btc", + "description": "Currency code." + }, + "name": { + "type": "string", + "example": "Bitcoin", + "description": "Currency name" + }, + "description": { + "type": "string", + "example": "btc", + "description": "Currency description" + }, + "homepage": { + "type": "string", + "example": "btc", + "description": "Currency homepage" + }, + "price": { + "type": "string", + "description": "Currency current price" + }, + "explorer_transaction": { + "type": "string", + "example": "https://testnet.blockchain.info/tx/", + "description": "Currency transaction exprorer url template" + }, + "explorer_address": { + "type": "string", + "example": "https://testnet.blockchain.info/address/", + "description": "Currency address exprorer url template" + }, + "type": { + "type": "string", + "example": "coin", + "description": "Currency type" + }, + "deposit_enabled": { + "type": "string", + "description": "Currency deposit possibility status (true/false)." + }, + "withdrawal_enabled": { + "type": "string", + "description": "Currency withdrawal possibility status (true/false)." + }, + "deposit_fee": { + "type": "string", + "example": "0.0", + "description": "Currency deposit fee" + }, + "min_deposit_amount": { + "type": "string", + "example": "0.0", + "description": "Minimal deposit amount" + }, + "withdraw_fee": { + "type": "string", + "example": "0.0009", + "description": "Currency withdraw fee" + }, + "min_withdraw_amount": { + "type": "string", + "example": "0.0005", + "description": "Minimal withdraw amount" + }, + "withdraw_limit_24h": { + "type": "string", + "example": "0.0", + "description": "Currency 24h withdraw limit" + }, + "withdraw_limit_72h": { + "type": "string", + "example": "0.0", + "description": "Currency 72h withdraw limit" + }, + "base_factor": { + "type": "string", + "example": 100000000, + "description": "Currency base factor" + }, + "precision": { + "type": "string", + "example": 8, + "description": "Currency precision" + }, + "position": { + "type": "string", + "example": 8, + "description": "Position used for defining currencies order" + }, + "icon_url": { + "type": "string", + "example": "https://upload.wikimedia.org/wikipedia/commons/0/05/Ethereum_logo_2014.svg", + "description": "Currency icon" + }, + "min_confirmations": { + "type": "string", + "description": "Number of confirmations required for confirming deposit or withdrawal" + } + }, + "description": "Get a currency" + }, + "Withdraw": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32", + "description": "The withdrawal id." + }, + "currency": { + "type": "string", + "description": "The currency code." + }, + "type": { + "type": "string", + "description": "The withdrawal type" + }, + "amount": { + "type": "string", + "description": "The withdrawal amount" + }, + "fee": { + "type": "number", + "format": "double", + "description": "The exchange fee." + }, + "blockchain_txid": { + "type": "string", + "description": "The withdrawal transaction id." + }, + "rid": { + "type": "string", + "description": "The beneficiary ID or wallet address on the Blockchain." + }, + "state": { + "type": "string", + "description": "The withdrawal state." + }, + "confirmations": { + "type": "integer", + "format": "int32", + "description": "Number of confirmations." + }, + "note": { + "type": "string", + "description": "Withdraw note." + }, + "transfer_type": { + "type": "string", + "description": "Withdraw transfer type" + }, + "created_at": { + "type": "string", + "description": "The datetimes for the withdrawal." + }, + "updated_at": { + "type": "string", + "description": "The datetimes for the withdrawal." + }, + "done_at": { + "type": "string", + "description": "The datetime when withdraw was completed" + } + }, + "description": "List your withdraws as paginated collection." + }, + "Beneficiary": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32", + "description": "Beneficiary Identifier in Database" + }, + "currency": { + "type": "string", + "description": "Beneficiary currency code." + }, + "uid": { + "type": "string", + "description": "Beneficiary owner" + }, + "name": { + "type": "string", + "description": "Human rememberable name which refer beneficiary." + }, + "description": { + "type": "string", + "description": "Human rememberable description of beneficiary." + }, + "data": { + "type": "json", + "description": "Bank Account details for fiat Beneficiary in JSON format.For crypto it's blockchain address." + }, + "state": { + "type": "string", + "description": "Defines either beneficiary active - user can use it to withdraw moneyor pending - requires beneficiary activation with pin." + }, + "sent_at": { + "type": "string", + "description": "Time when last pin was sent" + } + }, + "description": "Get list of user beneficiaries" + }, + "Deposit": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int32", + "description": "Unique deposit id." + }, + "currency": { + "type": "string", + "description": "Deposit currency id." + }, + "amount": { + "type": "number", + "format": "double", + "description": "Deposit amount." + }, + "fee": { + "type": "number", + "format": "double", + "description": "Deposit fee." + }, + "txid": { + "type": "string", + "description": "Deposit transaction id." + }, + "confirmations": { + "type": "integer", + "format": "int32", + "description": "Number of deposit confirmations." + }, + "state": { + "type": "string", + "description": "Deposit state." + }, + "transfer_type": { + "type": "string", + "description": "Deposit transfer type" + }, + "created_at": { + "type": "string", + "description": "The datetime when deposit was created." + }, + "completed_at": { + "type": "string", + "description": "The datetime when deposit was completed.." + }, + "tid": { + "type": "string", + "description": "The shared transaction ID" + } + }, + "description": "Get your deposits history." + }, + "Account": { + "type": "object", + "properties": { + "currency": { + "type": "string", + "description": "Currency code." + }, + "balance": { + "type": "number", + "format": "double", + "description": "Account balance." + }, + "locked": { + "type": "number", + "format": "double", + "description": "Account locked funds." + }, + "deposit_address": { + "$ref": "#/definitions/PaymentAddress", + "description": "User deposit address" + } + }, + "description": "Get list of user accounts" + }, + "PaymentAddress": { + "type": "object", + "properties": { + "currencies": { + "type": "array", + "items": { + "type": "string", + "example": [ + "btc", + "krw", + "mts", + "ter", + "tpp", + "ttk", + "usdt", + "wms", + "xrp" + ] + }, + "description": "Currencies codes." + }, + "address": { + "type": "string", + "description": "Payment address." + }, + "state": { + "type": "string", + "description": "Payment address state." + } + } + }, + "Transactions": { + "type": "object", + "properties": { + "address": { + "type": "string", + "description": "Recipient address of transaction." + }, + "currency": { + "type": "string", + "description": "Transaction currency id." + }, + "amount": { + "type": "number", + "format": "double", + "description": "Transaction amount." + }, + "fee": { + "type": "number", + "format": "double", + "description": "Transaction fee." + }, + "txid": { + "type": "string", + "description": "Transaction id." + }, + "state": { + "type": "string", + "description": "Transaction state." + }, + "note": { + "type": "string", + "description": "Withdraw note." + }, + "confirmations": { + "type": "integer", + "format": "int32", + "description": "Number of confirmations." + }, + "created_at": { + "type": "string", + "description": "Transaction created time in iso8601 format." + }, + "updated_at": { + "type": "string", + "description": "Transaction updated time in iso8601 format." + }, + "type": { + "type": "string", + "description": "Type of transaction" + } + } + }, + "Member": { + "type": "object", + "properties": { + "uid": { + "type": "string", + "description": "Member UID." + }, + "email": { + "type": "string", + "description": "Member email." + }, + "accounts": { + "type": "array", + "items": { + "$ref": "#/definitions/Account" + }, + "description": "Member accounts." + } + } + } + } +} \ No newline at end of file diff --git a/mocks/api/v2/finex/public/markets/GET.mock b/mocks/api/v2/finex/public/markets/GET.mock new file mode 100644 index 0000000..b236a3f --- /dev/null +++ b/mocks/api/v2/finex/public/markets/GET.mock @@ -0,0 +1,113 @@ +HTTP/2 200 +Content-Type: application/json; charset=utf-8 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true + +[ + { + "id":"dashbtc", + "name":"DASH/BTC", + "base_unit":"dash", + "quote_unit":"btc", + "state":"enabled", + "amount_precision":3, + "price_precision":6, + "min_price":"0.000001", + "max_price":"0", + "min_amount":"0.001", + "filters": [ + { + "digits":5, + "type":"significant_digits" + } + ] + }, + { + "id":"ethbtc", + "name":"ETH/BTC", + "base_unit":"eth", + "quote_unit":"btc", + "state":"enabled", + "amount_precision":5, + "price_precision":7, + "min_price":"0.0000001", + "max_price":"0", + "min_amount":"0.00001", + "filters": [ + { + "type":"significant_digits", + "digits":5 + }, + { + "type":"custom_price_steps", + "rules": [ + { + "limit":"10", + "step":"0.01" + }, + { + "limit":"100", + "step":"0.1" + }, + { + "limit":"1000", + "step":"1" + }, + { + "limit":"10000", + "step":"5" + }, + { + "limit":"100000", + "step":"10" + }, + { + "limit":"0", + "step":"1000" + } + ] + } + ] + }, + { + "id":"btcusd", + "name":"BTC/USD", + "base_unit":"btc", + "quote_unit":"usd", + "state":"enabled", + "amount_precision":7, + "price_precision":2, + "min_price":"0.01", + "max_price":"0", + "min_amount":"0.0000001", + "filters": [ + { + "rules": [ + { + "limit":"1", + "step":"0.01" + }, + { + "limit":"10", + "step":"0.1" + }, + { + "limit":"100", + "step":"1" + }, + { + "limit":"1000", + "step":"10" + }, + { + "limit":"0", + "step":"100" + } + ], + "type":"custom_price_steps" + } + ] + } +] diff --git a/mocks/api/v2/finex/public/markets/OPTIONS.mock b/mocks/api/v2/finex/public/markets/OPTIONS.mock new file mode 100644 index 0000000..53f6e03 --- /dev/null +++ b/mocks/api/v2/finex/public/markets/OPTIONS.mock @@ -0,0 +1,6 @@ +HTTP/2 200 +Access-Control-Allow-Origin: * +Access-Control-Allow-Methods: GET, POST, DELETE, PUT, PATCH, OPTIONS, HEAD +Access-Control-Max-Age: 3600 +Access-Control-Allow-Credentials: true +Access-Control-Allow-Headers: * diff --git a/mocks/helpers.js b/mocks/helpers.js new file mode 100644 index 0000000..1cfc0f2 --- /dev/null +++ b/mocks/helpers.js @@ -0,0 +1,127 @@ +const getRandomArbitrary = (min, max, precision) => { + const randomValue = Math.random() * (max - min) + min; + + return precision ? randomValue.toFixed(precision) : randomValue; +} + +const getRandomInt = (min, max) => { + min = Math.ceil(min); + max = Math.floor(max); + + return Math.floor(Math.random() * (max - min + 1)) + min; +} + + +const Helpers = { + getMarketInfos: (marketName) => { + let pairs = marketName.split("/"); + let baseUnit = pairs[0].toLowerCase(); + let quoteUnit = pairs[1].toLowerCase(); + let marketId = `${baseUnit}${quoteUnit}`; + + return { + baseUnit, + quoteUnit, + marketId, + } + }, + getTickers: (markets) => { + let tickers = {} + markets.forEach(name => { + let { marketId } = Helpers.getMarketInfos(name); + const change = (10 + Math.random() * 10) * (Math.random() > 0.5 ? 1 : -1); + const coeffChange = 1 + parseFloat(change / 1000); + const open = 0.134 * coeffChange; + const last = 0.134 / coeffChange; + const price_change_percent = (last - open) / last * 100; + const signPrefix = price_change_percent >= 0 ? '+' : '-'; + + tickers[marketId] = { + "amount": `${15 * coeffChange}`, + "low": `${0.001 * coeffChange}`, + "high": `${0.145 * coeffChange}`, + "last": `${last}`, + "open": open, + "volume": `${3500 * coeffChange}`, + "avg_price": "0.0", + "price_change_percent": `${signPrefix}${Math.abs(price_change_percent.toFixed(2))}%`, + "at": Date.now() / 1000, + } + }); + + return tickers; + }, + getBalances: () => { + const getBalanceValue = (value, precision) => ((Math.random() > 0.5 ? 1 : -1) * Math.random() / 10 + +value).toFixed(precision); + const getLockedValue = (value, precision) => (Math.random() / 10 + +value).toFixed(precision); + + return { + "bch": [getBalanceValue("10.12", 8), getLockedValue("0.001", 8)], + "btc": [getBalanceValue("0.21026373", 8), getLockedValue("0.0001", 8)], + "dash": [getBalanceValue("5", 6), getLockedValue("0.0005", 6)], + "eth": [getBalanceValue("5", 6), getLockedValue("0.0002", 6)], + "usd": [getBalanceValue("1000", 2), getLockedValue("100", 2)] + } + }, + getDepth: (sequence) => { + const delta = 2 * (1 + Math.cos(2 * Math.PI * Date.now() / 1000 / 3600)) + const fV = (volume) => String(parseFloat(volume) + delta * 10); + + return { + "asks": [ + ["15.0", fV("1.5")], + ["20.0", fV("80")], + ["20.5", fV("10.0")], + ["30.0", fV("1.0")] + ], + "bids": [ + ["10.95", fV("1.5")], + ["10.90", fV("45")], + ["10.85", fV("35")], + ["10.70", fV("10")], + ], + "sequence": sequence, + } + }, + getDepthIncrement: (sequence) => { + const delta = getRandomArbitrary(1, 100, 2) * (1 + Math.cos(2 * Math.PI * Date.now() / 1000 / 3600)) + const fV = (volume) => String(parseFloat(volume) + delta); + const countOfAsks = getRandomInt(1, 5); + const countOfBids = getRandomInt(1, 5); + const sideProbability = Math.random(); + const asks = []; + const bids = []; + + for (var i = 0; i < countOfAsks; i++) { + asks.push([getRandomArbitrary(15, 20, 1), fV("1.5")]); + } + + for (var i = 0; i < countOfBids; i++) { + bids.push([getRandomArbitrary(10, 12, 2), fV("1.5")]); + } + + if (sideProbability < 0.25) { + return { + "asks": asks, + "sequence": sequence, + } + } + + if (sideProbability < 0.5) { + return { + "bids": bids, + "sequence": sequence, + } + } + + return { + "bids": asks, + "asks": bids, + "sequence": sequence, + } + }, + getStreamsFromUrl: (url) => url.replace("/", "").split(/[&?]stream=/).filter(stream => stream.length > 0), + unique: (list) => list.filter((value, index, self) => self.indexOf(value) === index) +} + +module.exports = Helpers; diff --git a/mocks/markets.js b/mocks/markets.js new file mode 100644 index 0000000..3b744b1 --- /dev/null +++ b/mocks/markets.js @@ -0,0 +1,7 @@ +module.exports = [ + 'BTC/ZAR', + 'BCH/ZAR', + 'ETH/BTC', + 'DASH/BTC', + 'EUR/USD', +] diff --git a/mocks/mockAPI.js b/mocks/mockAPI.js new file mode 100644 index 0000000..6ccb71d --- /dev/null +++ b/mocks/mockAPI.js @@ -0,0 +1,27 @@ +#!/usr/bin/env node +const http = require('http'); +const mockserver = require('./mockserver'); + +const argv = require('yargs').argv; +const portAPI = argv.portAPI || 9002; +const directory = argv.dir || 'mocks'; + +process.on('SIGINT', () => { console.log("Bye bye!"); process.exit(); }); + +class Mock { + constructor(directory, port, verbose = true) { + http.createServer(mockserver(directory, verbose)).listen(port, (error) => { + if (error) { + console.log(`Mock server ${version} unhandled exception`, error); + return; + } + + if (verbose) { + const url = `http://0.0.0.0:${port}`.green + console.log(`Mockserver serving ${directory} on: ${url}`); + } + }) + } +} + +new Mock(directory, portAPI, true) diff --git a/mocks/mockWS.js b/mocks/mockWS.js new file mode 100644 index 0000000..1806391 --- /dev/null +++ b/mocks/mockWS.js @@ -0,0 +1,22 @@ +#!/usr/bin/env node +const http = require('http'); +const mockserver = require('./mockserver'); +var markets = require('./markets.js'); +var RangerMock = require('./ranger.js'); +const argv = require('yargs').argv; +const fs = require('fs'); +const portWS = argv.portWS || 9003; + +process.on('SIGINT', () => { console.log("Bye bye!"); process.exit(); }); + +var server = new RangerMock(portWS, markets); + +fs.watch('./mocks', (curr, prev) => { + console.log(`reloading mock websocket`); + server.close(); + delete require.cache[require.resolve('./ranger.js')] + delete require.cache[require.resolve('./markets.js')] + RangerMock = require('./ranger.js') + markets = require('./markets.js'); + server = new RangerMock(portWS, markets); +}); diff --git a/mocks/mockserver.js b/mocks/mockserver.js new file mode 100644 index 0000000..a138fd6 --- /dev/null +++ b/mocks/mockserver.js @@ -0,0 +1,357 @@ +const fs = require('fs'); +const path = require('path'); +const colors = require('colors'); +const join = path.join; +const Combinatorics = require('js-combinatorics'); +const normalizeHeader = require('header-case-normalizer'); + +/** + * Returns the status code out of the + * first line of an HTTP response + * (ie. HTTP/1.1 200 Ok) + */ +function parseStatus(header) { + return header.split(' ')[1]; +}; + +/** + * Parses an HTTP header, splitting + * by colon. + */ +const parseHeader = function (header) { + header = header.split(': '); + + return {key: normalizeHeader(header[0]), value: parseValue(header[1])}; +}; + +const parseValue = function(value) { + if (/^#header/m.test(value)) { + return value.replace(/^#header (.*);/m, function (statement, val) { + const expression = val.replace(/[${}]/g, ''); + return eval(expression); + }).replace(/\r\n?/g, '\n'); + } + return value; +}; + +/** + * Prepares headers to watch, no duplicates, non-blanks. + * Priority exports over ENV definition. + */ +const prepareWatchedHeaders = function () { + const exportHeaders = module.exports.headers && module.exports.headers.toString(); + const headers = (exportHeaders || process.env.MOCK_HEADERS || '').split(','); + + return headers.filter(function(item, pos, self) { + return item && self.indexOf(item) == pos; + }); +} + +/** + * Parser the content of a mockfile + * returning an HTTP-ish object with + * status code, headers and body. + */ +const parse = function (content, file, request) { + const headers = {}; + let body; + const bodyContent = []; + content = content.split(/\r?\n/); + const status = parseStatus(content[0]); + let headerEnd = false; + delete content[0]; + + content.forEach(function (line) { + switch (true) { + case headerEnd: + bodyContent.push(line); + break; + case (line === '' || line === '\r'): + headerEnd = true; + break; + default: + const header = parseHeader(line); + headers[header.key] = header.value; + break; + } + }); + + body = bodyContent.join('\n'); + + if (/^#import/m.test(body)) { + const context = path.parse(file).dir + '/'; + + body = body.replace(/^#import (.*);/m, function (includeStatement, file) { + const importThisFile = file.replace(/['"]/g, ''); + const content = fs.readFileSync(path.join(context, importThisFile)); + if (importThisFile.endsWith(".js")) { + return JSON.stringify(eval(content.toString())); + } else { + return content; + } + }) + .replace(/\r\n?/g, '\n'); + } + + return {status: status, headers: headers, body: body}; +}; + +function removeBlanks(array) { + return array.filter(function (i) { return i; }); +} + +function getWildcardPath(dir) { + let steps = removeBlanks(dir.split('/')); + let testPath; + let newPath; + let exists = false; + + while(steps.length) { + steps.pop(); + testPath = join(steps.join('/'), '/__'); + exists = fs.existsSync(join(mockserver.directory, testPath)); + if(exists) { newPath = testPath; } + } + + const res = getDirectoriesRecursive(mockserver.directory).filter(dir => { + const directories = dir.split(path.sep); + return directories.includes('__'); + }).sort((a, b) => { + const aLength = a.split(path.sep) + const bLength = b.split(path.sep) + + if (aLength == bLength) + return 0 + + // Order from longest file path to shortest. + return aLength > bLength ? -1 : 1 + }).map(dir => { + const steps = dir.split(path.sep) + const baseDir = mockserver.directory.split(path.sep) + steps.splice(0, baseDir.length) + return steps.join(path.sep) + }) + + steps = removeBlanks(dir.split('/')) + + newPath = matchWildcardPaths(res, steps) || newPath; + + return newPath; +} + +function matchWildcardPaths(res, steps) { + for (let resIndex = 0; resIndex < res.length; resIndex++) { + const dirSteps = res[resIndex].split(/\/|\\/); + if (dirSteps.length !== steps.length) { continue; } + const result = matchWildcardPath(steps, dirSteps); + if (result) { return result; } + } + return null; +} + +function matchWildcardPath(steps, dirSteps) { + for (let stepIndex = 1; stepIndex <= steps.length; stepIndex++) { + const step = steps[steps.length - stepIndex]; + const dirStep = dirSteps[dirSteps.length - stepIndex]; + if (step !== dirStep && dirStep != '__') { + return null; + } + } + return '/' + dirSteps.join('/'); +} + +function flattenDeep(directories){ + return directories.reduce((acc, val) => Array.isArray(val) ? acc.concat(flattenDeep(val)) : acc.concat(val), []); + } + +function getDirectories(srcpath) { + return fs.readdirSync(srcpath) + .map(file => path.join(srcpath, file)) + .filter(path => fs.statSync(path).isDirectory()); +} + +function getDirectoriesRecursive(srcpath) { + const nestedDirectories = getDirectories(srcpath).map(getDirectoriesRecursive); + const directories = flattenDeep(nestedDirectories); + directories.push(srcpath) + return directories; +} + +/** + * Returns the body or query string to be used in + * the mock name. + * + * In any case we will prepend the value with a double + * dash so that the mock files will look like: + * + * POST--My-Body=123.mock + * + * or + * + * GET--query=string&hello=hella.mock + */ +// POST--email=accountant@barong.io&password=123123&data.address=111 +function getObjectPath(instance, parentName) { + let result = ''; + + Object.keys(instance).forEach(key=>{ + const value = instance[key]; + const formatKey = parentName? `${parentName}.${key}`: key; + + if(typeof value === 'object') { + result += getObjectPath(value, formatKey); + } + else { + result += `&${formatKey}=${value}`; + } + }); + + return result; +} + + +function getBodyOrQueryString(body, query) { + if (query) { + return '--' + query; + } + + if (body && body !== '') { + try{ + let obj = eval('(' + body + ')'); + const path = getObjectPath(obj); + return '--' + path.replace(/^&/gi, ''); + } + catch (error) { + console.log('[Body parse error]', error); + } + + return '--' + body; + } + + return body; +} + +/** + * Ghetto way to get the body + * out of the request. + * + * There are definitely better + * ways to do this (ie. npm/body + * or npm/body-parser) but for + * the time being this does it's work + * (ie. we don't need to support + * fancy body parsing in mockserver + * for now). + */ +function getBody(req, callback) { + let body = ''; + + req.on('data', function(b){ + body = body + b.toString(); + }); + + req.on('end', function() { + callback(body); + }); +} + +function getMockedContent(path, prefix, body, query) { + const mockName = prefix + (getBodyOrQueryString(body, query) || '') + '.mock'; + const mockFile = join(mockserver.directory, path, mockName); + let content; + + try { + content = fs.readFileSync(mockFile, {encoding: 'utf8'}); + if (mockserver.verbose) { + console.log('Reading from '+ mockFile.yellow +' file: ' + 'Matched'.green); + } + } catch(err) { + if (mockserver.verbose) { + console.log('Reading from '+ mockFile.yellow +' file: ' + 'Not matched'.red); + } + content = (body || query) && getMockedContent(path, prefix); + } + + return content; +} + +function getContentFromPermutations(path, method, body, query, permutations) { + let content, prefix; + + while(permutations.length) { + prefix = method + permutations.pop().join(''); + content = getMockedContent(path, prefix, body, query) || content; + } + + return { content: content, prefix: prefix }; +} + +const mockserver = { + directory: '.', + verbose: false, + headers: [], + init: function(directory, verbose) { + this.directory = directory; + this.verbose = !!verbose; + this.headers = prepareWatchedHeaders(); + }, + handle: function(req, res) { + getBody(req, function(body) { + req.body = body; + const url = req.url; + let path = url; + + const queryIndex = url.indexOf('?'), + query = queryIndex >= 0 ? url.substring(queryIndex).replace(/\?/g, '') : '', + method = req.method.toUpperCase(), + headers = []; + + if (queryIndex > 0) { + path = url.substring(0, queryIndex); + } + + if(req.headers && mockserver.headers.length) { + mockserver.headers.forEach(function(header) { + header = header.toLowerCase(); + if(req.headers[header]) { + headers.push('_' + normalizeHeader(header) + '=' + req.headers[header]); + } + }); + } + + // Now, permute the possible headers, and look for any matching files, prioritizing on + // both # of headers and the original header order + let matched, + permutations = [[]]; + + if(headers.length) { + permutations = Combinatorics.permutationCombination(headers).toArray().sort(function(a, b) { return b.length - a.length; }); + permutations.push([]); + } + + matched = getContentFromPermutations(path, method, body, query, permutations.slice(0)); + + if(!matched.content && (path = getWildcardPath(path))) { + matched = getContentFromPermutations(path, method, body, query, permutations.slice(0)); + } + + if(matched.content) { + const mock = parse(matched.content, join(mockserver.directory, path, matched.prefix), req); + res.writeHead(mock.status, mock.headers); + + return res.end(mock.body); + } else { + res.writeHead(404); + res.end('Not Mocked'); + } + }); + } +}; + +module.exports = function(directory, silent) { + mockserver.init(directory, silent); + + return mockserver.handle; +}; + +module.exports.headers = null; diff --git a/mocks/ranger.js b/mocks/ranger.js new file mode 100644 index 0000000..d7f6b93 --- /dev/null +++ b/mocks/ranger.js @@ -0,0 +1,281 @@ +const WebSocket = require('ws'); +const Helpers = require('./helpers') + +const isSubscribed = (streams, routingKey) => { + for (const i in streams) { + const stream = streams[i]; + if (routingKey.startsWith(stream) || routingKey.endsWith(stream)) { + return true; + } + } + return false; +} + +const sendEvent = (ws, routingKey, event) => { + try { + if (isSubscribed(ws.streams, routingKey)) { + const payload = {}; + payload[routingKey] = event; + ws.send(JSON.stringify(payload)); + } + } catch (error) { + console.log(`failed to send ranger message: ${error}`); + } +} + +const tickersMock = (ws, markets) => () => { + sendEvent(ws, "global.tickers", Helpers.getTickers(markets)); +}; + +const balancesMock = (ws) => () => { + sendEvent(ws, "balances", Helpers.getBalances()); +}; + +/* + Example: ["btcusd.update",{"asks":[["1000.0","0.1"]],"bids":[]}] +*/ +const orderBookUpdateMock = (ws, marketId) => () => { + sendEvent(ws, `${marketId}.update`, Helpers.getDepth(0)); +}; + +// Inremental orderbook support +const orderBookSnapshotMock = (ws, marketId) => () => { + ws.sequences[marketId] = 1; + console.log(`orderBookSnapshotMock called: ${marketId}`); + try { + if (isSubscribed(ws.streams, `${marketId}.ob-inc`)) { + console.log(`orderBookSnapshotMock sending: ${marketId}`); + const payload = {}; + payload[`${marketId}.ob-snap`] = Helpers.getDepth(ws.sequences[marketId]); + ws.send(JSON.stringify(payload)); + } + } catch (error) { + console.log(`failed to send ranger message: ${error}`); + } +}; + +const orderBookIncrementMock = (ws, marketId) => () => { + var event = Helpers.getDepthIncrement(); + event.sequence = ++ws.sequences[marketId]; + sendEvent(ws, `${marketId}.ob-inc`, event); +}; + +/* + Success order scenario: + * Private messages: + ["order",{"id":758,"at":1546605232,"market":"macarstc","kind":"bid","price":"1.17","state":"wait","remaining_volume":"0.1","origin_volume":"0.1"}] + ["order",{"id":758,"at":1546605232,"market":"macarstc","kind":"bid","price":"1.17","state":"done","remaining_volume":"0.0","origin_volume":"0.1"}] + ["trade",{"id":312,"kind":"bid","at":1546605232,"price":"1.17","remaining_volume":"0.1","ask_id":651,"bid_id":758,"market":"macarstc"}] + + * Public messages: + ["macarstc.trades",{"trades":[{"tid":312,"type":"buy","date":1546605232,"price":"1.17","amount":"0.1"}]}] +*/ + +// Those functions are the same used in k-line mocked API +const minDay = 6; +const maxDay = 10; +const fakePeriod = 86400; + +const timeToPrice = (time) => { + return minDay + (maxDay - minDay) / 2 * (1 + Math.cos((time / fakePeriod) * 2 * Math.PI)); +}; + +const timeToVolume = (time, periodInSeconds) => { + return maxDay * 10 / 2 * (1 + Math.cos((time / fakePeriod) * 2 * Math.PI)); +}; + +const kLine = (time, period) => { + const periodInSeconds = parseInt(period * 60); + const roundedTime = parseInt(time / periodInSeconds) * periodInSeconds; + const open = timeToPrice(time); + const close = timeToPrice(time + periodInSeconds); + const delta = (maxDay - minDay) / fakePeriod * periodInSeconds * 2; + const high = Math.max(open, close) + delta; + const low = Math.min(open, close) - delta; + const volume = timeToVolume(time, periodInSeconds); + + return [roundedTime, open, high, low, close, volume].map(String); +} + +let tradeIndex = 100000; +let orderIndex = 100; + +const matchedTradesMock = (ws, marketId) => { + let kind = "bid"; + let price = 0.1; + let volume = 1000; + + return function () { + const shouldPushOrder = Math.random() < 0.1; + const orderId = orderIndex++; + const tradeId = tradeIndex++; + kind = kind == "bid" ? "ask" : "bid"; + const takerType = Math.random() < 0.5 ? "buy" : "sell"; + const orderType = Math.random() < 0.5 ? "limit" : "market"; + price += price > 0.01 ? Math.random() < 0.5 ? +0.01 : -0.01 : 0.01; + volume += 50; + let bidId = kind == "bid" ? orderId : orderId - 10; + let askId = kind == "ask" ? orderId : orderId - 10; + let at = parseInt(Date.now() / 1000); + let remainingVolume = volume; + const executedVolume = volume - remainingVolume; + + const order = { + "uuid": orderId + 1000000, + "id": orderId, + "at": at + 1, + "market": marketId, + "kind": kind, + "price": price, + "avg_price": price, + "state": "wait", + "remaining_volume": volume, + "origin_volume": volume, + "executed_volume": executedVolume, + "side": takerType, + "created_at": at, + "updated_at": at + 1, + "order_type": orderType, + "trades_count": 0 + }; + + const privateTrade = { + "uuid": orderId + 1000000, + "id": tradeId, + "price": price, + "total": (volume * price).toFixed(4), + "amount": volume, + "market": marketId, + "at": at + 1, + "created_at": at, + "taker_type": takerType + }; + + const publicTrade = { + "tid": tradeId, + "date": at, + "taker_type": takerType, + "price": price, + "amount": volume + }; + + if (ws.authenticated && shouldPushOrder) { + sendEvent(ws, "order", order); + + setTimeout(() => { + remainingVolume = volume / (Math.random() + 2); + sendEvent(ws, "order", { ...order, "remaining_volume": String(remainingVolume) }); + + setTimeout(() => { + sendEvent(ws, "order", { ...order, "state": "done", "remaining_volume": "0.0" }); + sendEvent(ws, "trade", privateTrade); + }, 10000); + }, 5000); + } + sendEvent(ws, `${marketId}.trades`, { "trades": [publicTrade] }); + } +}; + +const klinesMock = (ws, marketId) => () => { + let at = parseInt(Date.now() / 1000); + + sendEvent(ws, `${marketId}.kline-1m`, kLine(at, 1)); + sendEvent(ws, `${marketId}.kline-5m`, kLine(at, 5)); + sendEvent(ws, `${marketId}.kline-15m`, kLine(at, 15)); + sendEvent(ws, `${marketId}.kline-30m`, kLine(at, 30)); + sendEvent(ws, `${marketId}.kline-1h`, kLine(at, 60)); + sendEvent(ws, `${marketId}.kline-2h`, kLine(at, 120)); + sendEvent(ws, `${marketId}.kline-4h`, kLine(at, 240)); + sendEvent(ws, `${marketId}.kline-6h`, kLine(at, 360)); + sendEvent(ws, `${marketId}.kline-12h`, kLine(at, 720)); + sendEvent(ws, `${marketId}.kline-1d`, kLine(at, 1440)); + sendEvent(ws, `${marketId}.kline-3d`, kLine(at, 4320)); + sendEvent(ws, `${marketId}.kline-1w`, kLine(at, 10080)); +}; +class RangerMock { + constructor(port, markets) { + this.markets = markets; + this.port = port; + this.start(); + } + start() { + this.wss = new WebSocket.Server({ port: this.port }); + const url = `ws://0.0.0.0:${this.port}`.green + console.log(`Ranger: listening on ${url}`); + const ranger = this; + this.wss.on('connection', function connection(ws, request) { + ranger.initConnection(ws, request); + ws.on('message', (message) => ranger.onMessage(ws, message)); + ws.on('close', () => ranger.closeConnection(ws)); + }); + } + close() { + this.wss.close(); + } + initConnection(ws, request) { + ws.authenticated = true; + ws.timers = []; + ws.streams = []; + ws.sequences = {}; + + console.log(`Ranger: connection accepted, url: ${request.url}`); + this.subscribe(ws, Helpers.getStreamsFromUrl(request.url)); + ws.timers.push(setInterval(tickersMock(ws, this.markets), 3000)); + ws.timers.push(setInterval(balancesMock(ws), 3000)); + this.markets.forEach((name) => { + let { baseUnit, quoteUnit, marketId } = Helpers.getMarketInfos(name); + ws.timers.push(setInterval(orderBookIncrementMock(ws, marketId), 200)); + ws.timers.push(setInterval(orderBookUpdateMock(ws, marketId), 2000)); + ws.timers.push(setInterval(matchedTradesMock(ws, marketId), 10000)); + ws.timers.push(setInterval(klinesMock(ws, marketId), 2500)); + }); + ws.timers.push(setTimeout(() => {sendEvent(ws, "deposit_address", { address: "a4E49HU6CTHyYMmsYt3F1ar1q5W89t3hfQ?dt=1", currencies:["xrp"], type:"create" })}, 15000)); + } + closeConnection() { + console.log('Ranger: connection closed'); + } + onMessage(ws, message) { + if (message.length === 0) + return; + try { + console.log('Ranger: received message: %s', message); + var payload = JSON.parse(message); + + if ("jwt" in payload) { + if (payload["jwt"] === "Bearer null") { + ws.send(JSON.stringify({ "error": { "message": "Authentication failed." } })); + } else { + ws.send(JSON.stringify({ "success": { "message": "Authenticated." } })); + ws.authenticated = true; + } + } + switch (payload["event"]) { + case "subscribe": + this.subscribe(ws, payload["streams"]); + break; + + case "unsubscribe": + this.unsubscribe(ws, payload["streams"]); + break; + } + } catch (err) { + console.log(`Ranger: Something went wrong: ${err} (message: ${message})`); + } + + } + subscribe(ws, streams) { + ws.streams = Helpers.unique(ws.streams.concat(streams)); + console.log(`subcribed to : ${ws.streams}`) + this.markets.forEach((name) => { + let { marketId } = Helpers.getMarketInfos(name); + orderBookSnapshotMock(ws, marketId)(); + }); + ws.send(JSON.stringify({ "success": { "message": "subscribed", "streams": ws.streams } })) + } + unsubscribe(ws, streams) { + ws.streams = ws.streams.filter((value) => streams.indexOf(value) === -1); + ws.send(JSON.stringify({ "success": { "message": "unsubscribed", "streams": ws.streams } })) + } +} + +module.exports = RangerMock; diff --git a/nginx.conf b/nginx.conf new file mode 100644 index 0000000..c8ce33c --- /dev/null +++ b/nginx.conf @@ -0,0 +1,58 @@ +map $sent_http_content_type $expires { + default off; + text/html 1h; + text/css max; + application/javascript 10m; + ~image/ max; +} + +server { + listen 3000; + server_name localhost; + absolute_redirect off; + expires $expires; + gzip on; + gzip_comp_level 5; + gzip_min_length 256; + gzip_types + application/atom+xml + application/javascript + application/json + application/ld+json + application/manifest+json + application/rss+xml + application/vnd.geo+json + application/vnd.ms-fontobject + application/x-font-ttf + application/x-web-app-manifest+json + application/xhtml+xml + application/xml + font/opentype + image/bmp + image/svg+xml + image/x-icon + text/cache-manifest + text/css + text/plain + text/vcard + text/vnd.rim.location.xloc + text/vtt + text/x-component + text/x-cross-domain-policy; + + location = /health { + access_log off; + default_type text/plain; + return 200 "ok\n"; + } + + location / { + root /usr/share/nginx/html; + index index.html; + try_files $uri $uri/ /index.html?/$request_uri; + sendfile on; + sendfile_max_chunk 1m; + tcp_nopush on; + gzip_static on; + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..670bba3 --- /dev/null +++ b/package.json @@ -0,0 +1,163 @@ +{ + "name": "@fibitex/gereh", + "version": "2.6.0", + "private": true, + "dependencies": { + "@capacitor/android": "2.4.1", + "@capacitor/cli": "^2.4.2", + "@capacitor/core": "^2.4.1", + "@capacitor/ios": "2.4.1", + "@ethersproject/providers": "^5.0.13", + "@formatjs/intl-pluralrules": "^3.2.5", + "@formatjs/intl-relativetimeformat": "^7.0.0", + "@ionic/cli": "^6.11.11", + "@openware/cryptofont": "2.3.0", + "@sentry/browser": "^7.17.2", + "@sentry/react": "^7.17.2", + "@sentry/tracing": "^7.17.2", + "@types/compression-webpack-plugin": "^2.0.1", + "@types/react-select": "^3.1.2", + "@types/ws": "^6.0.4", + "@web3-react/core": "^6.1.1", + "@web3-react/injected-connector": "^6.0.7", + "axios": "^0.32.0", + "bitcoincashjs": "0.1.10", + "bootstrap": "^4.3.1", + "compression-webpack-plugin": "^3.0.1", + "history": "^4.7.2", + "http-signature": "^1.3.5", + "i18n-iso-countries": "^3.7.8", + "immutability-helper": "^3.0.0", + "javascript-obfuscator": "^2.6.1", + "js-yaml": "^3.12.0", + "moment": "^2.23.0", + "moment-timezone": "^0.5.23", + "postcss": "^7.0.23", + "postcss-cli": "^6.1.3", + "postcss-loader": "^3.0.0", + "qrcode.react": "^1.0.0", + "react": "16.10", + "react-accessible-accordion": "^3.3.4", + "react-bootstrap": "^1.0.0-beta.16", + "react-color": "^2.18.0", + "react-countdown": "^2.3.2", + "react-date-picker": "^7.0.0", + "react-dom": "^16.6.3", + "react-dropzone": "^11.3.2", + "react-fade-in": "^0.1.6", + "react-ga": "^3.3.1", + "react-ga4": "^1.4.1", + "react-google-recaptcha": "^1.0.4", + "react-grid-layout": "^0.18.3", + "react-intl": "^3.12.1", + "react-maskinput": "^1.0.1", + "react-perfect-scrollbar": "^1.5.8", + "react-redux": "7.1.0", + "react-router": "^5.1.2", + "react-router-dom": "^5.1.2", + "react-scripts": "3.4.3", + "react-scroll": "^1.8.1", + "react-select": "^3.2.0", + "react-tooltip": "^4.2.21", + "recharts": "^1.8.5", + "redux": "^4.0.1", + "redux-saga": "^1.1.3", + "redux-sentry-middleware": "^0.1.8", + "sinon": "^7.2.3", + "stylelint": "^13.2.1", + "stylelint-config-standard": "^20.0.0", + "stylelint-order": "^4.0.0", + "tslint": "^5.13.1", + "ua-parser-js": "^0.7.19", + "ws": "^7.5.10" + }, + "scripts": { + "build:css": "postcss src/index.pcss -o src/index.css", + "watch:css": "postcss src/index.pcss -o src/index.css -w", + "lint": "yarn style:lint && tsc --noEmit && tslint --project .", + "lint:fix": "tslint --project . --fix", + "style:lint": "npx stylelint \"**/*.pcss\"", + "mockAPI": "node mocks/mockAPI.js", + "mockWS": "node mocks/mockWS.js", + "start": "npm-run-all -p watch:css start-js", + "start-mock": "npm-run-all -p watch:css start-js mockAPI mockWS", + "start-js": "react-scripts start", + "build-js": "react-app-rewired build --scripts-version react-scripts build", + "build": "npm-run-all build:css build-js clean:mapfiles", + "clean:mapfiles": "find build -name '*.map' -exec rm {} ';'", + "test": "react-scripts test", + "test:coverage": "react-scripts test --collectCoverage=true", + "test:ci": "react-scripts test --ci", + "spec:integration": "cypress open", + "eject": "react-scripts eject", + "clean": "rimraf build", + "analyze": "source-map-explorer build/static/js/main.*" + }, + "devDependencies": { + "@openware/coding-standards": "2.3.0", + "@types/axios": "^0.14.0", + "@types/classnames": "^2.2.6", + "@types/enzyme": "^3.1.13", + "@types/enzyme-adapter-react-16": "^1.0.3", + "@types/history": "^4.7.0", + "@types/jest": "^23.3.1", + "@types/jquery": "^3.3.6", + "@types/node": "^10.9.4", + "@types/react": "^16.9.14", + "@types/react-dom": "^16.9.4", + "@types/react-hot-loader": "^4.1.0", + "@types/react-redux": "7.1.9", + "@types/react-router": "^5.1.3", + "@types/react-router-dom": "^5.1.3", + "@types/react-test-renderer": "^16.0.2", + "@types/webpack-env": "^1.13.6", + "autoprefixer": "^9.1.1", + "axios-mock-adapter": "^1.16.0", + "babel-jest": "24.9.0", + "chalk": "^2.4.1", + "classnames": "^2.2.6", + "colors": "1.3.2", + "cryptocurrency-icons": "^0.16.1", + "cssnano": "^4.0.5", + "cypress": "^3.1.5", + "enzyme": "^3.10.0", + "enzyme-adapter-react-16": "^1.10.0", + "enzyme-to-json": "^3.3.4", + "file-loader": "^1.1.11", + "header-case-normalizer": "1.0.3", + "husky": "^1.0.0-rc.13", + "isomorphic-ws": "^4.0.1", + "jest": "24.9.0", + "js-combinatorics": "0.5.0", + "npm-run-all": "^4.1.5", + "postcss-autoreset": "^2.0.2", + "postcss-hexrgba": "^1.0.1", + "postcss-import": "^12.0.0", + "postcss-nested": "^3.0.0", + "prettier": "1.9.0", + "ramda": "^0.26.1", + "react-app-rewired": "^2.1.5", + "react-hot-loader": "^4.3.4", + "react-test-renderer": "^16.4.2", + "redux-mock-store": "^1.5.3", + "rimraf": "^2.6.2", + "source-map-explorer": "^1.7.0", + "ts-jest": "^23.1.3", + "ts-node": "^7.0.1", + "tslint-plugin-prettier": "^2.3.0", + "typescript": "3.8.2", + "webpack": "4.42.0", + "webpack-obfuscator": "^2.3.0" + }, + "husky": { + "hooks": { + "commit-msg": "node ./scripts/validate_commit.js", + "pre-push": "yarn lint && CI=true yarn test --no-watch" + } + }, + "browserslist": [ + ">0.2%", + "not ie <= 11", + "not op_mini all" + ] +} diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 0000000..9f49d15 --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,11 @@ +module.exports = { + include: [ + 'node_modules', + ], + plugins: [ + require('postcss-import'), + require('postcss-nested'), + require('postcss-hexrgba'), + require('autoprefixer'), + ], +}; diff --git a/public/charting_library/charting_library.min.d.ts b/public/charting_library/charting_library.min.d.ts new file mode 100644 index 0000000..a0c3bd7 --- /dev/null +++ b/public/charting_library/charting_library.min.d.ts @@ -0,0 +1,1520 @@ +/// + +/** + * This is the generic type useful for declaring a nominal type, + * which does not structurally matches with the base type and + * the other types declared over the same base type + * + * Usage: + * @example + * type Index = Nominal; + * // let i: Index = 42; // this fails to compile + * let i: Index = 42 as Index; // OK + * @example + * type TagName = Nominal; + */ +export declare type Nominal = T & { + [Symbol.species]: Name; +}; +export declare const enum ConnectionStatus { + Connected = 1, + Connecting = 2, + Disconnected = 3, + Error = 4 +} +export declare const enum NotificationType { + Error = 0, + Success = 1 +} +export declare const enum OrderStatus { + Canceled = 1, + Filled = 2, + Inactive = 3, + Placing = 4, + Rejected = 5, + Working = 6 +} +export declare const enum OrderStatusFilter { + All = 0, + Canceled = 1, + Filled = 2, + Inactive = 3, + Rejected = 5, + Working = 6 +} +export declare const enum OrderTicketFocusControl { + StopLoss = 1, + StopPrice = 2, + TakeProfit = 3 +} +export declare const enum OrderType { + Limit = 1, + Market = 2, + Stop = 3, + StopLimit = 4 +} +export declare const enum ParentType { + Order = 1, + Position = 2, + Trade = 3 +} +export declare const enum PriceScaleMode { + Normal = 0, + Log = 1, + Percentage = 2, + IndexedTo100 = 3 +} +export declare const enum SeriesStyle { + Bars = 0, + Candles = 1, + Line = 2, + Area = 3, + HeikenAshi = 8, + HollowCandles = 9, + Renko = 4, + Kagi = 5, + PointAndFigure = 6, + LineBreak = 7 +} +export declare const enum Side { + Buy = 1, + Sell = -1 +} +export declare const widget: ChartingLibraryWidgetConstructor; +export declare function version(): string; +export declare type ActionMetaInfo = ActionDescriptionWithCallback | MenuSeparator; +export declare type AvailableSaveloadVersions = '1.0' | '1.1'; +export declare type ChartActionId = 'chartProperties' | 'compareOrAdd' | 'scalesProperties' | 'tmzProperties' | 'paneObjectTree' | 'insertIndicator' | 'symbolSearch' | 'changeInterval' | 'timeScaleReset' | 'chartReset' | 'seriesHide' | 'studyHide' | 'lineToggleLock' | 'lineHide' | 'showLeftAxis' | 'showRightAxis' | 'scaleSeriesOnly' | 'drawingToolbarAction' | 'stayInDrawingModeAction' | 'hideAllMarks' | 'showCountdown' | 'showSeriesLastValue' | 'showSymbolLabelsAction' | 'showStudyLastValue' | 'showStudyPlotNamesAction' | 'undo' | 'redo' | 'paneRemoveAllStudiesDrawingTools'; +export declare type Direction = 'buy' | 'sell'; +export declare type DomeCallback = (data: DOMData) => void; +export declare type DrawingEventType = 'click' | 'move' | 'remove' | 'hide' | 'show'; +export declare type EditObjectDialogObjectType = 'mainSeries' | 'drawing' | 'study' | 'other'; +export declare type EmptyCallback = () => void; +export declare type EntityId = Nominal; +export declare type ErrorCallback = (reason: string) => void; +export declare type FieldDescriptor = TimeFieldDescriptor | SeriesFieldDescriptor | StudyFieldDescriptor; +export declare type GetMarksCallback = (marks: T[]) => void; +export declare type HistoryCallback = (bars: Bar[], meta: HistoryMetadata) => void; +export declare type IBasicDataFeed = IDatafeedChartApi & IExternalDatafeed; +export declare type InputFieldValidator = (value: any) => InputFieldValidatorResult; +export declare type InputFieldValidatorResult = PositiveBaseInputFieldValidatorResult | NegativeBaseInputFieldValidatorResult; +export declare type LanguageCode = 'ar' | 'zh' | 'cs' | 'da_DK' | 'nl_NL' | 'en' | 'et_EE' | 'fr' | 'de' | 'el' | 'he_IL' | 'hu_HU' | 'id_ID' | 'it' | 'ja' | 'ko' | 'fa' | 'pl' | 'pt' | 'ro' | 'ru' | 'sk_SK' | 'es' | 'sv' | 'th' | 'tr' | 'vi'; +export declare type LayoutType = SingleChartLayoutType | MultipleChartsLayoutType; +export declare type MarkConstColors = 'red' | 'green' | 'blue' | 'yellow'; +export declare type MultipleChartsLayoutType = '2h' | '2v' | '2-1' | '3s' | '3h' | '3v' | '4' | '6' | '8' | '1-2' | '3r' | '4h' | '4v' | '4s' | '1-3' | '2-2' | '1-4' | '5s' | '6c' | '8c'; +export declare type OnReadyCallback = (configuration: DatafeedConfiguration) => void; +export declare type Order = OrderWithParent | PlacedOrder; +export declare type OrderDialogCustomField = TextWithCheckboxFieldMetaInfo | CustomComboBoxMetaInfo; +export declare type PineJS = any; +export declare type QuoteData = QuoteOkData | QuoteErrorData; +export declare type QuotesCallback = (data: QuoteData[]) => void; +export declare type ResolutionBackValues = 'D' | 'M'; +export declare type ResolutionString = string; +export declare type ResolveCallback = (symbolInfo: LibrarySymbolInfo) => void; +export declare type RssNewsFeedItem = RssNewsFeedInfo | RssNewsFeedInfo[]; +export declare type SearchSymbolsCallback = (items: SearchSymbolResultItem[]) => void; +export declare type SeriesFormat = 'price' | 'volume'; +export declare type ServerTimeCallback = (serverTime: number) => void; +export declare type ShapePoint = StickedPoint | PricedPoint | TimePoint; +export declare type SingleChartLayoutType = 's'; +export declare type StandardFormatterName = 'date' | 'default' | 'fixed' | 'formatQuantity' | 'formatPrice' | 'formatPriceForexSup' | 'integerSeparated' | 'localDate' | 'percentage' | 'pips' | 'profit' | 'side' | 'status' | 'symbol' | 'type' | 'unixTimeAgo'; +export declare type StudyInputId = Nominal; +export declare type StudyInputValue = string | number | boolean; +export declare type StudyOverrideValueType = string | number | boolean; +export declare type StudyPriceScale = 'left' | 'right' | 'no-scale' | 'as-series'; +export declare type SubscribeBarsCallback = (bar: Bar) => void; +export declare type SupportedLineTools = 'text' | 'anchored_text' | 'note' | 'anchored_note' | 'double_curve' | 'arc' | 'icon' | 'arrow_up' | 'arrow_down' | 'arrow_left' | 'arrow_right' | 'price_label' | 'flag' | 'vertical_line' | 'horizontal_line' | 'cross_line' | 'horizontal_ray' | 'trend_line' | 'info_line' | 'trend_angle' | 'arrow' | 'ray' | 'extended' | 'parallel_channel' | 'disjoint_angle' | 'flat_bottom' | 'pitchfork' | 'schiff_pitchfork_modified' | 'schiff_pitchfork' | 'balloon' | 'inside_pitchfork' | 'pitchfan' | 'gannbox' | 'gannbox_square' | 'gannbox_fixed' | 'gannbox_fan' | 'fib_retracement' | 'fib_trend_ext' | 'fib_speed_resist_fan' | 'fib_timezone' | 'fib_trend_time' | 'fib_circles' | 'fib_spiral' | 'fib_speed_resist_arcs' | 'fib_channel' | 'xabcd_pattern' | 'cypher_pattern' | 'abcd_pattern' | 'callout' | 'triangle_pattern' | '3divers_pattern' | 'head_and_shoulders' | 'fib_wedge' | 'elliott_impulse_wave' | 'elliott_triangle_wave' | 'elliott_triple_combo' | 'elliott_correction' | 'elliott_double_combo' | 'cyclic_lines' | 'time_cycles' | 'sine_line' | 'long_position' | 'short_position' | 'forecast' | 'date_range' | 'price_range' | 'date_and_price_range' | 'bars_pattern' | 'ghost_feed' | 'projection' | 'rectangle' | 'rotated_rectangle' | 'ellipse' | 'triangle' | 'polyline' | 'curve' | 'cursor' | 'dot' | 'arrow_cursor' | 'eraser' | 'measure' | 'zoom' | 'brush'; +export declare type SymbolType = 'stock' | 'index' | 'forex' | 'futures' | 'bitcoin' | 'crypto' | 'undefined' | 'expression' | 'spread' | 'cfd'; +export declare type TableElementFormatFunction = (inputs: TableFormatterInputs) => string | JQuery; +export declare type TextInputFieldValidator = (value: string) => InputFieldValidatorResult; +export declare type ThemeName = 'Light' | 'Dark'; +export declare type Timezone = 'Etc/UTC' | CustomTimezones; +export declare type WatchListSymbolListAddedCallback = (listId: string, symbols: string[]) => void; +export declare type WatchListSymbolListRemovedCallback = (listId: string) => void; +export declare type WatchListSymbolListRenamedCallback = (listId: string, oldName: string, newName: string) => void; +export declare type WatchedValueCallback = (value: T) => void; +export interface AccessList { + type: 'black' | 'white'; + tools: AccessListItem[]; +} +export interface AccessListItem { + name: string; + grayed?: boolean; +} +export interface AccountInfo { + id: string; + name: string; + currency?: string; + currencySign?: string; +} +export interface AccountManagerColumn { + id?: string; + label: string; + className?: string; + formatter?: StandardFormatterName | 'orderSettings' | 'posSettings' | string; + property?: string; + sortProp?: string; + modificationProperty?: string; + notSortable?: boolean; + help?: string; + highlightDiff?: boolean; + fixedWidth?: boolean; + notHideable?: boolean; + hideByDefault?: boolean; +} +export interface AccountManagerInfo { + accountTitle: string; + accountsList?: AccountInfo[]; + account?: IWatchedValue; + summary: AccountManagerSummaryField[]; + customFormatters?: TableElementFormatter[]; + orderColumns: OrderTableColumn[]; + orderColumnsSorting?: SortingParameters; + historyColumns?: AccountManagerColumn[]; + historyColumnsSorting?: SortingParameters; + positionColumns?: AccountManagerColumn[]; + tradeColumns?: AccountManagerColumn[]; + pages: AccountManagerPage[]; + possibleOrderStatuses?: OrderStatus[]; + marginUsed?: IWatchedValue; + contextMenuActions?(contextMenuEvent: JQueryEventObject, activePageActions: ActionMetaInfo[]): Promise; +} +export interface AccountManagerPage { + id: string; + title: string; + tables: AccountManagerTable[]; +} +export interface AccountManagerSummaryField { + text: string; + wValue: IWatchedValueReadonly; + formatter?: string; +} +export interface AccountManagerTable { + id: string; + title?: string; + columns: AccountManagerColumn[]; + initialSorting?: SortingParameters; + changeDelegate: ISubscription<(data: {}) => void>; + flags?: AccountManagerTableFlags; + getData(paginationLastId?: string | number): Promise<{}[]>; +} +export interface AccountManagerTableFlags { + supportPagination?: boolean; +} +export interface ActionDescription { + text?: '-' | string; + separator?: boolean; + shortcut?: string; + tooltip?: string; + checked?: boolean; + checkable?: boolean; + enabled?: boolean; + externalLink?: boolean; + icon?: string; +} +export interface ActionDescriptionWithCallback extends ActionDescription { + action: (a: ActionDescription) => void; +} +export interface Bar { + time: number; + open: number; + high: number; + low: number; + close: number; + volume?: number; +} +export interface BaseInputFieldValidatorResult { + valid: boolean; +} +export interface Brackets { + stopLoss?: number; + takeProfit?: number; +} +export interface BrokerConfigFlags { + showQuantityInsteadOfAmount?: boolean; + supportOrderBrackets?: boolean; + supportPositions?: boolean; + supportPositionBrackets?: boolean; + supportTradeBrackets?: boolean; + supportTrades?: boolean; + supportClosePosition?: boolean; + supportCloseTrade?: boolean; + supportEditAmount?: boolean; + supportLevel2Data?: boolean; + supportDOM?: boolean; + supportMultiposition?: boolean; + supportPLUpdate?: boolean; + supportReducePosition?: boolean; + supportReversePosition?: boolean; + supportMarketOrders?: boolean; + supportLimitOrders?: boolean; + supportStopOrders?: boolean; + supportStopLimitOrders?: boolean; + supportDemoLiveSwitcher?: boolean; + supportMarketBrackets?: boolean; + supportSymbolSearch?: boolean; + supportModifyDuration?: boolean; + supportModifyOrder?: boolean; + supportMargin?: boolean; + calculatePLUsingLast?: boolean; + cancellingBracketCancelsParentOrder?: boolean; + cancellingOnePositionBracketsCancelsOther?: boolean; + requiresFIFOCloseTrades?: boolean; + supportBottomWidget?: boolean; + /** + * @deprecated + */ + supportBrackets?: boolean; +} +export interface BrokerCustomUI { + showOrderDialog?: (order: PreOrder | Order, focus?: OrderTicketFocusControl) => Promise; + showPositionDialog?: (position: Position | Trade, brackets: Brackets, focus?: OrderTicketFocusControl) => Promise; +} +export interface ChartData { + id: string; + name: string; + symbol: string; + resolution: ResolutionString; + content: string; +} +export interface ChartMetaInfo { + id: string; + name: string; + symbol: string; + resolution: ResolutionString; + timestamp: number; +} +export interface ChartingLibraryWidgetConstructor { + new (options: ChartingLibraryWidgetOptions | TradingTerminalWidgetOptions): IChartingLibraryWidget; +} +export interface ChartingLibraryWidgetOptions { + container_id: string; + datafeed: IBasicDataFeed | (IBasicDataFeed & IDatafeedQuotesApi); + interval: ResolutionString; + symbol?: string; + auto_save_delay?: number; + autosize?: boolean; + debug?: boolean; + disabled_features?: string[]; + drawings_access?: AccessList; + enabled_features?: string[]; + fullscreen?: boolean; + height?: number; + library_path?: string; + locale: LanguageCode; + numeric_formatting?: NumericFormattingParams; + saved_data?: object; + studies_access?: AccessList; + study_count_limit?: number; + symbol_search_request_delay?: number; + timeframe?: string; + timezone?: 'exchange' | Timezone; + toolbar_bg?: string; + width?: number; + charts_storage_url?: string; + charts_storage_api_version?: AvailableSaveloadVersions; + client_id?: string; + user_id?: string; + load_last_chart?: boolean; + studies_overrides?: StudyOverrides; + customFormatters?: CustomFormatters; + overrides?: Overrides; + snapshot_url?: string; + preset?: 'mobile'; + time_frames?: TimeFrameItem[]; + custom_css_url?: string; + favorites?: Favorites; + save_load_adapter?: IExternalSaveLoadAdapter; + loading_screen?: LoadingScreenOptions; + settings_adapter?: ISettingsAdapter; + theme?: ThemeName; + custom_indicators_getter?: (PineJS: PineJS) => Promise>; +} +export interface ContextMenuItem { + position: 'top' | 'bottom'; + text: string; + click: EmptyCallback; +} +export interface CreateButtonOptions { + align: 'right' | 'left'; +} +export interface CreateShapeOptions { + shape?: 'arrow_up' | 'arrow_down' | 'flag' | 'vertical_line' | 'horizontal_line'; + text?: string; + lock?: boolean; + disableSelection?: boolean; + disableSave?: boolean; + disableUndo?: boolean; + overrides?: TOverrides; + zOrder?: 'top' | 'bottom'; + showInObjectsTree?: boolean; +} +export interface CreateStudyOptions { + checkLimit?: boolean; + priceScale?: StudyPriceScale; +} +export interface CreateStudyTemplateOptions { + saveInterval?: boolean; +} +export interface CreateTradingPrimitiveOptions { + disableUndo?: boolean; +} +export interface CrossHairMovedEventParams { + time: number; + price: number; +} +export interface CustomComboBoxItem { + text: string; + value: string; +} +export interface CustomComboBoxMetaInfo extends CustomInputFieldMetaInfo { + inputType: 'ComboBox'; + items: CustomComboBoxItem[]; +} +export interface CustomFields { + [key: string]: any; +} +export interface CustomFormatter { + format(date: Date): string; + formatLocal(date: Date): string; +} +export interface CustomFormatters { + timeFormatter: CustomFormatter; + dateFormatter: CustomFormatter; +} +export interface CustomIndicator { + readonly name: string; + readonly metainfo: any; + readonly constructor: any; +} +export interface CustomInputFieldMetaInfo { + inputType: string; + id: string; + title: string; + placeHolder?: string; + value?: any; + validator?: InputFieldValidator; + customInfo?: any; +} +export interface CustomInputFieldsValues { + [fieldId: string]: TextWithCheckboxValue | string | any; +} +export interface DOMData { + snapshot: boolean; + asks: DOMLevel[]; + bids: DOMLevel[]; +} +export interface DOMLevel { + price: number; + volume: number; +} +export interface DatafeedConfiguration { + exchanges?: Exchange[]; + supported_resolutions?: ResolutionString[]; + supports_marks?: boolean; + supports_time?: boolean; + supports_timescale_marks?: boolean; + symbols_types?: DatafeedSymbolType[]; +} +export interface DatafeedQuoteValues { + ch?: number; + chp?: number; + short_name?: string; + exchange?: string; + description?: string; + lp?: number; + ask?: number; + bid?: number; + spread?: number; + open_price?: number; + high_price?: number; + low_price?: number; + prev_close_price?: number; + volume?: number; + original_name?: string; + [valueName: string]: string | number | undefined; +} +export interface DatafeedSymbolType { + name: string; + value: string; +} +export interface DefaultContextMenuActionsParams { +} +export interface DefaultDropdownActionsParams { + showFloatingToolbar?: boolean; + showDOM?: boolean; + showOrderPanel?: boolean; + tradingProperties?: boolean; + selectAnotherBroker?: boolean; + disconnect?: boolean; + showHowToUse?: boolean; +} +export interface DialogParams { + title: string; + body: string; + callback: CallbackType; +} +export interface EditObjectDialogEventParams { + objectType: EditObjectDialogObjectType; + scriptTitle: string; +} +export interface EntityInfo { + id: EntityId; + name: string; +} +export interface ErrorFormatterParseResult extends FormatterParseResult { + error?: string; + res: false; +} +export interface Exchange { + value: string; + name: string; + desc: string; +} +export interface Execution extends CustomFields { + symbol: string; + brokerSymbol?: string; + price: number; + qty: number; + side: Side; + time: number; +} +export interface ExportDataOptions { + from?: number; + to?: number; + includeTime?: boolean; + includeSeries?: boolean; + includedStudies: ReadonlyArray | 'all'; +} +export interface ExportedData { + schema: FieldDescriptor[]; + data: Float64Array[]; +} +export interface Favorites { + intervals: ResolutionString[]; + chartTypes: string[]; +} +export interface FormatterParseResult { + res: boolean; +} +export interface GrayedObject { + type: 'drawing' | 'study'; + name: string; +} +export interface HistoryDepth { + resolutionBack: ResolutionBackValues; + intervalBack: number; +} +export interface HistoryMetadata { + noData: boolean; + nextTime?: number | null; +} +export interface IBrokerCommon { + chartContextMenuActions(context: ITradeContext, options?: DefaultContextMenuActionsParams): Promise; + isTradable(symbol: string): Promise; + connectionStatus(): ConnectionStatus; + orders(): Promise; + positions?(): Promise; + trades?(): Promise; + executions(symbol: string): Promise; + symbolInfo(symbol: string): Promise; + accountInfo(): Promise; + accountManagerInfo(): AccountManagerInfo; + formatter?(symbol: string, alignToMinMove: boolean): Promise; + spreadFormatter?(symbol: string): Promise; + quantityFormatter?(symbol: string): Promise; +} +export interface IBrokerConnectionAdapterFactory { + createDelegate(): IDelegate; + createWatchedValue(value?: T): IWatchedValue; + createPriceFormatter(priceScale: number, minMove: number, fractional: boolean, minMove2: number): IFormatter; +} +export interface IBrokerConnectionAdapterHost { + factory: IBrokerConnectionAdapterFactory; + connectionStatusUpdate(status: ConnectionStatus, message?: string): void; + defaultFormatter(symbol: string, alignToMinMove: boolean): Promise; + numericFormatter(decimalPlaces: number): Promise; + quantityFormatter(decimalPlaces?: number): Promise; + defaultContextMenuActions(context: ITradeContext, params?: DefaultContextMenuActionsParams): Promise; + defaultDropdownMenuActions(options?: Partial): ActionMetaInfo[]; + floatingTradingPanelVisibility(): IWatchedValue; + domPanelVisibility(): IWatchedValue; + orderPanelVisibility(): IWatchedValue; + silentOrdersPlacement(): IWatchedValue; + patchConfig(config: Partial): void; + patchOrderDialogOptions(options: OrderDialogOptions): void; + setDurations(durations: OrderDurationMetaInfo[]): void; + orderUpdate(order: Order, isHistoryUpdate?: boolean): void; + orderPartialUpdate(id: string, orderChanges: Partial): void; + positionUpdate(position: Position, isHistoryUpdate?: boolean): void; + positionPartialUpdate(id: string, positionChanges: Partial): void; + tradeUpdate(trade: Trade, isHistoryUpdate?: boolean): void; + tradePartialUpdate(id: string, tradeChanges: Partial): void; + executionUpdate(execution: Execution, isHistoryUpdate?: boolean): void; + fullUpdate(): void; + realtimeUpdate(symbol: string, data: TradingQuotes): void; + plUpdate(positionId: string, pl: number): void; + pipValueUpdate(symbol: string, pipValues: PipValues): void; + tradePLUpdate(tradeId: string, pl: number): void; + equityUpdate(equity: number): void; + marginAvailableUpdate(marginAvailable: number): void; + domeUpdate(symbol: string, equity: DOMData): void; + showOrderDialog(order: T, handler: (order: T) => Promise, focus?: OrderTicketFocusControl, options?: OrderDialogOptions): Promise; + showCancelOrderDialog(orderId: string, handler: () => Promise): Promise; + showCancelMultipleOrdersDialog(symbol: string, side: Side | undefined, qty: number, handler: () => Promise): Promise; + showCancelBracketsDialog(orderId: string, handler: () => Promise): Promise; + showCancelMultipleBracketsDialog(orderId: string, handler: () => Promise): Promise; + showClosePositionDialog(positionId: string, handler: () => Promise): Promise; + showReversePositionDialog(position: Position, handler: () => Promise): Promise; + showPositionBracketsDialog(position: Position | Trade, brackets: Brackets, focus: OrderTicketFocusControl | null, handler: (brackets: Brackets) => Promise): Promise; + showNotification(title: string, text: string, notificationType?: NotificationType): void; + setButtonDropdownActions(descriptions: ActionMetaInfo[]): void; + activateBottomWidget(): Promise; + showTradingProperties(): void; + suggestedQty(): SuggestedQuantity; + symbolSnapshot(symbol: string): Promise; + showMessageDialog(caption: string, message: string): void; +} +export interface IBrokerTerminal extends IBrokerWithoutRealtime { + subscribeRealtime(symbol: string): void; + unsubscribeRealtime(symbol: string): void; +} +export interface IBrokerWithoutRealtime extends IBrokerCommon { + subscribeDOME?(symbol: string): void; + unsubscribeDOME?(symbol: string): void; + placeOrder(order: PreOrder): Promise; + modifyOrder(order: Order): Promise; + cancelOrder(orderId: string): Promise; + cancelOrders(symbol: string, side: Side | undefined, ordersIds: string[]): Promise; + reversePosition?(positionId: string): Promise; + closePosition?(positionId: string): Promise; + closeTrade?(tradeId: string): Promise; + editPositionBrackets?(positionId: string, brackets?: Brackets): Promise; + editTradeBrackets?(tradeId: string, brackets?: Brackets): Promise; + /** + * @deprecated Brokers should always send PL and equity updates + */ + subscribePL?(positionId: string): void; + subscribeEquity?(): void; + subscribeMarginAvailable?(symbol: string): void; + subscribePipValue?(symbol: string): void; + unsubscribePipValue?(symbol: string): void; + unsubscribeMarginAvailable?(symbol: string): void; + /** + * @deprecated + */ + unsubscribePL?(positionId: string): void; + unsubscribeEquity?(): void; +} +export interface IChartWidgetApi { + onDataLoaded(): ISubscription<() => void>; + onSymbolChanged(): ISubscription<() => void>; + onIntervalChanged(): ISubscription<(interval: ResolutionString, timeFrameParameters: { + timeframe?: string; + }) => void>; + onVisibleRangeChanged(): ISubscription<() => void>; + dataReady(callback: () => void): boolean; + crossHairMoved(callback: (params: CrossHairMovedEventParams) => void): void; + setVisibleRange(range: VisibleTimeRange, options?: SetVisibleRangeOptions): Promise; + setSymbol(symbol: string, callback: () => void): void; + setResolution(resolution: ResolutionString, callback: () => void): void; + resetData(): void; + executeActionById(actionId: ChartActionId): void; + getCheckableActionState(actionId: ChartActionId): boolean; + refreshMarks(): void; + clearMarks(): void; + setChartType(type: SeriesStyle): void; + getAllShapes(): EntityInfo[]; + getAllStudies(): EntityInfo[]; + /** + * @deprecated Use shape/study API instead ([getStudyById] / [getShapeById]) + */ + setEntityVisibility(entityId: EntityId, isVisible: boolean): void; + createStudy(name: string, forceOverlay: boolean, lock?: boolean, inputs?: TStudyInputValue[], overrides?: TOverrides, options?: CreateStudyOptions): Promise; + getStudyById(entityId: EntityId): IStudyApi; + getSeries(): ISeriesApi; + createShape(point: ShapePoint, options: CreateShapeOptions): EntityId | null; + createMultipointShape(points: ShapePoint[], options: CreateShapeOptions): EntityId | null; + getShapeById(entityId: EntityId): ILineDataSourceApi; + removeEntity(entityId: EntityId): void; + removeAllShapes(): void; + removeAllStudies(): void; + selection(): ISelectionApi; + showPropertiesDialog(studyId: EntityId): void; + createStudyTemplate(options: CreateStudyTemplateOptions): object; + applyStudyTemplate(template: object): void; + createOrderLine(options: CreateTradingPrimitiveOptions): IOrderLineAdapter; + createPositionLine(options: CreateTradingPrimitiveOptions): IPositionLineAdapter; + createExecutionShape(options: CreateTradingPrimitiveOptions): IExecutionLineAdapter; + symbol(): string; + symbolExt(): SymbolExt; + resolution(): ResolutionString; + getVisibleRange(): VisibleTimeRange; + /** + * @deprecated Use Price Scale API instead + */ + getVisiblePriceRange(): VisiblePriceRange; + scrollPosition(): number; + defaultScrollPosition(): number; + priceFormatter(): IFormatter; + chartType(): SeriesStyle; + setTimezone(timezone: 'exchange' | Timezone): void; + getTimezone(): 'exchange' | Timezone; + getPanes(): IPaneApi[]; + exportData(options?: ExportDataOptions): Promise; + canZoomOut(): boolean; + zoomOut(): void; + setZoomEnabled(enabled: boolean): void; + setScrollEnabled(enabled: boolean): void; +} +export interface IChartingLibraryWidget { + headerReady(): Promise; + onChartReady(callback: EmptyCallback): void; + onGrayedObjectClicked(callback: (obj: GrayedObject) => void): void; + onShortcut(shortCut: string, callback: EmptyCallback): void; + subscribe(event: EventName, callback: SubscribeEventsMap[EventName]): void; + unsubscribe(event: EventName, callback: SubscribeEventsMap[EventName]): void; + chart(index?: number): IChartWidgetApi; + setLanguage(lang: LanguageCode): void; + setSymbol(symbol: string, interval: ResolutionString, callback: EmptyCallback): void; + remove(): void; + closePopupsAndDialogs(): void; + selectLineTool(linetool: SupportedLineTools): void; + selectedLineTool(): SupportedLineTools; + save(callback: (state: object) => void): void; + load(state: object): void; + getSavedCharts(callback: (chartRecords: SaveLoadChartRecord[]) => void): void; + loadChartFromServer(chartRecord: SaveLoadChartRecord): void; + saveChartToServer(onComplete?: EmptyCallback, onFail?: EmptyCallback, options?: SaveChartToServerOptions): void; + removeChartFromServer(chartId: string, onCompleteCallback: EmptyCallback): void; + onContextMenu(callback: (unixTime: number, price: number) => ContextMenuItem[]): void; + createButton(options?: CreateButtonOptions): HTMLElement; + showNoticeDialog(params: DialogParams<() => void>): void; + showConfirmDialog(params: DialogParams<(confirmed: boolean) => void>): void; + showLoadChartDialog(): void; + showSaveAsChartDialog(): void; + symbolInterval(): SymbolIntervalResult; + mainSeriesPriceFormatter(): IFormatter; + getIntervals(): string[]; + getStudiesList(): string[]; + addCustomCSSFile(url: string): void; + applyOverrides(overrides: TOverrides): void; + applyStudiesOverrides(overrides: object): void; + watchList(): WatchListApi; + activeChart(): IChartWidgetApi; + chartsCount(): number; + layout(): LayoutType; + setLayout(layout: LayoutType): void; + layoutName(): string; + changeTheme(themeName: ThemeName): void; + takeScreenshot(): void; + lockAllDrawingTools(): IWatchedValue; + hideAllDrawingTools(): IWatchedValue; + magnetEnabled(): IWatchedValue; + magnetMode(): IWatchedValue; + undoRedoState(): UndoRedoState; +} +export interface IDatafeedChartApi { + calculateHistoryDepth?(resolution: ResolutionString, resolutionBack: ResolutionBackValues, intervalBack: number): HistoryDepth | undefined; + getMarks?(symbolInfo: LibrarySymbolInfo, from: number, to: number, onDataCallback: GetMarksCallback, resolution: ResolutionString): void; + getTimescaleMarks?(symbolInfo: LibrarySymbolInfo, from: number, to: number, onDataCallback: GetMarksCallback, resolution: ResolutionString): void; + /** + * This function is called if configuration flag supports_time is set to true when chart needs to know the server time. + * The charting library expects callback to be called once. + * The time is provided without milliseconds. Example: 1445324591. It is used to display Countdown on the price scale. + */ + getServerTime?(callback: ServerTimeCallback): void; + searchSymbols(userInput: string, exchange: string, symbolType: string, onResult: SearchSymbolsCallback): void; + resolveSymbol(symbolName: string, onResolve: ResolveCallback, onError: ErrorCallback): void; + getBars(symbolInfo: LibrarySymbolInfo, resolution: ResolutionString, rangeStartDate: number, rangeEndDate: number, onResult: HistoryCallback, onError: ErrorCallback, isFirstCall: boolean): void; + subscribeBars(symbolInfo: LibrarySymbolInfo, resolution: ResolutionString, onTick: SubscribeBarsCallback, listenerGuid: string, onResetCacheNeededCallback: () => void): void; + unsubscribeBars(listenerGuid: string): void; + subscribeDepth?(symbol: string, callback: DomeCallback): string; + unsubscribeDepth?(subscriberUID: string): void; +} +export interface IDatafeedQuotesApi { + getQuotes(symbols: string[], onDataCallback: QuotesCallback, onErrorCallback: (msg: string) => void): void; + subscribeQuotes(symbols: string[], fastSymbols: string[], onRealtimeCallback: QuotesCallback, listenerGUID: string): void; + unsubscribeQuotes(listenerGUID: string): void; +} +export interface IDelegate extends ISubscription { + fire: TFunc; +} +export interface IExecutionLineAdapter { + remove(): void; + getPrice(): number; + setPrice(value: number): this; + getTime(): number; + setTime(value: number): this; + getDirection(): Direction; + setDirection(value: Direction): this; + getText(): string; + setText(value: string): this; + getTooltip(): string; + setTooltip(value: string): this; + getArrowHeight(): number; + setArrowHeight(value: number): this; + getArrowSpacing(): number; + setArrowSpacing(value: number): this; + getFont(): string; + setFont(value: string): this; + getTextColor(): string; + setTextColor(value: string): this; + getArrowColor(): string; + setArrowColor(value: string): this; +} +export interface IExternalDatafeed { + onReady(callback: OnReadyCallback): void; +} +export interface IExternalSaveLoadAdapter { + getAllCharts(): Promise; + removeChart(chartId: string): Promise; + saveChart(chartData: ChartData): Promise; + getChartContent(chartId: string): Promise; + getAllStudyTemplates(): Promise; + removeStudyTemplate(studyTemplateInfo: StudyTemplateMetaInfo): Promise; + saveStudyTemplate(studyTemplateData: StudyTemplateData): Promise; + getStudyTemplateContent(studyTemplateInfo: StudyTemplateMetaInfo): Promise; +} +export interface IFormatter { + format(value: any): string; + parse?(value: string): ErrorFormatterParseResult | SuccessFormatterParseResult; +} +export interface ILineDataSourceApi { + isSelectionEnabled(): boolean; + setSelectionEnabled(enable: boolean): void; + isSavingEnabled(): boolean; + setSavingEnabled(enable: boolean): void; + isShowInObjectsTreeEnabled(): boolean; + setShowInObjectsTreeEnabled(enabled: boolean): void; + isUserEditEnabled(): boolean; + setUserEditEnabled(enabled: boolean): void; + bringToFront(): void; + sendToBack(): void; + getProperties(): object; + setProperties(newProperties: object): void; + getPoints(): PricedPoint[]; + setPoints(points: ShapePoint[]): void; +} +export interface IOrderLineAdapter { + remove(): void; + onModify(callback: () => void): this; + onModify(data: T, callback: (data: T) => void): this; + onMove(callback: () => void): this; + onMove(data: T, callback: (data: T) => void): this; + onCancel(callback: () => void): this; + onCancel(data: T, callback: (data: T) => void): this; + getPrice(): number; + setPrice(value: number): this; + getText(): string; + setText(value: string): this; + getTooltip(): string; + setTooltip(value: string): this; + getModifyTooltip(): string; + setModifyTooltip(value: string): this; + getCancelTooltip(): string; + setCancelTooltip(value: string): this; + getQuantity(): string; + setQuantity(value: string): this; + getEditable(): boolean; + setEditable(value: boolean): this; + getExtendLeft(): boolean; + setExtendLeft(value: boolean): this; + getLineLength(): number; + setLineLength(value: number): this; + getLineStyle(): number; + setLineStyle(value: number): this; + getLineWidth(): number; + setLineWidth(value: number): this; + getBodyFont(): string; + setBodyFont(value: string): this; + getQuantityFont(): string; + setQuantityFont(value: string): this; + getLineColor(): string; + setLineColor(value: string): this; + getBodyBorderColor(): string; + setBodyBorderColor(value: string): this; + getBodyBackgroundColor(): string; + setBodyBackgroundColor(value: string): this; + getBodyTextColor(): string; + setBodyTextColor(value: string): this; + getQuantityBorderColor(): string; + setQuantityBorderColor(value: string): this; + getQuantityBackgroundColor(): string; + setQuantityBackgroundColor(value: string): this; + getQuantityTextColor(): string; + setQuantityTextColor(value: string): this; + getCancelButtonBorderColor(): string; + setCancelButtonBorderColor(value: string): this; + getCancelButtonBackgroundColor(): string; + setCancelButtonBackgroundColor(value: string): this; + getCancelButtonIconColor(): string; + setCancelButtonIconColor(value: string): this; +} +export interface IPaneApi { + hasMainSeries(): boolean; + getLeftPriceScales(): ReadonlyArray; + getRightPriceScales(): ReadonlyArray; + getMainSourcePriceScale(): IPriceScaleApi | null; + getHeight(): number; + setHeight(height: number): void; + moveTo(paneIndex: number): void; + paneIndex(): number; +} +export interface IPositionLineAdapter { + remove(): void; + onClose(callback: () => void): this; + onClose(data: T, callback: (data: T) => void): this; + onModify(callback: () => void): this; + onModify(data: T, callback: (data: T) => void): this; + onReverse(callback: () => void): this; + onReverse(data: T, callback: (data: T) => void): this; + getPrice(): number; + setPrice(value: number): this; + getText(): string; + setText(value: string): this; + getTooltip(): string; + setTooltip(value: string): this; + getProtectTooltip(): string; + setProtectTooltip(value: string): this; + getCloseTooltip(): string; + setCloseTooltip(value: string): this; + getReverseTooltip(): string; + setReverseTooltip(value: string): this; + getQuantity(): string; + setQuantity(value: string): this; + getExtendLeft(): boolean; + setExtendLeft(value: boolean): this; + getLineLength(): number; + setLineLength(value: number): this; + getLineStyle(): number; + setLineStyle(value: number): this; + getLineWidth(): number; + setLineWidth(value: number): this; + getBodyFont(): string; + setBodyFont(value: string): this; + getQuantityFont(): string; + setQuantityFont(value: string): this; + getLineColor(): string; + setLineColor(value: string): this; + getBodyBorderColor(): string; + setBodyBorderColor(value: string): this; + getBodyBackgroundColor(): string; + setBodyBackgroundColor(value: string): this; + getBodyTextColor(): string; + setBodyTextColor(value: string): this; + getQuantityBorderColor(): string; + setQuantityBorderColor(value: string): this; + getQuantityBackgroundColor(): string; + setQuantityBackgroundColor(value: string): this; + getQuantityTextColor(): string; + setQuantityTextColor(value: string): this; + getReverseButtonBorderColor(): string; + setReverseButtonBorderColor(value: string): this; + getReverseButtonBackgroundColor(): string; + setReverseButtonBackgroundColor(value: string): this; + getReverseButtonIconColor(): string; + setReverseButtonIconColor(value: string): this; + getCloseButtonBorderColor(): string; + setCloseButtonBorderColor(value: string): this; + getCloseButtonBackgroundColor(): string; + setCloseButtonBackgroundColor(value: string): this; + getCloseButtonIconColor(): string; + setCloseButtonIconColor(value: string): this; +} +export interface IPriceScaleApi { + getMode(): PriceScaleMode; + setMode(newMode: PriceScaleMode): void; + isInverted(): boolean; + setInverted(isInverted: boolean): void; + getVisiblePriceRange(): VisiblePriceRange | null; + setVisiblePriceRange(range: VisiblePriceRange): void; +} +export interface ISelectionApi { + add(entities: EntityId[]): void; + set(entities: EntityId[]): void; + remove(entities: EntityId[]): void; + contains(entity: EntityId): boolean; + allSources(): EntityId[]; + isEmpty(): boolean; + clear(): void; + onChanged(): ISubscription<() => void>; +} +export interface ISeriesApi { + isUserEditEnabled(): boolean; + setUserEditEnabled(enabled: boolean): void; + mergeUp(): void; + mergeDown(): void; + unmergeUp(): void; + unmergeDown(): void; + detachToRight(): void; + detachToLeft(): void; + detachNoScale(): void; + moveToOtherSourceScale(entityId: EntityId): void; + isVisible(): boolean; + setVisible(visible: boolean): void; + bringToFront(): void; + sendToBack(): void; + entityId(): EntityId; +} +export interface ISettingsAdapter { + initialSettings?: InitialSettingsMap; + setValue(key: string, value: string): void; + removeValue(key: string): void; +} +export interface IStudyApi { + isUserEditEnabled(): boolean; + setUserEditEnabled(enabled: boolean): void; + getInputsInfo(): StudyInputInfo[]; + getInputValues(): StudyInputValueItem[]; + setInputValues(values: StudyInputValueItem[]): void; + mergeUp(): void; + mergeDown(): void; + unmergeUp(): void; + unmergeDown(): void; + changePriceScale(newPriceScale: StudyPriceScale): void; + isVisible(): boolean; + setVisible(visible: boolean): void; + bringToFront(): void; + sendToBack(): void; + applyOverrides(overrides: TOverrides): void; +} +export interface ISubscription { + subscribe(obj: object | null, member: TFunc, singleshot?: boolean): void; + unsubscribe(obj: object | null, member: TFunc): void; + unsubscribeAll(obj: object | null): void; +} +export interface ITradeContext { + symbol: string; + displaySymbol: string; + value: number | null; + formattedValue: string; + last: number; +} +export interface IWatchedValue extends IWatchedValueReadonly { + value(): T; + setValue(value: T, forceUpdate?: boolean): void; + subscribe(callback: WatchedValueCallback, options?: WatchedValueSubscribeOptions): void; + unsubscribe(callback?: WatchedValueCallback | null): void; +} +export interface IWatchedValueReadonly { + value(): T; + subscribe(callback: (value: T) => void, options?: WatchedValueSubscribeOptions): void; + unsubscribe(callback?: ((value: T) => void) | null): void; +} +export interface InitialSettingsMap { + [key: string]: string; +} +export interface InstrumentInfo { + qty: QuantityMetainfo; + pipValue: number; + pipSize: number; + minTick: number; + lotSize?: number; + type?: SymbolType; + brokerSymbol?: string; + description: string; + domVolumePrecision?: number; + leverage?: string; + marginRate?: number; +} +export interface IsTradableResult { + tradable: boolean; + reason?: string; +} +export interface LibrarySymbolInfo { + /** + * Symbol Name + */ + name: string; + full_name: string; + base_name?: [string]; + /** + * Unique symbol id + */ + ticker?: string; + description: string; + type: string; + /** + * @example "1700-0200" + */ + session: string; + /** + * Traded exchange + * @example "NYSE" + */ + exchange: string; + listed_exchange: string; + timezone: Timezone; + /** + * Prices format: "price" or "volume" + */ + format: SeriesFormat; + /** + * Code (Tick) + * @example 8/16/.../256 (1/8/100 1/16/100 ... 1/256/100) or 1/10/.../10000000 (1 0.1 ... 0.0000001) + */ + pricescale: number; + /** + * The number of units that make up one tick. + * @example For example, U.S. equities are quotes in decimals, and tick in decimals, and can go up +/- .01. So the tick increment is 1. But the e-mini S&P futures contract, though quoted in decimals, goes up in .25 increments, so the tick increment is 25. (see also Tick Size) + */ + minmov: number; + fractional?: boolean; + /** + * @example Quarters of 1/32: pricescale=128, minmovement=1, minmovement2=4 + */ + minmove2?: number; + /** + * false if DWM only + */ + has_intraday?: boolean; + /** + * An array of resolutions which should be enabled in resolutions picker for this symbol. + */ + supported_resolutions: ResolutionString[]; + /** + * @example (for ex.: "1,5,60") - only these resolutions will be requested, all others will be built using them if possible + */ + intraday_multipliers?: string[]; + has_seconds?: boolean; + /** + * It is an array containing seconds resolutions (in seconds without a postfix) the datafeed builds by itself. + */ + seconds_multipliers?: string[]; + has_daily?: boolean; + has_weekly_and_monthly?: boolean; + has_empty_bars?: boolean; + force_session_rebuild?: boolean; + has_no_volume?: boolean; + /** + * Integer showing typical volume value decimal places for this symbol + */ + volume_precision?: number; + data_status?: 'streaming' | 'endofday' | 'pulsed' | 'delayed_streaming'; + /** + * Boolean showing whether this symbol is expired futures contract or not. + */ + expired?: boolean; + /** + * Unix timestamp of expiration date. + */ + expiration_date?: number; + sector?: string; + industry?: string; + currency_code?: string; +} +export interface LoadingScreenOptions { + foregroundColor?: string; + backgroundColor?: string; +} +export interface Mark { + id: string | number; + time: number; + color: MarkConstColors | MarkCustomColor; + text: string; + label: string; + labelFontColor: string; + minSize: number; +} +export interface MarkCustomColor { + color: string; + background: string; +} +export interface MenuSeparator extends ActionDescription { + separator: boolean; +} +export interface MouseEventParams { + clientX: number; + clientY: number; + pageX: number; + pageY: number; + screenX: number; + screenY: number; +} +export interface NegativeBaseInputFieldValidatorResult extends BaseInputFieldValidatorResult { + valid: false; + errorMessage: string; +} +export interface NewsItem { + fullDescription: string; + link?: string; + published: number; + shortDescription?: string; + source: string; + title: string; +} +export interface NewsProvider { + is_news_generic?: boolean; + get_news(symbol: string, callback: (items: NewsItem[]) => void): void; +} +export interface NumericFormattingParams { + decimal_sign: string; +} +export interface OrderDialogOptions { + customFields?: OrderDialogCustomField[]; +} +export interface OrderDuration { + /** + * type is OrderDurationMetaInfo.value + */ + type: string; + datetime?: number; +} +export interface OrderDurationMetaInfo { + hasDatePicker?: boolean; + hasTimePicker?: boolean; + default?: boolean; + name: string; + value: string; +} +export interface OrderTableColumn extends AccountManagerColumn { + supportedStatusFilters?: OrderStatusFilter[]; +} +export interface OrderWithParent extends PlacedOrder { + parentId: string; + parentType: ParentType; +} +export interface Overrides { + [key: string]: string | number | boolean; +} +export interface PipValues { + buyPipValue: number; + sellPipValue: number; +} +export interface PlacedOrder extends PreOrder, CustomFields { + id: string; + filledQty?: number; + avgPrice?: number; + updateTime?: number; /** unix timestamp in milliseconds */ + takeProfit?: number; + stopLoss?: number; + type: OrderType; + side: Side; + status: OrderStatus; +} +export interface Position { + id: string; + symbol: string; + brokerSymbol?: string; + qty: number; + side: Side; + avgPrice: number; + [key: string]: any; +} +export interface PositiveBaseInputFieldValidatorResult extends BaseInputFieldValidatorResult { + valid: true; +} +export interface PreOrder { + symbol: string; + brokerSymbol?: string; + type?: OrderType; + side?: Side; + qty: number; + status?: OrderStatus; + stopPrice?: number; + limitPrice?: number; + stopLoss?: number; + takeProfit?: number; + duration?: OrderDuration; + customFields?: CustomInputFieldsValues; +} +export interface PricedPoint extends TimePoint { + price: number; +} +export interface QuantityMetainfo { + min: number; + max: number; + step: number; + default?: number; +} +export interface QuoteErrorData { + s: 'error'; + n: string; + v: object; +} +export interface QuoteOkData { + s: 'ok'; + n: string; + v: DatafeedQuoteValues; +} +export interface QuotesBase { + change: number; + change_percent: number; + last_price: number; + fractional: boolean; + minmov: number; + minmove2: number; + pricescale: number; + description: string; +} +export interface RestBrokerMetaInfo { + url: string; + access_token: string; +} +export interface RssNewsFeedInfo { + url: string; + name: string; +} +export interface RssNewsFeedParams { + default: RssNewsFeedItem; + [symbolType: string]: RssNewsFeedItem; +} +export interface SaveChartToServerOptions { + chartName?: string; + defaultChartName?: string; +} +export interface SaveLoadChartRecord { + id: string; + name: string; + image_url: string; + modified_iso: number; + short_symbol: string; + interval: ResolutionString; +} +export interface SearchSymbolResultItem { + symbol: string; + full_name: string; + description: string; + exchange: string; + ticker: string; + type: string; +} +export interface SeriesFieldDescriptor { + type: 'value'; + sourceType: 'series'; + plotTitle: string; +} +export interface SetVisibleRangeOptions { + applyDefaultRightMargin?: boolean; + percentRightMargin?: number; +} +export interface SingleBrokerMetaInfo { + configFlags: BrokerConfigFlags; + customNotificationFields?: string[]; + durations?: OrderDurationMetaInfo[]; + orderDialogOptions?: OrderDialogOptions; + customUI?: BrokerCustomUI; +} +export interface SortingParameters { + columnId: string; + asc?: boolean; +} +export interface StickedPoint extends TimePoint { + channel: 'open' | 'high' | 'low' | 'close'; +} +export interface StudyFieldDescriptor { + type: 'value'; + sourceType: 'study'; + sourceId: string; + sourceTitle: string; + plotTitle: string; +} +export interface StudyInputInfo { + id: StudyInputId; + name: string; + type: string; + localizedName: string; +} +export interface StudyInputValueItem { + id: StudyInputId; + value: StudyInputValue; +} +export interface StudyOrDrawingAddedToChartEventParams { + value: string; +} +export interface StudyOverrides { + [key: string]: StudyOverrideValueType; +} +export interface StudyTemplateData { + name: string; + content: string; +} +export interface StudyTemplateMetaInfo { + name: string; +} +export interface SubscribeEventsMap { + toggle_sidebar: (isHidden: boolean) => void; + indicators_dialog: EmptyCallback; + toggle_header: (isHidden: boolean) => void; + edit_object_dialog: (params: EditObjectDialogEventParams) => void; + chart_load_requested: (savedData: object) => void; + chart_loaded: EmptyCallback; + mouse_down: (params: MouseEventParams) => void; + mouse_up: (params: MouseEventParams) => void; + drawing: (params: StudyOrDrawingAddedToChartEventParams) => void; + study: (params: StudyOrDrawingAddedToChartEventParams) => void; + undo: EmptyCallback; + redo: EmptyCallback; + undoRedoStackChanged: (state: UndoRedoState) => void; + reset_scales: EmptyCallback; + compare_add: EmptyCallback; + add_compare: EmptyCallback; + 'load_study template': EmptyCallback; + onTick: (tick: Bar) => void; + onAutoSaveNeeded: EmptyCallback; + onScreenshotReady: (url: string) => void; + onMarkClick: (markId: Mark['id']) => void; + onTimescaleMarkClick: (markId: TimescaleMark['id']) => void; + onSelectedLineToolChanged: EmptyCallback; + layout_about_to_be_changed: (newLayoutType: LayoutType) => void; + layout_changed: EmptyCallback; + activeChartChanged: (chartIndex: number) => void; + drawing_event: (soursceId: string, drawingEventType: DrawingEventType) => void; +} +export interface SuccessFormatterParseResult extends FormatterParseResult { + res: true; + suggest?: string; +} +export interface SuggestedQuantity { + changed: IDelegate<(symbol: string) => void>; + value(symbol: string): Promise; + setValue(symbol: string, value: number): void; +} +export interface SymbolExt { + symbol: string; + full_name: string; + exchange: string; + description: string; + type: string; +} +export interface SymbolIntervalResult { + symbol: string; + interval: ResolutionString; +} +export interface TableElementFormatter { + name: string; + format: TableElementFormatFunction; +} +export interface TableFormatterInputs { + value: number | string | Side | OrderType | OrderStatus; + prevValue?: number | undefined; + row: TableRow; + $container: JQuery; + priceFormatter?: IFormatter; +} +export interface TableRow { + priceFormatter?: IFormatter; + [name: string]: any; +} +export interface TextWithCheckboxFieldCustomInfo { + checkboxTitle: string; + asterix?: boolean; +} +export interface TextWithCheckboxFieldMetaInfo extends CustomInputFieldMetaInfo { + inputType: 'TextWithCheckBox'; + value: TextWithCheckboxValue; + customInfo: TextWithCheckboxFieldCustomInfo; + validator?: TextInputFieldValidator; +} +export interface TextWithCheckboxValue { + text: string; + checked: boolean; +} +export interface TimeFieldDescriptor { + type: 'time'; +} +export interface TimeFrameItem { + text: string; + resolution: ResolutionString; + description?: string; + title?: string; +} +export interface TimePoint { + time: number; +} +export interface TimescaleMark { + id: string | number; + time: number; + color: MarkConstColors | string; + label: string; + tooltip: string[]; +} +export interface Trade extends CustomFields { + id: string; + date: number; + symbol: string; + brokerSymbol?: string; + qty: number; + side: Side; + price: number; +} +export interface TradingCustomization { + position: Overrides; + order: Overrides; +} +export interface TradingQuotes { + trade?: number; + size?: number; + bid?: number; + bid_size?: number; + ask?: number; + ask_size?: number; + spread?: number; +} +export interface TradingTerminalWidgetOptions extends ChartingLibraryWidgetOptions { + brokerConfig?: SingleBrokerMetaInfo; + restConfig?: RestBrokerMetaInfo; + widgetbar?: WidgetBarParams; + rss_news_feed?: RssNewsFeedParams; + news_provider?: NewsProvider; + trading_customization?: TradingCustomization; + brokerFactory?(host: IBrokerConnectionAdapterHost): IBrokerWithoutRealtime | IBrokerTerminal; +} +export interface UndoRedoState { + enableUndo: boolean; + undoText: string | undefined; + enableRedo: boolean; + redoText: string | undefined; +} +export interface VisiblePriceRange { + from: number; + to: number; +} +export interface VisibleTimeRange { + from: number; + to: number; +} +export interface WatchListApi { + defaultList(): string[]; + getList(id?: string): string[] | null; + getAllLists(): WatchListSymbolListMap | null; + getActiveListId(): string | null; + setList(symbols: string[]): void; + updateList(listId: string, symbols: string[]): void; + renameList(listId: string, newName: string): void; + createList(listName?: string, symbols?: string[]): WatchListSymbolList | null; + saveList(list: WatchListSymbolList): boolean; + deleteList(listId: string): void; + onListChanged(): ISubscription; + onActiveListChanged(): ISubscription; + onListAdded(): ISubscription; + onListRemoved(): ISubscription; + onListRenamed(): ISubscription; +} +export interface WatchListSymbolList extends WatchListSymbolListData { + id: string; +} +export interface WatchListSymbolListData { + symbols: string[]; + title: string; +} +export interface WatchListSymbolListMap { + [listId: string]: WatchListSymbolList; +} +export interface WatchedValueSubscribeOptions { + once?: boolean; + callWithLast?: boolean; +} +export interface WidgetBarParams { + details?: boolean; + watchlist?: boolean; + news?: boolean; + watchlist_settings?: { + default_symbols: string[]; + readonly?: boolean; + }; +} +export type CustomTimezones = 'Africa/Cairo' | 'Africa/Johannesburg' | 'Africa/Lagos' | 'America/Argentina/Buenos_Aires' | 'America/Bogota' | 'America/Caracas' | 'America/Chicago' | 'America/El_Salvador' | 'America/Juneau' | 'America/Lima' | 'America/Los_Angeles' | 'America/Mexico_City' | 'America/New_York' | 'America/Phoenix' | 'America/Santiago' | 'America/Sao_Paulo' | 'America/Toronto' | 'America/Vancouver' | 'Asia/Almaty' | 'Asia/Ashkhabad' | 'Asia/Bahrain' | 'Asia/Bangkok' | 'Asia/Chongqing' | 'Asia/Dubai' | 'Asia/Ho_Chi_Minh' | 'Asia/Hong_Kong' | 'Asia/Jakarta' | 'Asia/Jerusalem' | 'Asia/Kathmandu' | 'Asia/Kolkata' | 'Asia/Kuwait' | 'Asia/Muscat' | 'Asia/Qatar' | 'Asia/Riyadh' | 'Asia/Seoul' | 'Asia/Shanghai' | 'Asia/Singapore' | 'Asia/Taipei' | 'Asia/Tehran' | 'Asia/Tokyo' | 'Atlantic/Reykjavik' | 'Australia/ACT' | 'Australia/Adelaide' | 'Australia/Brisbane' | 'Australia/Perth' | 'Australia/Sydney' | 'Europe/Athens' | 'Europe/Belgrade' | 'Europe/Berlin' | 'Europe/Copenhagen' | 'Europe/Helsinki' | 'Europe/Istanbul' | 'Europe/London' | 'Europe/Luxembourg' | 'Europe/Madrid' | 'Europe/Moscow' | 'Europe/Oslo' | 'Europe/Paris' | 'Europe/Riga' | 'Europe/Rome' | 'Europe/Stockholm' | 'Europe/Tallinn' | 'Europe/Vilnius' | 'Europe/Warsaw' | 'Europe/Zurich' | 'Pacific/Auckland' | 'Pacific/Chatham' | 'Pacific/Fakaofo' | 'Pacific/Honolulu' | 'Pacific/Norfolk' | 'US/Mountain'; + +export as namespace TradingView; diff --git a/public/charting_library/charting_library.min.js b/public/charting_library/charting_library.min.js new file mode 100644 index 0000000..00b993f --- /dev/null +++ b/public/charting_library/charting_library.min.js @@ -0,0 +1 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e(t.TradingView={})}(this,function(t){"use strict";var e=Object.assign||function(t){for(var e,o=1,i=arguments.length;o'},t}();window.TradingView=window.TradingView||{},window.TradingView.version=s,t.version=s,t.widget=r,Object.defineProperty(t,"__esModule",{value:!0})}); diff --git a/public/charting_library/datafeed-api.d.ts b/public/charting_library/datafeed-api.d.ts new file mode 100644 index 0000000..1f243cf --- /dev/null +++ b/public/charting_library/datafeed-api.d.ts @@ -0,0 +1,225 @@ +export declare type DomeCallback = (data: DOMData) => void; +export declare type ErrorCallback = (reason: string) => void; +export declare type GetMarksCallback = (marks: T[]) => void; +export declare type HistoryCallback = (bars: Bar[], meta: HistoryMetadata) => void; +export declare type MarkConstColors = 'red' | 'green' | 'blue' | 'yellow'; +export declare type OnReadyCallback = (configuration: DatafeedConfiguration) => void; +export declare type QuoteData = QuoteOkData | QuoteErrorData; +export declare type QuotesCallback = (data: QuoteData[]) => void; +export declare type ResolutionBackValues = 'D' | 'M'; +export declare type ResolutionString = string; +export declare type ResolveCallback = (symbolInfo: LibrarySymbolInfo) => void; +export declare type SearchSymbolsCallback = (items: SearchSymbolResultItem[]) => void; +export declare type SeriesFormat = 'price' | 'volume'; +export declare type ServerTimeCallback = (serverTime: number) => void; +export declare type SubscribeBarsCallback = (bar: Bar) => void; +export declare type Timezone = 'Etc/UTC' | CustomTimezones; +export interface Bar { + time: number; + open: number; + high: number; + low: number; + close: number; + volume?: number; +} +export interface DOMData { + snapshot: boolean; + asks: DOMLevel[]; + bids: DOMLevel[]; +} +export interface DOMLevel { + price: number; + volume: number; +} +export interface DatafeedConfiguration { + exchanges?: Exchange[]; + supported_resolutions?: ResolutionString[]; + supports_marks?: boolean; + supports_time?: boolean; + supports_timescale_marks?: boolean; + symbols_types?: DatafeedSymbolType[]; +} +export interface DatafeedQuoteValues { + ch?: number; + chp?: number; + short_name?: string; + exchange?: string; + description?: string; + lp?: number; + ask?: number; + bid?: number; + spread?: number; + open_price?: number; + high_price?: number; + low_price?: number; + prev_close_price?: number; + volume?: number; + original_name?: string; + [valueName: string]: string | number | undefined; +} +export interface DatafeedSymbolType { + name: string; + value: string; +} +export interface Exchange { + value: string; + name: string; + desc: string; +} +export interface HistoryDepth { + resolutionBack: ResolutionBackValues; + intervalBack: number; +} +export interface HistoryMetadata { + noData: boolean; + nextTime?: number | null; +} +export interface IDatafeedChartApi { + calculateHistoryDepth?(resolution: ResolutionString, resolutionBack: ResolutionBackValues, intervalBack: number): HistoryDepth | undefined; + getMarks?(symbolInfo: LibrarySymbolInfo, from: number, to: number, onDataCallback: GetMarksCallback, resolution: ResolutionString): void; + getTimescaleMarks?(symbolInfo: LibrarySymbolInfo, from: number, to: number, onDataCallback: GetMarksCallback, resolution: ResolutionString): void; + /** + * This function is called if configuration flag supports_time is set to true when chart needs to know the server time. + * The charting library expects callback to be called once. + * The time is provided without milliseconds. Example: 1445324591. It is used to display Countdown on the price scale. + */ + getServerTime?(callback: ServerTimeCallback): void; + searchSymbols(userInput: string, exchange: string, symbolType: string, onResult: SearchSymbolsCallback): void; + resolveSymbol(symbolName: string, onResolve: ResolveCallback, onError: ErrorCallback): void; + getBars(symbolInfo: LibrarySymbolInfo, resolution: ResolutionString, rangeStartDate: number, rangeEndDate: number, onResult: HistoryCallback, onError: ErrorCallback, isFirstCall: boolean): void; + subscribeBars(symbolInfo: LibrarySymbolInfo, resolution: ResolutionString, onTick: SubscribeBarsCallback, listenerGuid: string, onResetCacheNeededCallback: () => void): void; + unsubscribeBars(listenerGuid: string): void; + subscribeDepth?(symbol: string, callback: DomeCallback): string; + unsubscribeDepth?(subscriberUID: string): void; +} +export interface IDatafeedQuotesApi { + getQuotes(symbols: string[], onDataCallback: QuotesCallback, onErrorCallback: (msg: string) => void): void; + subscribeQuotes(symbols: string[], fastSymbols: string[], onRealtimeCallback: QuotesCallback, listenerGUID: string): void; + unsubscribeQuotes(listenerGUID: string): void; +} +export interface IExternalDatafeed { + onReady(callback: OnReadyCallback): void; +} +export interface LibrarySymbolInfo { + /** + * Symbol Name + */ + name: string; + full_name: string; + base_name?: [string]; + /** + * Unique symbol id + */ + ticker?: string; + description: string; + type: string; + /** + * @example "1700-0200" + */ + session: string; + /** + * Traded exchange + * @example "NYSE" + */ + exchange: string; + listed_exchange: string; + timezone: Timezone; + /** + * Prices format: "price" or "volume" + */ + format: SeriesFormat; + /** + * Code (Tick) + * @example 8/16/.../256 (1/8/100 1/16/100 ... 1/256/100) or 1/10/.../10000000 (1 0.1 ... 0.0000001) + */ + pricescale: number; + /** + * The number of units that make up one tick. + * @example For example, U.S. equities are quotes in decimals, and tick in decimals, and can go up +/- .01. So the tick increment is 1. But the e-mini S&P futures contract, though quoted in decimals, goes up in .25 increments, so the tick increment is 25. (see also Tick Size) + */ + minmov: number; + fractional?: boolean; + /** + * @example Quarters of 1/32: pricescale=128, minmovement=1, minmovement2=4 + */ + minmove2?: number; + /** + * false if DWM only + */ + has_intraday?: boolean; + /** + * An array of resolutions which should be enabled in resolutions picker for this symbol. + */ + supported_resolutions: ResolutionString[]; + /** + * @example (for ex.: "1,5,60") - only these resolutions will be requested, all others will be built using them if possible + */ + intraday_multipliers?: string[]; + has_seconds?: boolean; + /** + * It is an array containing seconds resolutions (in seconds without a postfix) the datafeed builds by itself. + */ + seconds_multipliers?: string[]; + has_daily?: boolean; + has_weekly_and_monthly?: boolean; + has_empty_bars?: boolean; + force_session_rebuild?: boolean; + has_no_volume?: boolean; + /** + * Integer showing typical volume value decimal places for this symbol + */ + volume_precision?: number; + data_status?: 'streaming' | 'endofday' | 'pulsed' | 'delayed_streaming'; + /** + * Boolean showing whether this symbol is expired futures contract or not. + */ + expired?: boolean; + /** + * Unix timestamp of expiration date. + */ + expiration_date?: number; + sector?: string; + industry?: string; + currency_code?: string; +} +export interface Mark { + id: string | number; + time: number; + color: MarkConstColors | MarkCustomColor; + text: string; + label: string; + labelFontColor: string; + minSize: number; +} +export interface MarkCustomColor { + color: string; + background: string; +} +export interface QuoteErrorData { + s: 'error'; + n: string; + v: object; +} +export interface QuoteOkData { + s: 'ok'; + n: string; + v: DatafeedQuoteValues; +} +export interface SearchSymbolResultItem { + symbol: string; + full_name: string; + description: string; + exchange: string; + ticker: string; + type: string; +} +export interface TimescaleMark { + id: string | number; + time: number; + color: MarkConstColors | string; + label: string; + tooltip: string[]; +} +export type CustomTimezones = 'Africa/Cairo' | 'Africa/Johannesburg' | 'Africa/Lagos' | 'America/Argentina/Buenos_Aires' | 'America/Bogota' | 'America/Caracas' | 'America/Chicago' | 'America/El_Salvador' | 'America/Juneau' | 'America/Lima' | 'America/Los_Angeles' | 'America/Mexico_City' | 'America/New_York' | 'America/Phoenix' | 'America/Santiago' | 'America/Sao_Paulo' | 'America/Toronto' | 'America/Vancouver' | 'Asia/Almaty' | 'Asia/Ashkhabad' | 'Asia/Bahrain' | 'Asia/Bangkok' | 'Asia/Chongqing' | 'Asia/Dubai' | 'Asia/Ho_Chi_Minh' | 'Asia/Hong_Kong' | 'Asia/Jakarta' | 'Asia/Jerusalem' | 'Asia/Kathmandu' | 'Asia/Kolkata' | 'Asia/Kuwait' | 'Asia/Muscat' | 'Asia/Qatar' | 'Asia/Riyadh' | 'Asia/Seoul' | 'Asia/Shanghai' | 'Asia/Singapore' | 'Asia/Taipei' | 'Asia/Tehran' | 'Asia/Tokyo' | 'Atlantic/Reykjavik' | 'Australia/ACT' | 'Australia/Adelaide' | 'Australia/Brisbane' | 'Australia/Perth' | 'Australia/Sydney' | 'Europe/Athens' | 'Europe/Belgrade' | 'Europe/Berlin' | 'Europe/Copenhagen' | 'Europe/Helsinki' | 'Europe/Istanbul' | 'Europe/London' | 'Europe/Luxembourg' | 'Europe/Madrid' | 'Europe/Moscow' | 'Europe/Oslo' | 'Europe/Paris' | 'Europe/Riga' | 'Europe/Rome' | 'Europe/Stockholm' | 'Europe/Tallinn' | 'Europe/Vilnius' | 'Europe/Warsaw' | 'Europe/Zurich' | 'Pacific/Auckland' | 'Pacific/Chatham' | 'Pacific/Fakaofo' | 'Pacific/Honolulu' | 'Pacific/Norfolk' | 'US/Mountain'; + +export as namespace TradingView; diff --git a/public/charting_library/static/ar-tv-chart.8562c7b8f7bdb50c1f5d.html b/public/charting_library/static/ar-tv-chart.8562c7b8f7bdb50c1f5d.html new file mode 100644 index 0000000..ac34e97 --- /dev/null +++ b/public/charting_library/static/ar-tv-chart.8562c7b8f7bdb50c1f5d.html @@ -0,0 +1,111 @@ + + + + + + + + + + + + + +
+ + + + + + + + + + \ No newline at end of file diff --git a/public/charting_library/static/bundles/0.1d4cbcaddbec7d8c5363.js b/public/charting_library/static/bundles/0.1d4cbcaddbec7d8c5363.js new file mode 100644 index 0000000..0e01f42 --- /dev/null +++ b/public/charting_library/static/bundles/0.1d4cbcaddbec7d8c5363.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[0],{"29gu":function(e,t,o){"use strict";var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},s=o("uOxu").getLogger("CommonUI.CreateTVBlockPlugin");e.exports.createTvBlockPlugin=function(e){if(e)return function(t,o,n){function s(t,o){return o?e[t](l,o):e[t](l)}var a,l=$(this);return"get"===t?"function"==typeof e[a=o]?s(a,n):e[a]:e[t]?l.each(function(){return s(t,void 0)}):l}},e.exports.createTvBlockWithInstance=function(e,t){function o(e,t,o){return void 0===o?e[t]():e[t](o)}if(e&&t)return e=e.toString(),function(a,l,i){var c,r,d;return"get"===a?c=l:(r=l,"object"===(void 0===a?"undefined":n(a))&&void 0===l?(r=a,a="init"):"string"!=typeof a&&(a="init")),"getInstance"===a?$(this).eq(0).data(e):"destroy"===a?(d=$(this).eq(0).data(e))?void("function"==typeof d.destroy?(o(d,"destroy",r),$(this).eq(0).removeData(e)):s.logError("[Block Plugin] "+e+" does not support destroy command")):void console.warn("[Block Plugin] Trying to execute destroy method of "+e+" but it has not been inited"):"get"===a?(d=$(this).eq(0).data(e))?"function"==typeof d[c]?o(d,c,i):d[c]:void console.warn("[Block Plugin] Trying to get prop or execute method of "+e+" but it has not been inited"):$(this).each(function(){var n=$(this),l=n.data(e);void 0===l&&(l=void 0===r?t(n):t(n,r),n.data(e,l)),"init"!==a&&("function"==typeof l[a]?o(l,a,r):s.logError("[Block Plugin] "+e+" does not support command "+a))})}}},QwKQ:function(e,t,o){"use strict";(function(n){var s,a,l,i,c,r;Object.defineProperty(t,"__esModule",{value:!0}),s=function(){function e(e,t){var o,n;for(o=0;o{{#labelLeft}}{{labelLeft}}{{/labelLeft}}{{> inputWrapper }}{{#labelRight}}{{labelRight}}{{/labelRight}}{{/hasLabel}}{{^hasLabel}}{{> inputWrapper }}{{/hasLabel}}',inputWrapper:'<{{ tag }} class="{{ customClass }}{{#disabled}} i-disabled{{/disabled}}">{{^hasCheckbox}}{{> checkbox }}{{/hasCheckbox}}{{> box }}{{> ripple }}',checkbox:'',checkboxClass:"{{ customClass }}__input",box:''+o("aLUT")+"",ripple:''},c="i-inited",r=function(){function e(t){ +var o,n=t.customClass,s=void 0===n?"tv-control-checkbox":n,a=t.$checkbox,i=t.tag,r=t.id,d=t.name,u=t.checked,b=t.disabled,h=t.labelLeft,p=t.labelRight,f=t.labelAddClass,k=t.boxAddClass;if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.$el=null,void 0===i&&(i=h||p?"span":"label"),o=a instanceof $&&!!a.length){if(!a.is("input[type=checkbox]"))return void l.logError("`$checkbox` need to be input[type=checkbox]");if(a.hasClass(c))return;this._setInputId(a,r),this._setInputClass(a,s),this._setInputName(a,d),this._setInputChecked(a,u),this._setInputDisabled(a,b),u=!!a.prop("checked"),b=!!a.attr("disabled")}this.$el=this.render({$checkbox:a,hasCheckbox:o,customClass:s,tag:i,id:r,name:d,checked:u,disabled:b,labelLeft:h,labelRight:p,hasLabel:h||p,labelAddClass:f,boxAddClass:k}),this.$checkbox=o?a:this.$el.find("input[type=checkbox]")}return s(e,[{key:"_setInputId",value:function(e,t){void 0!==t&&e.attr("id",t)}},{key:"_setInputClass",value:function(e,t){var o=n.render(i.checkboxClass,{customClass:t});e.addClass(o)}},{key:"_setInputName",value:function(e,t){void 0!==t&&e.attr("name",t)}},{key:"_setInputChecked",value:function(e,t){void 0!==t&&e.prop("checked",!!t)}},{key:"_setInputDisabled",value:function(e,t){void 0!==t&&(t?e.setAttribute("disabled","disabled"):e.removeAttr("disabled"))}},{key:"render",value:function(e){var t=e.$checkbox,o=$(n.render(i.labelWrapper,e,i));return e.hasCheckbox&&(o.insertBefore(t),o.find("."+e.customClass).andSelf().filter("."+e.customClass).eq(0).prepend(t.detach()),t.addClass(c)),o}},{key:"checked",set:function(e){this._setInputChecked(this.$checkbox,!!e)},get:function(){return!!this.$checkbox.prop("checked")}}]),e}(),$.fn.tvControlCheckbox=(0,a.createTvBlockWithInstance)("tv-control-checkbox",function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new r(TradingView.mergeObj(t,{$checkbox:e}))}),t.default=r,e.exports=t.default}).call(this,o("OiQe"))},aLUT:function(e,t){e.exports=''},"b6p+":function(e,t,o){}}]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/1.2fa13f88d2bf6ae6f3f0.css b/public/charting_library/static/bundles/1.2fa13f88d2bf6ae6f3f0.css new file mode 100644 index 0000000..53ae2e3 --- /dev/null +++ b/public/charting_library/static/bundles/1.2fa13f88d2bf6ae6f3f0.css @@ -0,0 +1 @@ +.tv-control-checkbox{cursor:pointer;-webkit-tap-highlight-color:transparent}.tv-control-checkbox--in-actions{max-width:50%}@media screen and (max-width:479px){.tv-control-checkbox--in-actions{max-width:none}}.tv-control-checkbox,.tv-control-checkbox__label{position:relative;display:inline-block;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tv-control-checkbox--nowrap,.tv-control-checkbox__label--nowrap{white-space:nowrap}.tv-control-checkbox__input{position:absolute;top:0;left:0;width:18px;height:18px;opacity:0}.tv-control-checkbox__box{display:block;width:18px;height:18px;line-height:1;border-radius:2px;box-sizing:border-box;pointer-events:none;transition:background-color .35s ease}.tv-control-checkbox__box:before{top:50%;left:50%;margin-top:-9px;margin-left:-9px;border-radius:2px;background-color:transparent;transform:scale(1);transition:transform .35s ease,background-color .35s ease,border-radius .35s ease}.tv-control-checkbox__box:after,.tv-control-checkbox__box:before{content:"";display:block;position:absolute;width:18px;height:18px}.tv-control-checkbox__box:after{top:0;left:0;border:2px solid #758696;border-radius:2px;box-sizing:border-box;transition:border-color .35s ease}.tv-control-checkbox__box svg{display:block;position:absolute;top:50%;left:50%;margin-top:-6px;margin-left:-6px;width:12px;height:12px;stroke:transparent;transform:scale(0);transition:stroke .35s ease 1ms,transform .35s ease 1ms}.tv-control-checkbox__label{white-space:normal;margin-right:10px}.tv-control-checkbox__label--two-lines{width:155px}.tv-control-checkbox__label--nowrap{white-space:nowrap}.tv-control-checkbox__label--lil-line-height{line-height:16px;min-width:50%;max-width:80%}.tv-control-checkbox__label+.tv-control-checkbox{margin-left:0}.tv-control-checkbox+.tv-control-checkbox__label{margin-right:0;margin-left:10px;max-width:calc(100% - 1ex - 28px)}.tv-control-checkbox:active .tv-control-checkbox__box,.tv-control-checkbox__input:focus+.tv-control-checkbox__box{will-change:background-color}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-control-checkbox:hover .tv-control-checkbox__box{will-change:background-color}}.tv-control-checkbox:active .tv-control-checkbox__box:before,.tv-control-checkbox__input:focus+.tv-control-checkbox__box:before{will-change:transform,border-radius}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-control-checkbox:hover .tv-control-checkbox__box:before{will-change:transform,border-radius}}.tv-control-checkbox:active .tv-control-checkbox__box:after,.tv-control-checkbox__input:focus+.tv-control-checkbox__box:after{will-change:border-color}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-control-checkbox:hover .tv-control-checkbox__box:after{will-change:border-color;border-color:#627384}}.tv-control-checkbox:active .tv-control-checkbox__box:after,.tv-control-checkbox__input:focus+.tv-control-checkbox__box:after{border-color:#2196f3}.tv-control-checkbox__input:checked+.tv-control-checkbox__box{background-color:#2196f3}.tv-control-checkbox__input:checked+.tv-control-checkbox__box,.tv-control-checkbox__input:checked+.tv-control-checkbox__box:after,.tv-control-checkbox__input:checked+.tv-control-checkbox__box:before{transition-timing-function:cubic-bezier(.215,.61,.355,1)}.tv-control-checkbox__input:checked+.tv-control-checkbox__box:before{border-radius:50%;transform:scale(0)}.tv-control-checkbox__input:checked+.tv-control-checkbox__box:after{border-color:#2196f3}.tv-control-checkbox__input:checked+.tv-control-checkbox__box svg{stroke:#fff;transform:scale(1);transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-delay:.0875s;will-change:stroke,transform}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-control-checkbox:hover .tv-control-checkbox__input:checked+.tv-control-checkbox__box{background-color:#1e88e5}}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-control-checkbox:hover .tv-control-checkbox__input:checked+.tv-control-checkbox__box:after{border-color:#1e88e5}}.tv-control-checkbox:active .tv-control-checkbox__input:checked+.tv-control-checkbox__box,.tv-control-checkbox__input:focus:checked+.tv-control-checkbox__box{background-color:#049ddc}.tv-control-checkbox:active .tv-control-checkbox__input:checked+.tv-control-checkbox__box:after,.tv-control-checkbox__input:focus:checked+.tv-control-checkbox__box:after{border-color:#049ddc}.tv-control-checkbox:active .tv-control-checkbox__input[disabled]+.tv-control-checkbox__box:after,.tv-control-checkbox:active .tv-control-checkbox__input[disabled]:checked+.tv-control-checkbox__box:after,.tv-control-checkbox__input[disabled]+.tv-control-checkbox__box:after,.tv-control-checkbox__input[disabled]:checked+.tv-control-checkbox__box:after{border-color:#dadde0}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-control-checkbox:hover .tv-control-checkbox__input[disabled]+.tv-control-checkbox__box:after,.tv-control-checkbox:hover .tv-control-checkbox__input[disabled]:checked+.tv-control-checkbox__box:after{border-color:#dadde0}}html.theme-dark .tv-control-checkbox:active .tv-control-checkbox__input[disabled]+.tv-control-checkbox__box:after,html.theme-dark .tv-control-checkbox:active .tv-control-checkbox__input[disabled]:checked+.tv-control-checkbox__box:after,html.theme-dark .tv-control-checkbox__input[disabled]+.tv-control-checkbox__box:after,html.theme-dark .tv-control-checkbox__input[disabled]:checked+.tv-control-checkbox__box:after{border-color:#363c4e}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .tv-control-checkbox:hover .tv-control-checkbox__input[disabled]+.tv-control-checkbox__box:after,html.theme-dark .tv-control-checkbox:hover .tv-control-checkbox__input[disabled]:checked+.tv-control-checkbox__box:after{border-color:#363c4e}}.tv-control-checkbox:active .tv-control-checkbox__input[disabled]+.tv-control-checkbox__box:before,.tv-control-checkbox:active .tv-control-checkbox__input[disabled]:checked+.tv-control-checkbox__box:before{background-color:#f1f3f6;transition:background-color .35s ease}html.theme-dark .tv-control-checkbox:active .tv-control-checkbox__input[disabled]+.tv-control-checkbox__box:before,html.theme-dark .tv-control-checkbox:active .tv-control-checkbox__input[disabled]:checked+.tv-control-checkbox__box:before{background-color:#2f3241}.tv-control-checkbox:active .tv-control-checkbox__input[disabled]:checked+.tv-control-checkbox__box,.tv-control-checkbox__input[disabled]:checked+.tv-control-checkbox__box{background-color:#dadde0}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-control-checkbox:hover .tv-control-checkbox__input[disabled]:checked+.tv-control-checkbox__box{background-color:#dadde0}}.tv-control-checkbox__ripple{display:block;position:absolute;top:0;right:0;width:100%;height:100%;margin:-10px;padding:10px;overflow:hidden;border-radius:50%;-webkit-mask-image:radial-gradient(circle,#fff 100%,#000 0);mask-image:radial-gradient(circle,#fff 100%,#000 0)}.tv-control-checkbox__input:checked+.tv-control-checkbox__box+.tv-control-checkbox__ripple .tv-ripple{background-color:rgba(33,150,243,.25)}.tv-control-checkbox__input[disabled]+.tv-control-checkbox__box+.tv-control-checkbox__ripple .tv-ripple,.tv-control-checkbox__input[disabled]:checked+.tv-control-checkbox__box+.tv-control-checkbox__ripple .tv-ripple{background-color:transparent}.tv-control-checkbox.i-error .tv-control-checkbox__box:after{border-color:#ff4a68}.tv-control-checkbox.i-disabled{cursor:default} \ No newline at end of file diff --git a/public/charting_library/static/bundles/1.2fa13f88d2bf6ae6f3f0.rtl.css b/public/charting_library/static/bundles/1.2fa13f88d2bf6ae6f3f0.rtl.css new file mode 100644 index 0000000..d6cab17 --- /dev/null +++ b/public/charting_library/static/bundles/1.2fa13f88d2bf6ae6f3f0.rtl.css @@ -0,0 +1 @@ +.tv-control-checkbox{cursor:pointer;-webkit-tap-highlight-color:transparent}.tv-control-checkbox--in-actions{max-width:50%}@media screen and (max-width:479px){.tv-control-checkbox--in-actions{max-width:none}}.tv-control-checkbox,.tv-control-checkbox__label{position:relative;display:inline-block;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tv-control-checkbox--nowrap,.tv-control-checkbox__label--nowrap{white-space:nowrap}.tv-control-checkbox__input{position:absolute;top:0;right:0;width:18px;height:18px;opacity:0}.tv-control-checkbox__box{display:block;width:18px;height:18px;line-height:1;border-radius:2px;box-sizing:border-box;pointer-events:none;transition:background-color .35s ease}.tv-control-checkbox__box:before{top:50%;right:50%;margin-top:-9px;margin-right:-9px;border-radius:2px;background-color:transparent;transform:scale(1);transition:transform .35s ease,background-color .35s ease,border-radius .35s ease}.tv-control-checkbox__box:after,.tv-control-checkbox__box:before{content:"";display:block;position:absolute;width:18px;height:18px}.tv-control-checkbox__box:after{top:0;right:0;border:2px solid #758696;border-radius:2px;box-sizing:border-box;transition:border-color .35s ease}.tv-control-checkbox__box svg{display:block;position:absolute;top:50%;right:50%;margin-top:-6px;margin-right:-6px;width:12px;height:12px;stroke:transparent;transform:scale(0);transition:stroke .35s ease 1ms,transform .35s ease 1ms}.tv-control-checkbox__label{white-space:normal;margin-left:10px}.tv-control-checkbox__label--two-lines{width:155px}.tv-control-checkbox__label--nowrap{white-space:nowrap}.tv-control-checkbox__label--lil-line-height{line-height:16px;min-width:50%;max-width:80%}.tv-control-checkbox__label+.tv-control-checkbox{margin-right:0}.tv-control-checkbox+.tv-control-checkbox__label{margin-left:0;margin-right:10px;max-width:calc(100% - 1ex - 28px)}.tv-control-checkbox:active .tv-control-checkbox__box,.tv-control-checkbox__input:focus+.tv-control-checkbox__box{will-change:background-color}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-control-checkbox:hover .tv-control-checkbox__box{will-change:background-color}}.tv-control-checkbox:active .tv-control-checkbox__box:before,.tv-control-checkbox__input:focus+.tv-control-checkbox__box:before{will-change:transform,border-radius}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-control-checkbox:hover .tv-control-checkbox__box:before{will-change:transform,border-radius}}.tv-control-checkbox:active .tv-control-checkbox__box:after,.tv-control-checkbox__input:focus+.tv-control-checkbox__box:after{will-change:border-color}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-control-checkbox:hover .tv-control-checkbox__box:after{will-change:border-color;border-color:#627384}}.tv-control-checkbox:active .tv-control-checkbox__box:after,.tv-control-checkbox__input:focus+.tv-control-checkbox__box:after{border-color:#2196f3}.tv-control-checkbox__input:checked+.tv-control-checkbox__box{background-color:#2196f3}.tv-control-checkbox__input:checked+.tv-control-checkbox__box,.tv-control-checkbox__input:checked+.tv-control-checkbox__box:after,.tv-control-checkbox__input:checked+.tv-control-checkbox__box:before{transition-timing-function:cubic-bezier(.215,.61,.355,1)}.tv-control-checkbox__input:checked+.tv-control-checkbox__box:before{border-radius:50%;transform:scale(0)}.tv-control-checkbox__input:checked+.tv-control-checkbox__box:after{border-color:#2196f3}.tv-control-checkbox__input:checked+.tv-control-checkbox__box svg{stroke:#fff;transform:scale(1);transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-delay:.0875s;will-change:stroke,transform}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-control-checkbox:hover .tv-control-checkbox__input:checked+.tv-control-checkbox__box{background-color:#1e88e5}}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-control-checkbox:hover .tv-control-checkbox__input:checked+.tv-control-checkbox__box:after{border-color:#1e88e5}}.tv-control-checkbox:active .tv-control-checkbox__input:checked+.tv-control-checkbox__box,.tv-control-checkbox__input:focus:checked+.tv-control-checkbox__box{background-color:#049ddc}.tv-control-checkbox:active .tv-control-checkbox__input:checked+.tv-control-checkbox__box:after,.tv-control-checkbox__input:focus:checked+.tv-control-checkbox__box:after{border-color:#049ddc}.tv-control-checkbox:active .tv-control-checkbox__input[disabled]+.tv-control-checkbox__box:after,.tv-control-checkbox:active .tv-control-checkbox__input[disabled]:checked+.tv-control-checkbox__box:after,.tv-control-checkbox__input[disabled]+.tv-control-checkbox__box:after,.tv-control-checkbox__input[disabled]:checked+.tv-control-checkbox__box:after{border-color:#dadde0}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-control-checkbox:hover .tv-control-checkbox__input[disabled]+.tv-control-checkbox__box:after,.tv-control-checkbox:hover .tv-control-checkbox__input[disabled]:checked+.tv-control-checkbox__box:after{border-color:#dadde0}}html.theme-dark .tv-control-checkbox:active .tv-control-checkbox__input[disabled]+.tv-control-checkbox__box:after,html.theme-dark .tv-control-checkbox:active .tv-control-checkbox__input[disabled]:checked+.tv-control-checkbox__box:after,html.theme-dark .tv-control-checkbox__input[disabled]+.tv-control-checkbox__box:after,html.theme-dark .tv-control-checkbox__input[disabled]:checked+.tv-control-checkbox__box:after{border-color:#363c4e}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .tv-control-checkbox:hover .tv-control-checkbox__input[disabled]+.tv-control-checkbox__box:after,html.theme-dark .tv-control-checkbox:hover .tv-control-checkbox__input[disabled]:checked+.tv-control-checkbox__box:after{border-color:#363c4e}}.tv-control-checkbox:active .tv-control-checkbox__input[disabled]+.tv-control-checkbox__box:before,.tv-control-checkbox:active .tv-control-checkbox__input[disabled]:checked+.tv-control-checkbox__box:before{background-color:#f1f3f6;transition:background-color .35s ease}html.theme-dark .tv-control-checkbox:active .tv-control-checkbox__input[disabled]+.tv-control-checkbox__box:before,html.theme-dark .tv-control-checkbox:active .tv-control-checkbox__input[disabled]:checked+.tv-control-checkbox__box:before{background-color:#2f3241}.tv-control-checkbox:active .tv-control-checkbox__input[disabled]:checked+.tv-control-checkbox__box,.tv-control-checkbox__input[disabled]:checked+.tv-control-checkbox__box{background-color:#dadde0}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-control-checkbox:hover .tv-control-checkbox__input[disabled]:checked+.tv-control-checkbox__box{background-color:#dadde0}}.tv-control-checkbox__ripple{display:block;position:absolute;top:0;left:0;width:100%;height:100%;margin:-10px;padding:10px;overflow:hidden;border-radius:50%;-webkit-mask-image:radial-gradient(circle,#fff 100%,#000 0);mask-image:radial-gradient(circle,#fff 100%,#000 0)}.tv-control-checkbox__input:checked+.tv-control-checkbox__box+.tv-control-checkbox__ripple .tv-ripple{background-color:rgba(33,150,243,.25)}.tv-control-checkbox__input[disabled]+.tv-control-checkbox__box+.tv-control-checkbox__ripple .tv-ripple,.tv-control-checkbox__input[disabled]:checked+.tv-control-checkbox__box+.tv-control-checkbox__ripple .tv-ripple{background-color:transparent}.tv-control-checkbox.i-error .tv-control-checkbox__box:after{border-color:#ff4a68}.tv-control-checkbox.i-disabled{cursor:default} \ No newline at end of file diff --git a/public/charting_library/static/bundles/1.ea828ac684caa2b94a1b.js b/public/charting_library/static/bundles/1.ea828ac684caa2b94a1b.js new file mode 100644 index 0000000..5cb2eb0 --- /dev/null +++ b/public/charting_library/static/bundles/1.ea828ac684caa2b94a1b.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[1],[]]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/10.0501e55a3ef6aa50aec6.js b/public/charting_library/static/bundles/10.0501e55a3ef6aa50aec6.js new file mode 100644 index 0000000..d57c266 --- /dev/null +++ b/public/charting_library/static/bundles/10.0501e55a3ef6aa50aec6.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[10],[]]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/10.c0a8664f16f3834961e4.css b/public/charting_library/static/bundles/10.c0a8664f16f3834961e4.css new file mode 100644 index 0000000..e30c608 --- /dev/null +++ b/public/charting_library/static/bundles/10.c0a8664f16f3834961e4.css @@ -0,0 +1 @@ +.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.colorpicker.main{border:1px solid #c9cbcd;box-shadow:0 1px 3px rgba(0,0,0,.4)}.tvcolorpicker-widget{vertical-align:middle;background-image:url(../images/tvcolorpicker-bg.png);background-position:0 0;background-repeat:no-repeat;border:1px solid #cacaca;overflow:hidden;padding:0;width:25px;height:25px;cursor:pointer;font-size:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tvcolorpicker-gradient-widget{background-image:url(../images/tvcolorpicker-bg.png),url(../images/tvcolorpicker-bg-gradient.png);background-size:cover}.tvcolorpicker-popup{position:absolute;z-index:1000;padding:4px;background:#fff;border:1px solid;border-color:#b5b7b9;box-shadow:0 1px 2px rgba(0,0,0,.3)}html.theme-dark .tvcolorpicker-popup{border-color:#363c4e;background:#131722}.tvcolorpicker-table{border-collapse:collapse;table-layout:fixed;margin:0 0 6px}.tvcolorpicker-popup .tvcolorpicker-table:last-of-type{margin-bottom:0}.tvcolorpicker-table td{padding:0;width:18px;height:18px}.tvcolorpicker-swatch{width:16px;height:16px;border:0 none;margin:1px;cursor:pointer;overflow:hidden}.tvcolorpicker-swatch.low-contrast{margin:0;border:1px solid #ccc}.tvcolorpicker-swatch.tvcolorpicker-user{border:1px solid #eee;margin:0}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tvcolorpicker-cell:hover .tvcolorpicker-swatch{border:1px solid #000;margin:0}}.tvcolorpicker-swatch.active{background:url(../images/tvcolorpicker-check.png) 50% 50% no-repeat;border:1px solid #fff;outline:1px solid #000;margin:0}.tvcolorpicker-custom-button{display:block}.tvcolorpicker-hsv{position:relative;top:4px;height:130px;width:160px;margin:0 auto}.tvcolorpicker-hs{position:absolute;top:0;left:-7px;width:147px;height:148px;background:url(../images/tvcolorpicker-sprite.png) 0 0 no-repeat;border:1px solid #eee}.tvcolorpicker-hs-area,.tvcolorpicker-v-area{position:absolute;top:0;left:0;width:100%;height:100%}.tvcolorpicker-v{position:absolute;background:url(../images/tvcolorpicker-sprite.png) -165px 1px no-repeat;border:1px solid #eee;height:149px;width:9px;margin:auto;left:0;right:0}.tvcolorpicker-vv{position:relative;top:0;left:145px;width:25px;height:128px;cursor:default}.tvcolorpicker-hs-handle{width:11px;height:11px;position:absolute;left:0;top:0;margin:-5px 0 0 -5px;background:url(../images/tvcolorpicker-sprite.png) -37px -148px no-repeat}.tvcolorpicker-v-handle{position:absolute;left:0;top:0;width:25px;height:11px;margin:-5px 0 0 -8px;background:url(../images/tvcolorpicker-sprite.png) -48px -148px no-repeat}.tvcolorpicker-custom-button,.tvcolorpicker-user-swatches{margin:6px 0 0}.tvcolorpicker-user-swatches .tvcolorpicker-transparency{background:url(../images/dialogs/opacity-slider.png)!important}.some-colorpicker .tvcolorpicker-container{display:inline-block;margin-right:8px}.tvcolorpicker-container{display:inline-block;position:relative;width:27px;height:27px}div .tvcolorpicker-container:last-of-type{border-right-width:0}.tvcolorpicker-container .tvcolorpicker-transparency{background:url(../images/dialogs/opacity-slider.png)!important;position:absolute;width:25px;height:25px;z-index:1}.tvcolorpicker-container .tvcolorpicker-widget{z-index:2;position:absolute}.widgetbar-widgetheader .colorpicker-widget:not(.disabled):not(.selected){position:relative}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.widgetbar-widgetheader .colorpicker-widget:not(.disabled):not(.selected):not(.disabled):hover{border:1px solid;border-color:#d6d8e0;z-index:1}}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .widgetbar-widgetheader .colorpicker-widget:not(.disabled):not(.selected):not(.disabled):hover{border-color:#131722}} \ No newline at end of file diff --git a/public/charting_library/static/bundles/10.c0a8664f16f3834961e4.rtl.css b/public/charting_library/static/bundles/10.c0a8664f16f3834961e4.rtl.css new file mode 100644 index 0000000..82d01d8 --- /dev/null +++ b/public/charting_library/static/bundles/10.c0a8664f16f3834961e4.rtl.css @@ -0,0 +1 @@ +.ui-slider{position:relative;text-align:right}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:100% 0}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-right:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{right:0}.ui-slider-horizontal .ui-slider-range-max{left:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{right:-.3em;margin-right:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{right:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.colorpicker.main{border:1px solid #c9cbcd;box-shadow:0 1px 3px rgba(0,0,0,.4)}.tvcolorpicker-widget{vertical-align:middle;background-image:url(../images/tvcolorpicker-bg.png);background-position:100% 0;background-repeat:no-repeat;border:1px solid #cacaca;overflow:hidden;padding:0;width:25px;height:25px;cursor:pointer;font-size:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tvcolorpicker-gradient-widget{background-image:url(../images/tvcolorpicker-bg.png),url(../images/tvcolorpicker-bg-gradient.png);background-size:cover}.tvcolorpicker-popup{position:absolute;z-index:1000;padding:4px;background:#fff;border:1px solid;border-color:#b5b7b9;box-shadow:0 1px 2px rgba(0,0,0,.3)}html.theme-dark .tvcolorpicker-popup{border-color:#363c4e;background:#131722}.tvcolorpicker-table{border-collapse:collapse;table-layout:fixed;margin:0 0 6px}.tvcolorpicker-popup .tvcolorpicker-table:last-of-type{margin-bottom:0}.tvcolorpicker-table td{padding:0;width:18px;height:18px}.tvcolorpicker-swatch{width:16px;height:16px;border:0 none;margin:1px;cursor:pointer;overflow:hidden}.tvcolorpicker-swatch.low-contrast{margin:0;border:1px solid #ccc}.tvcolorpicker-swatch.tvcolorpicker-user{border:1px solid #eee;margin:0}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tvcolorpicker-cell:hover .tvcolorpicker-swatch{border:1px solid #000;margin:0}}.tvcolorpicker-swatch.active{background:url(../images/tvcolorpicker-check.png) 50% 50% no-repeat;border:1px solid #fff;outline:1px solid #000;margin:0}.tvcolorpicker-custom-button{display:block}.tvcolorpicker-hsv{position:relative;top:4px;height:130px;width:160px;margin:0 auto}.tvcolorpicker-hs{position:absolute;top:0;right:-7px;width:147px;height:148px;background:url(../images/tvcolorpicker-sprite.png) 0 0 no-repeat;border:1px solid #eee}.tvcolorpicker-hs-area,.tvcolorpicker-v-area{position:absolute;top:0;right:0;width:100%;height:100%}.tvcolorpicker-v{position:absolute;background:url(../images/tvcolorpicker-sprite.png) -165px 1px no-repeat;border:1px solid #eee;height:149px;width:9px;margin:auto;right:0;left:0}.tvcolorpicker-vv{position:relative;top:0;right:145px;width:25px;height:128px;cursor:default}.tvcolorpicker-hs-handle{width:11px;height:11px;position:absolute;right:0;top:0;margin:-5px -5px 0 0;background:url(../images/tvcolorpicker-sprite.png) -37px -148px no-repeat}.tvcolorpicker-v-handle{position:absolute;right:0;top:0;width:25px;height:11px;margin:-5px -8px 0 0;background:url(../images/tvcolorpicker-sprite.png) -48px -148px no-repeat}.tvcolorpicker-custom-button,.tvcolorpicker-user-swatches{margin:6px 0 0}.tvcolorpicker-user-swatches .tvcolorpicker-transparency{background:url(../images/dialogs/opacity-slider.png)!important}.some-colorpicker .tvcolorpicker-container{display:inline-block;margin-left:8px}.tvcolorpicker-container{display:inline-block;position:relative;width:27px;height:27px}div .tvcolorpicker-container:last-of-type{border-left-width:0}.tvcolorpicker-container .tvcolorpicker-transparency{background:url(../images/dialogs/opacity-slider.png)!important;position:absolute;width:25px;height:25px;z-index:1}.tvcolorpicker-container .tvcolorpicker-widget{z-index:2;position:absolute}.widgetbar-widgetheader .colorpicker-widget:not(.disabled):not(.selected){position:relative}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.widgetbar-widgetheader .colorpicker-widget:not(.disabled):not(.selected):not(.disabled):hover{border:1px solid;border-color:#d6d8e0;z-index:1}}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .widgetbar-widgetheader .colorpicker-widget:not(.disabled):not(.selected):not(.disabled):hover{border-color:#131722}} \ No newline at end of file diff --git a/public/charting_library/static/bundles/11.b900b9cb8ed6dd3bc321.css b/public/charting_library/static/bundles/11.b900b9cb8ed6dd3bc321.css new file mode 100644 index 0000000..e8c737a --- /dev/null +++ b/public/charting_library/static/bundles/11.b900b9cb8ed6dd3bc321.css @@ -0,0 +1 @@ +.item-2xPVYue0-{display:flex;flex-flow:row nowrap;align-items:center;white-space:nowrap;padding:2px 10px 2px 8px;font-size:14px;background-color:#fff;cursor:default;transition-property:none;color:#131722}html.theme-dark .item-2xPVYue0-{color:#b2b5be;background-color:#1e222d}.item-2xPVYue0-.hovered-1uf45E05-,.item-2xPVYue0-:active{color:#000}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.item-2xPVYue0-:hover{color:#000}}html.theme-dark .item-2xPVYue0-.hovered-1uf45E05-,html.theme-dark .item-2xPVYue0-:active{color:#c1c4cd}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .item-2xPVYue0-:hover{color:#c1c4cd}}.item-2xPVYue0-.hovered-1uf45E05-,.item-2xPVYue0-:active{background-color:#f0f3fa}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.item-2xPVYue0-:hover{background-color:#f0f3fa}}html.theme-dark .item-2xPVYue0-.hovered-1uf45E05-,html.theme-dark .item-2xPVYue0-:active{background-color:#2a2e39}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .item-2xPVYue0-:hover{background-color:#2a2e39}}.item-2xPVYue0-.isDisabled-1wLqKupj-{opacity:.3;cursor:default}.item-2xPVYue0-.isDisabled-1wLqKupj-,.item-2xPVYue0-.isDisabled-1wLqKupj-:active{color:#131722;background-color:#fff}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.item-2xPVYue0-.isDisabled-1wLqKupj-:hover{color:#131722;background-color:#fff}}html.theme-dark .item-2xPVYue0-.isDisabled-1wLqKupj-,html.theme-dark .item-2xPVYue0-.isDisabled-1wLqKupj-:active{background-color:#1e222d}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .item-2xPVYue0-.isDisabled-1wLqKupj-:hover{background-color:#1e222d}}html.theme-dark .item-2xPVYue0-.isDisabled-1wLqKupj-,html.theme-dark .item-2xPVYue0-.isDisabled-1wLqKupj-:active{color:#b2b5be}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .item-2xPVYue0-.isDisabled-1wLqKupj-:hover{color:#b2b5be}}.item-2xPVYue0-.isActive-2j-GhQs_-,.item-2xPVYue0-.isActive-2j-GhQs_-:active{color:#fff;background-color:#2196f3}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.item-2xPVYue0-.isActive-2j-GhQs_-:hover{color:#fff;background-color:#2196f3}}html.theme-dark .item-2xPVYue0-.isActive-2j-GhQs_-,html.theme-dark .item-2xPVYue0-.isActive-2j-GhQs_-:active{background-color:#1976d2}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .item-2xPVYue0-.isActive-2j-GhQs_-:hover{background-color:#1976d2}}html.theme-dark .item-2xPVYue0-.isActive-2j-GhQs_-,html.theme-dark .item-2xPVYue0-.isActive-2j-GhQs_-:active{color:#131722}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .item-2xPVYue0-.isActive-2j-GhQs_-:hover{color:#131722}}.item-2xPVYue0-.isActive-2j-GhQs_- .icon-2Qm7YIcz- svg,.item-2xPVYue0-.isActive-2j-GhQs_-:active .icon-2Qm7YIcz- svg{fill:currentColor}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.item-2xPVYue0-.isActive-2j-GhQs_-:hover .icon-2Qm7YIcz- svg{fill:currentColor}}.item-2xPVYue0-.isActive-2j-GhQs_- .shortcut-30pveiCO-,.item-2xPVYue0-.isActive-2j-GhQs_-:active .shortcut-30pveiCO-{color:hsla(0,0%,100%,.7)}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.item-2xPVYue0-.isActive-2j-GhQs_-:hover .shortcut-30pveiCO-{color:hsla(0,0%,100%,.7)}}html.theme-dark .item-2xPVYue0-.isActive-2j-GhQs_- .shortcut-30pveiCO-,html.theme-dark .item-2xPVYue0-.isActive-2j-GhQs_-:active .shortcut-30pveiCO-{color:rgba(19,23,34,.7)}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .item-2xPVYue0-.isActive-2j-GhQs_-:hover .shortcut-30pveiCO-{color:rgba(19,23,34,.7)}}.item-2xPVYue0-.isActive-2j-GhQs_- .toolbox-3ulPxfe--,.item-2xPVYue0-.isActive-2j-GhQs_-:active .toolbox-3ulPxfe--{color:#fff}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.item-2xPVYue0-.isActive-2j-GhQs_-:hover .toolbox-3ulPxfe--{color:#fff}}html.theme-dark .item-2xPVYue0-.isActive-2j-GhQs_- .toolbox-3ulPxfe--,html.theme-dark .item-2xPVYue0-.isActive-2j-GhQs_-:active .toolbox-3ulPxfe--{color:#fff}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .item-2xPVYue0-.isActive-2j-GhQs_-:hover .toolbox-3ulPxfe--{color:#fff}}.item-2xPVYue0-.withIcon-1xBjf-oB-{padding-top:6px;padding-bottom:6px}.item-2xPVYue0-:before{content:" ";display:block;height:28px}.icon-2Qm7YIcz-{display:flex;margin-right:7px;align-items:center;justify-content:center;width:28px;height:28px}.icon-2Qm7YIcz- svg{display:block;fill:currentColor}.labelRow-3Q0rdE8--{display:flex;flex-direction:row;align-items:baseline;justify-content:space-between;flex:1 0 auto;margin-right:14px}.labelRow-3Q0rdE8--:first-child{margin-left:4px}.labelRow-3Q0rdE8--:last-child{margin-right:4px}.label-3Xqxy756-{display:flex;flex:0 0 auto}.shortcut-30pveiCO-{font-size:11px;margin-right:14px;min-width:27px;color:#b2b5be}html.theme-dark .shortcut-30pveiCO-{color:#787b86}.toolbox-3ulPxfe--{display:flex;position:relative;align-items:center;color:#9db2bd}html.theme-dark .toolbox-3ulPxfe--{color:#9db2bd}.feature-no-mobiletouch .toolbox-3ulPxfe--.showOnHover-1q6ySzZc-{opacity:0}.toolbox-3ulPxfe-->:not(:last-child){margin-right:10px}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.feature-no-mobiletouch .item-2xPVYue0-:hover .toolbox-3ulPxfe--.showOnHover-1q6ySzZc-{opacity:1}}.separator-25lkUpN--{margin:6px 0;height:1px;background-color:#e1ecf2}html.theme-dark .separator-25lkUpN--{background-color:#363c4e} \ No newline at end of file diff --git a/public/charting_library/static/bundles/11.b900b9cb8ed6dd3bc321.rtl.css b/public/charting_library/static/bundles/11.b900b9cb8ed6dd3bc321.rtl.css new file mode 100644 index 0000000..8c5ea95 --- /dev/null +++ b/public/charting_library/static/bundles/11.b900b9cb8ed6dd3bc321.rtl.css @@ -0,0 +1 @@ +.item-2xPVYue0-{display:flex;flex-flow:row nowrap;align-items:center;white-space:nowrap;padding:2px 8px 2px 10px;font-size:14px;background-color:#fff;cursor:default;transition-property:none;color:#131722}html.theme-dark .item-2xPVYue0-{color:#b2b5be;background-color:#1e222d}.item-2xPVYue0-.hovered-1uf45E05-,.item-2xPVYue0-:active{color:#000}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.item-2xPVYue0-:hover{color:#000}}html.theme-dark .item-2xPVYue0-.hovered-1uf45E05-,html.theme-dark .item-2xPVYue0-:active{color:#c1c4cd}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .item-2xPVYue0-:hover{color:#c1c4cd}}.item-2xPVYue0-.hovered-1uf45E05-,.item-2xPVYue0-:active{background-color:#f0f3fa}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.item-2xPVYue0-:hover{background-color:#f0f3fa}}html.theme-dark .item-2xPVYue0-.hovered-1uf45E05-,html.theme-dark .item-2xPVYue0-:active{background-color:#2a2e39}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .item-2xPVYue0-:hover{background-color:#2a2e39}}.item-2xPVYue0-.isDisabled-1wLqKupj-{opacity:.3;cursor:default}.item-2xPVYue0-.isDisabled-1wLqKupj-,.item-2xPVYue0-.isDisabled-1wLqKupj-:active{color:#131722;background-color:#fff}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.item-2xPVYue0-.isDisabled-1wLqKupj-:hover{color:#131722;background-color:#fff}}html.theme-dark .item-2xPVYue0-.isDisabled-1wLqKupj-,html.theme-dark .item-2xPVYue0-.isDisabled-1wLqKupj-:active{background-color:#1e222d}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .item-2xPVYue0-.isDisabled-1wLqKupj-:hover{background-color:#1e222d}}html.theme-dark .item-2xPVYue0-.isDisabled-1wLqKupj-,html.theme-dark .item-2xPVYue0-.isDisabled-1wLqKupj-:active{color:#b2b5be}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .item-2xPVYue0-.isDisabled-1wLqKupj-:hover{color:#b2b5be}}.item-2xPVYue0-.isActive-2j-GhQs_-,.item-2xPVYue0-.isActive-2j-GhQs_-:active{color:#fff;background-color:#2196f3}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.item-2xPVYue0-.isActive-2j-GhQs_-:hover{color:#fff;background-color:#2196f3}}html.theme-dark .item-2xPVYue0-.isActive-2j-GhQs_-,html.theme-dark .item-2xPVYue0-.isActive-2j-GhQs_-:active{background-color:#1976d2}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .item-2xPVYue0-.isActive-2j-GhQs_-:hover{background-color:#1976d2}}html.theme-dark .item-2xPVYue0-.isActive-2j-GhQs_-,html.theme-dark .item-2xPVYue0-.isActive-2j-GhQs_-:active{color:#131722}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .item-2xPVYue0-.isActive-2j-GhQs_-:hover{color:#131722}}.item-2xPVYue0-.isActive-2j-GhQs_- .icon-2Qm7YIcz- svg,.item-2xPVYue0-.isActive-2j-GhQs_-:active .icon-2Qm7YIcz- svg{fill:currentColor}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.item-2xPVYue0-.isActive-2j-GhQs_-:hover .icon-2Qm7YIcz- svg{fill:currentColor}}.item-2xPVYue0-.isActive-2j-GhQs_- .shortcut-30pveiCO-,.item-2xPVYue0-.isActive-2j-GhQs_-:active .shortcut-30pveiCO-{color:hsla(0,0%,100%,.7)}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.item-2xPVYue0-.isActive-2j-GhQs_-:hover .shortcut-30pveiCO-{color:hsla(0,0%,100%,.7)}}html.theme-dark .item-2xPVYue0-.isActive-2j-GhQs_- .shortcut-30pveiCO-,html.theme-dark .item-2xPVYue0-.isActive-2j-GhQs_-:active .shortcut-30pveiCO-{color:rgba(19,23,34,.7)}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .item-2xPVYue0-.isActive-2j-GhQs_-:hover .shortcut-30pveiCO-{color:rgba(19,23,34,.7)}}.item-2xPVYue0-.isActive-2j-GhQs_- .toolbox-3ulPxfe--,.item-2xPVYue0-.isActive-2j-GhQs_-:active .toolbox-3ulPxfe--{color:#fff}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.item-2xPVYue0-.isActive-2j-GhQs_-:hover .toolbox-3ulPxfe--{color:#fff}}html.theme-dark .item-2xPVYue0-.isActive-2j-GhQs_- .toolbox-3ulPxfe--,html.theme-dark .item-2xPVYue0-.isActive-2j-GhQs_-:active .toolbox-3ulPxfe--{color:#fff}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .item-2xPVYue0-.isActive-2j-GhQs_-:hover .toolbox-3ulPxfe--{color:#fff}}.item-2xPVYue0-.withIcon-1xBjf-oB-{padding-top:6px;padding-bottom:6px}.item-2xPVYue0-:before{content:" ";display:block;height:28px}.icon-2Qm7YIcz-{display:flex;margin-left:7px;align-items:center;justify-content:center;width:28px;height:28px}.icon-2Qm7YIcz- svg{display:block;fill:currentColor}.labelRow-3Q0rdE8--{display:flex;flex-direction:row;align-items:baseline;justify-content:space-between;flex:1 0 auto;margin-left:14px}.labelRow-3Q0rdE8--:first-child{margin-right:4px}.labelRow-3Q0rdE8--:last-child{margin-left:4px}.label-3Xqxy756-{display:flex;flex:0 0 auto}.shortcut-30pveiCO-{font-size:11px;margin-left:14px;min-width:27px;color:#b2b5be}html.theme-dark .shortcut-30pveiCO-{color:#787b86}.toolbox-3ulPxfe--{display:flex;position:relative;align-items:center;color:#9db2bd}html.theme-dark .toolbox-3ulPxfe--{color:#9db2bd}.feature-no-mobiletouch .toolbox-3ulPxfe--.showOnHover-1q6ySzZc-{opacity:0}.toolbox-3ulPxfe-->:not(:last-child){margin-left:10px}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.feature-no-mobiletouch .item-2xPVYue0-:hover .toolbox-3ulPxfe--.showOnHover-1q6ySzZc-{opacity:1}}.separator-25lkUpN--{margin:6px 0;height:1px;background-color:#e1ecf2}html.theme-dark .separator-25lkUpN--{background-color:#363c4e} \ No newline at end of file diff --git a/public/charting_library/static/bundles/11.dd520838f92e45cd91e3.js b/public/charting_library/static/bundles/11.dd520838f92e45cd91e3.js new file mode 100644 index 0000000..7a62800 --- /dev/null +++ b/public/charting_library/static/bundles/11.dd520838f92e45cd91e3.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[11],[]]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/12.18e3c4b9c329e737cb80.js b/public/charting_library/static/bundles/12.18e3c4b9c329e737cb80.js new file mode 100644 index 0000000..068e5bb --- /dev/null +++ b/public/charting_library/static/bundles/12.18e3c4b9c329e737cb80.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[12],[]]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/12.87f9777d9fe2086ce090.css b/public/charting_library/static/bundles/12.87f9777d9fe2086ce090.css new file mode 100644 index 0000000..4954f55 --- /dev/null +++ b/public/charting_library/static/bundles/12.87f9777d9fe2086ce090.css @@ -0,0 +1 @@ +.dialog-2APwxL3O-{display:flex;min-width:280px;text-align:left;box-sizing:border-box;background-color:#fff;flex-direction:column}html.theme-dark .dialog-2APwxL3O-{background-color:#1e222d}.dialog-2APwxL3O-.rounded-tXI9mwGE-{border-radius:4px}.dialog-2APwxL3O-.shadowed-2M13-xZa-{box-shadow:0 1px 2px 1px rgba(0,0,0,.275)}.dialog-2APwxL3O-.fullscreen-2RqU2pqU-{position:fixed;width:100%;max-width:100%;height:100%;max-height:100%;min-height:100%} \ No newline at end of file diff --git a/public/charting_library/static/bundles/12.87f9777d9fe2086ce090.rtl.css b/public/charting_library/static/bundles/12.87f9777d9fe2086ce090.rtl.css new file mode 100644 index 0000000..0a73eff --- /dev/null +++ b/public/charting_library/static/bundles/12.87f9777d9fe2086ce090.rtl.css @@ -0,0 +1 @@ +.dialog-2APwxL3O-{display:flex;min-width:280px;text-align:right;box-sizing:border-box;background-color:#fff;flex-direction:column}html.theme-dark .dialog-2APwxL3O-{background-color:#1e222d}.dialog-2APwxL3O-.rounded-tXI9mwGE-{border-radius:4px}.dialog-2APwxL3O-.shadowed-2M13-xZa-{box-shadow:0 1px 2px 1px rgba(0,0,0,.275)}.dialog-2APwxL3O-.fullscreen-2RqU2pqU-{position:fixed;width:100%;max-width:100%;height:100%;max-height:100%;min-height:100%} \ No newline at end of file diff --git a/public/charting_library/static/bundles/13.46f312828e93b6546d0c.js b/public/charting_library/static/bundles/13.46f312828e93b6546d0c.js new file mode 100644 index 0000000..ab82e13 --- /dev/null +++ b/public/charting_library/static/bundles/13.46f312828e93b6546d0c.js @@ -0,0 +1,3 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{"+EG+":function(e,t,n){"use strict";var o,r,i,s;n.d(t,"a",function(){return i}),n.d(t,"b",function(){return s}),o=n("mrSG"),r=n("q1tI"),i=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.prototype.shouldComponentUpdate=function(){return!1},t.prototype.render=function(){return r.createElement("div",{style:{position:"fixed",zIndex:150,left:0,top:0},ref:this.props.reference})},t}(r.Component),s=r.createContext(null)},AVTG:function(e,t,n){"use strict";function o(e){var t=e.hideIcon?null:s.createElement(a.a,{className:u.close,icon:c,onClick:e.onClose});return s.createElement("div",{className:u.header,"data-dragg-area":!0,ref:e.reference},e.children,t)}function r(e){return s.createElement("div",{className:l(d.body,e.className),ref:e.reference},e.children)}function i(e){var t,n;return e.text?t=s.createElement("span",null,e.text):e.html&&(t=s.createElement("span",{dangerouslySetInnerHTML:{__html:e.html}})),n=p.message,e.isError&&(n+=" "+p.error),t?s.createElement("div",{className:n,key:"0"},s.createElement(h.a,{mouseDown:!0,touchStart:!0,handler:e.onClickOutside},t)):s.createElement("div",null)}var s=n("q1tI"),u=n("kgsH"),c=n("uo4K"),a=n("jjrI"),d=(n("kQXJ"),n("XYXm")),l=n("TSYQ"),p=n("cJj4"),h=n("RgaO");n.d(t,"b",function(){return o}),n.d(t,"a",function(){return r}),n.d(t,"c",function(){return i})},RgaO:function(e,t,n){"use strict";var o,r,i;n.d(t,"a",function(){return i}),o=n("mrSG"),r=n("q1tI"),i=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._scope=null,t._handleScopeRef=function(e){return t._scope=e},t._handleOutsideEvent=function(e){void 0!==t.props.handler&&null!==t._scope&&e.target instanceof Node&&(t._scope.contains(e.target)||t.props.handler(e))},t}return o.__extends(t,e),t.prototype.componentDidMount=function(){this.props.click&&document.addEventListener("click",this._handleOutsideEvent,!1),this.props.mouseDown&&document.addEventListener("mousedown",this._handleOutsideEvent,!1),this.props.touchEnd&&document.addEventListener("touchend",this._handleOutsideEvent,!1),this.props.touchStart&&document.addEventListener("touchstart",this._handleOutsideEvent,!1)},t.prototype.componentWillUnmount=function(){document.removeEventListener("click",this._handleOutsideEvent,!1),document.removeEventListener("mousedown",this._handleOutsideEvent,!1),document.removeEventListener("touchend",this._handleOutsideEvent,!1),document.removeEventListener("touchstart",this._handleOutsideEvent,!1)},t.prototype.render=function(){var e=this.props,t=(e.click,e.handler,e.mouseDown,e.touchEnd,e.touchStart,e.ctor),n=void 0===t?"span":t,i=o.__rest(e,["click","handler","mouseDown","touchEnd","touchStart","ctor"]);return r.createElement(n,o.__assign({},i,{ref:this._handleScopeRef}))},t}(r.PureComponent)},XYXm:function(e,t,n){e.exports={body:"body-2N-vuwQW-"}},cJj4:function(e,t,n){e.exports={message:"message-2o-rtQm0-",error:"error-2EW0C6z--"}},jAh7:function(e,t,n){"use strict";function o(e){var t,n,o +;return void 0===e&&(e=document),null!==(t=e.getElementById("overlap-manager-root"))?Object(r.ensureDefined)(u.get(t)):(n=new s(e),o=function(e){var t=e.createElement("div");return t.style.position="absolute",t.style.zIndex=150..toString(),t.style.top="0px",t.style.left="0px",t.id="overlap-manager-root",t}(e),u.set(o,n),n.setContainer(o),e.body.appendChild(o),n)}var r,i,s,u;n.r(t),n.d(t,"OverlapManager",function(){return s}),n.d(t,"getRootOverlapManager",function(){return o}),r=n("Eyy1"),i=function(){function e(){this._storage=[]}return e.prototype.add=function(e){this._storage.push(e)},e.prototype.remove=function(e){this._storage=this._storage.filter(function(t){return e!==t})},e.prototype.has=function(e){return this._storage.includes(e)},e.prototype.getItems=function(){return this._storage},e}(),s=function(){function e(e){void 0===e&&(e=document),this._storage=new i,this._windows=new Map,this._index=0,this._document=e,this._container=e.createDocumentFragment()}return e.prototype.setContainer=function(e){var t=this._container,n=null===e?this._document.createDocumentFragment():e;!function(e,t){Array.from(e.childNodes).forEach(function(e){e.nodeType===Node.ELEMENT_NODE&&t.appendChild(e)})}(t,n),this._container=n},e.prototype.registerWindow=function(e){this._storage.has(e)||this._storage.add(e)},e.prototype.ensureWindow=function(e,t){var n,o;return void 0===t&&(t={position:"fixed"}),void 0!==(n=this._windows.get(e))?n:(this.registerWindow(e),(o=this._document.createElement("div")).style.position=t.position,o.style.zIndex=this._index.toString(),o.dataset.id=e,this._container.appendChild(o),this._windows.set(e,o),++this._index,o)},e.prototype.unregisterWindow=function(e){this._storage.remove(e);var t=this._windows.get(e);void 0!==t&&(null!==t.parentElement&&t.parentElement.removeChild(t),this._windows.delete(e))},e.prototype.getZindex=function(e){var t=this.ensureWindow(e);return parseInt(t.style.zIndex||"0")},e.prototype.moveToTop=function(e){this.getZindex(e)!==this._index&&(this.ensureWindow(e).style.zIndex=(++this._index).toString())},e.prototype.removeWindow=function(e){this.unregisterWindow(e)},e}(),u=new WeakMap},jjrI:function(e,t,n){"use strict";function o(e){var t=e.className,n=e.icon,o=void 0===n?"":n,s=e.title,u=e.onClick,c=e.onMouseDown,a=e.onMouseUp,d=e.onMouseLeave,l=e.reference,p=r.__rest(e,["className","icon","title","onClick","onMouseDown","onMouseUp","onMouseLeave","reference"]);return i.createElement("span",r.__assign({},p,{title:s,className:t,dangerouslySetInnerHTML:{__html:o},onClick:u,onMouseDown:c,onMouseUp:a,onMouseLeave:d,ref:l}))}var r,i;n.d(t,"a",function(){return o}),r=n("mrSG"),i=n("q1tI")},kQXJ:function(e,t,n){e.exports={footer:"footer-2Zoji8zg-"}},kgsH:function(e,t,n){e.exports={header:"header-dpl-vtN_-",close:"close-3kPn4OTV-"}},uo4K:function(e,t){ +e.exports=''},"ycI/":function(e,t,n){"use strict";var o,r,i;n.d(t,"a",function(){return i}),o=n("mrSG"),r=n("q1tI"),i=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._handleKeyDown=function(e){e.keyCode===t.props.keyCode&&t.props.handler(e)},t}return o.__extends(t,e),t.prototype.componentDidMount=function(){document.addEventListener(this.props.eventType||"keydown",this._handleKeyDown,!1)},t.prototype.componentWillUnmount=function(){document.removeEventListener(this.props.eventType||"keydown",this._handleKeyDown,!1)},t.prototype.render=function(){return null},t}(r.PureComponent)}}]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/14.579d7892443d1a90180c.js b/public/charting_library/static/bundles/14.579d7892443d1a90180c.js new file mode 100644 index 0000000..21068f1 --- /dev/null +++ b/public/charting_library/static/bundles/14.579d7892443d1a90180c.js @@ -0,0 +1,4 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[14],{"1O6C":function(t,e,n){"use strict";var o,i,r,s,a,u,h,l;n.d(e,"a",function(){return l}),o=n("mrSG"),i=n("q1tI"),r=n("TSYQ"),s=n("+EG+"),a=n("jAh7"),u=n("QpNh"),h=n("aYmi"),l=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._manager=new a.OverlapManager,e._handleSlot=function(t){e._manager.setContainer(t)},e}return o.__extends(e,t),e.prototype.render=function(){var t=this.props,e=t.rounded,n=void 0===e||e,a=t.shadowed,l=void 0===a||a,c=t.fullscreen,d=void 0!==c&&c,p=t.className,_=r(p,h.dialog,n&&h.rounded,l&&h.shadowed,d&&h.fullscreen),g=Object(u.a)(this.props);return i.createElement(i.Fragment,null,i.createElement(s.b.Provider,{value:this._manager},i.createElement("div",o.__assign({},g,{className:_,style:this._createStyles(),ref:this.props.reference,onFocus:this.props.onFocus,onMouseDown:this.props.onMouseDown,onMouseUp:this.props.onMouseUp,onClick:this.props.onClick,onKeyDown:this.props.onKeyDown,tabIndex:-1}),this.props.children)),i.createElement(s.a,{reference:this._handleSlot}))},e.prototype._createStyles=function(){var t=this.props,e=t.bottom,n=t.left,o=t.width;return{bottom:e,left:n,right:t.right,top:t.top,zIndex:t.zIndex,maxWidth:o,height:t.height}},e}(i.PureComponent)},AiMB:function(t,e,n){"use strict";var o,i,r,s,a,u,h,l;n.d(e,"a",function(){return h}),n.d(e,"b",function(){return l}),o=n("mrSG"),i=n("q1tI"),r=n("i8i4"),s=n("0waE"),a=n("jAh7"),u=n("+EG+"),h=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._uuid=Object(s.guid)(),e}return o.__extends(e,t),e.prototype.componentWillUnmount=function(){this._manager().removeWindow(this._uuid)},e.prototype.render=function(){return r.createPortal(i.createElement(l.Provider,{value:this},this.props.children),this._manager().ensureWindow(this._uuid))},e.prototype.moveToTop=function(){this._manager().moveToTop(this._uuid)},e.prototype._manager=function(){return null===this.context?Object(a.getRootOverlapManager)():this.context},e.contextType=u.b,e}(i.PureComponent),l=i.createContext(null)},QpNh:function(t,e,n){"use strict";function o(t){var e,n,o,r,s,a=Object.entries(t).filter(i),u={};for(e=0,n=a;eo&&(t=o-e),t
{{text}}'+s+'
{{^removeOkButton}}
{{/removeOkButton}}',{captionClassName:r,classSuffix:e.classSuffix||"",text:o,removeOkButton:e&&e.removeOkButton})),n.modalDialog.find("._tv-button.ok").on("click",function(){n.destroy(),e.onOkButtonClick&&e.onOkButtonClick()}),n.positionDialog(),n.applyHandlers(!1,{doNotCloseOnBgClickIfShadowbox:a,beforeDestroy:e.onClose}),n.modalDialog},showCustomDialog:function(t){function o(t){n.destroy(),t.preventDefault()}return n.createModalDialog(t.title||$.t("Dialog"),{addClass:""}),n.modalDialog.find("._tv-dialog").css("width",t.width||"400px"),n.modalDialog.find("._tv-dialog-content").html('
'+(t.html||$.t("Content"))+"
"),n.modalDialog.find(".ok").click(o),n.modalDialog.find("form").submit(o),n.modalDialog.find(".cancel").click(o),n.modalDialog.find("._tv-dialog-title-close").click(o),n.positionDialog(),n.applyHandlers(), +n.modalDialog},createModalDialog:function(t,o){var e,i;return o=o||{},null!==n.modalDialog&&n.destroy(),n.modalDialog=$('
'+(o.noHeader?"":'
'+(o.noClose?"":'')+''+t+"
")+'
').appendTo($("body")).data("title",t),n._addMessageCloseButton(n.modalDialog.find("._tv-dialog-error")),n._addMessageCloseButton(n.modalDialog.find("._tv-dialog-message")),o.noShadowBox&&n.modalDialog.addClass("transparent"),o.addClass&&n.modalDialog.addClass(o.addClass),o.width&&n.modalDialog.find("._tv-dialog").css({width:o.width}),o.content&&n.modalDialog.find("._tv-dialog-content").html(o.content),(e=$(".fancybox-overlay")).length&&(i=e.css("z-index"),$("._tv-dialog-shadowbox").css("z-index",i+1)),o.draggable&&s(n.modalDialog).draggable(n._constrainDraggableOptionsIfNeeded({handle:n.modalDialog.find("._tv-dialog-title")})),o.zIndex&&n.modalDialog.css("z-index",o.zIndex),n.modalDialog},_addMessageCloseButton:function(t){var o=$(e("BhuR")).attr({class:"close",title:$.t("Close message")});t.append(o),$(o).on("click",function(){t.animate({marginTop:n.NOTIFICATION_ANIMATION_START_OFFSET,opacity:0},"fast",function(){t.hide()})})},createDialog:function(t,o){var e,d,r,c,u,g;return n.isOpen(t)?((e=n.get(t)).find("._tv-dialog-content").html(""),e.data("new",!1),e):(d=(o=o||{}).ownerDocument||document,c=(r=l(d)).ensureWindow(t,{position:"relative"}),e=$(i.render('
{{^hideTitle}} {{&title}}{{/hideTitle}}{{^hideCloseCross}}{{/hideCloseCross}}
',{addClass:o.addClass||"",hideTitle:o.hideTitle,hideCloseCross:o.hideCloseCross,title:t}),d).appendTo(c),n._addMessageCloseButton(e.find("._tv-dialog-error")),n._addMessageCloseButton(e.find("._tv-dialog-message")),o.width&&e.css({width:o.width}),o.content&&e.find("._tv-dialog-content").html(o.content),u=0,u=o.zIndex?o.zIndex:n.dialogs&&n.dialogs.length?a($.map(n.dialogs,function(t){return parseInt((t.dialog||t).css("z-index"),10)}))+1:110,e.css("z-index",u),e.data("new",!0),e.data("title",t),e.data("id",n.dialogs.length+1),n.dialogs.push({title:t,dialog:e,id:n.dialogs.length+1}),e.on("mousedown touchstart",function(){r.moveToTop(t)}),g={start:function(t,o){var e,i,a=o.helper.css("z-index"),s=0,l=null;for(e=0;es&&(s=i,l=n.dialogs[e].dialog) +;o.helper.css("z-index",s),l.css("z-index",a)}},o.dragHandle?g.handle=o.dragHandle:o.hideTitle||(g.handle="._tv-dialog-title"),o.dragOptions&&$.extend(g,o.dragOptions),s(e).draggable(n._constrainDraggableOptionsIfNeeded(g)),e)},positionDialog:function(t,o,e){function i(){a.css("margin-left",-Math.round(a.outerWidth()/2)+"px"),a.css("margin-top",-Math.round(a.outerHeight()/2)+"px")}var a,s,l,d,r,c,u,g,p,f;e=e||{},o=o||e.position,t?(l=(s=t.prop("ownerDocument")).defaultView,d=t.width(),r=t.height(),c=$(l).width(),u=$(l).height(),o&&o.top&&o.left?(p=e.forcePosition?o.left:Math.max(2,Math.min(c-d-4,o.left))+"px",g=e.forcePosition?o.top:Math.max(2,Math.min(u-r-4,o.top))+"px"):o&&o.considerScroll?(f=$(s),p=Math.round((c-d)/2+f.scrollLeft())+"px",g=Math.round((u-r)/2+f.scrollTop())+"px"):(p=Math.round((c-d)/2)+"px",g=Math.round((u-r)/2)+"px"),e.fadeIn?t.css({left:p,top:g}).hide().fadeIn("fast"):e.smooth?t.animate({left:p,top:g}):t.css({left:p,top:g})):(t=n.modalDialog,a=t.find("._tv-dialog"),i(),a.resize(i))},applyHandlers:function(t,o){var e,i,a,s=!t||t===this.modalDialog;o=o||{},e=s?function(){n.destroy()}:function(){n.destroy(t.data("title"))},t=t||n.modalDialog.find("._tv-dialog"),i=t.prop("ownerDocument"),o.beforeDestroy&&t.on("destroy",o.beforeDestroy),t.find("._tv-dialog-title ._tv-dialog-title-close, .js-dialog-close").on("click",function(t){o.closeHandler&&"function"==typeof o.closeHandler?o.closeHandler(t):e()}),o.doNotCloseOnBgClick||setTimeout(function(){$(i).on("mousedown.closeDialog",function(n){var a=$(n.target).parents().andSelf();a.is(t)||o.doNotCloseOnBgClickIfShadowbox&&a.is("._tv-dialog-shadowbox, .tv-dialog__modal-wrap")||a.is(".colorpicker, .charts-popup-list, ._tv-dialog, .tvcolorpicker-popup, .symbol-edit-popup, .ui-datepicker, .clockpicker-popover, .pac-container, .context-menu-wrapper")||($(i).off("mousedown.closeDialog"),e())})},0),t.find('input[type="checkbox"]').change(function(){var t=$(this),o=t.next("._tv-dialog-checkbox-mask");o.toggleClass("disabled",t.prop("disabled")).toggleClass("_tv-dialog-checkbox-mask-active",t.is(":checked"))}),a=t.find('input[type="text"]').focus(function(){$(this).addClass("_tv-dialog-content-textactive")}).blur(function(){$(this).removeClass("_tv-dialog-content-textactive")}).first(),Modernizr.mobiletouch||o.notFocusFirst||a.focus(),t.find('input[type="password"]').focus(function(){$(this).addClass("_tv-dialog-content-textactive")}).blur(function(){$(this).removeClass("_tv-dialog-content-textactive")}),t.find("textarea").focus(function(){$(this).addClass("_tv-dialog-content-textareaactive")}).blur(function(){$(this).removeClass("_tv-dialog-content-textareaactive")}),t.find("._tv-dialog-checkbox-mask").click(function(){var t=$(this).prev();t.prop("disabled")||(t.prop("checked",!t[0].checked),t.change())}),o.doNotCloseOnEsc||$(i).bind("keyup.hideDialog",function(o){if(27===o.keyCode)return t?n.destroy(t.data("title")):n.destroy(),!1}),o.processEnterButton&&$(i).bind("keyup.confirmAndCloseDialog",function(t){ +13===t.keyCode&&"textarea"!==t.target.tagName.toLowerCase()&&(o.processEnterButton.click(),$(i).unbind("keyup.confirmAndCloseDialog"))})},showError:function(t,o,e){n.showMessage(t,o,$.extend(e||{},{isError:!0}))},showMessage:function(t,o,e){var i,a,s;o||(o=$("._tv-dialog")),i=(e=e||{}).isError?"_tv-dialog-error":"_tv-dialog-message",s=(a=o.find("."+i)).find(".message"),e.html?s.html("string"==typeof e.html?e.html:t):s.text(t),s.css("width",o.width()).toggleClass("selectable",Boolean(e.selectable)),a.toggleClass("with-close",Boolean(e.withClose)).css({marginTop:n.NOTIFICATION_ANIMATION_START_OFFSET,opacity:"0"}).show().animate({marginTop:0,opacity:1},"fast"),e.withClose||(e.hideWithoutAnimation?a.on("touchstartoutside mousedownoutside keydownoutside",function t(){a.hide(),a.off("touchstartoutside mousedownoutside keydownoutside",t)}):a.on("touchstartoutside mousedownoutside keydownoutside",function t(){a.animate({marginTop:n.NOTIFICATION_ANIMATION_START_OFFSET,opacity:0},"fast",function(){a.hide()}),a.off("touchstartoutside mousedownoutside keydownoutside",t)}))},isOpen:function(t){for(var o=0;oi&&(n-=t-i,n=Math.max(0,n),o.height(n))}},t.exports.TVOldDialogs=n}).call(this,e("Kxc7"),e("OiQe"))},PVgW:function(t,o,e){"use strict";function i(t){return t=Math.abs(t),!Object(r.isInteger)(t)&&t>1&&(t=parseFloat(t.toString().replace(/^.+\./,"0."))),0').appendTo(l.parent()),e=$('
').html(c).appendTo(o),i=$('
').html(c).appendTo(o),o.on("mousedown",function(t){t.preventDefault(),l.focus()}),e.click(function(){l.is(":disabled")||a(l)}),i.click(function(){l.is(":disabled")||s(l)}),l.keydown(function(t){l.is(":disabled")||(38===t.keyCode?e.addClass("i-active"):40===t.keyCode&&i.addClass("i-active"))}),l.keyup(function(t){l.is(":disabled")||(38===t.keyCode?(a(l),e.removeClass("i-active")):40===t.keyCode&&(s(l),i.removeClass("i-active")))}),l.mousewheel(function(t){t.deltaY*(t.deltaFactor/100)>0?e.click():i.click()}))})}},"R4+T":function(t,o){t.exports=''},jAh7:function(t,o,e){"use strict";function i(t){var o,e,i;return void 0===t&&(t=document),null!==(o=t.getElementById("overlap-manager-root"))?Object(n.ensureDefined)(l.get(o)):(e=new s(t),i=function(t){var o=t.createElement("div");return o.style.position="absolute",o.style.zIndex=150..toString(),o.style.top="0px",o.style.left="0px",o.id="overlap-manager-root",o}(t),l.set(i,e),e.setContainer(i),t.body.appendChild(i),e)}var n,a,s,l;e.r(o),e.d(o,"OverlapManager",function(){return s}),e.d(o,"getRootOverlapManager",function(){return i}),n=e("Eyy1"),a=function(){function t(){this._storage=[]}return t.prototype.add=function(t){this._storage.push(t)},t.prototype.remove=function(t){this._storage=this._storage.filter(function(o){return t!==o})},t.prototype.has=function(t){return this._storage.includes(t)},t.prototype.getItems=function(){return this._storage},t}(),s=function(){function t(t){void 0===t&&(t=document),this._storage=new a,this._windows=new Map,this._index=0,this._document=t,this._container=t.createDocumentFragment()}return t.prototype.setContainer=function(t){var o=this._container,e=null===t?this._document.createDocumentFragment():t;!function(t,o){Array.from(t.childNodes).forEach(function(t){t.nodeType===Node.ELEMENT_NODE&&o.appendChild(t)})}(o,e),this._container=e},t.prototype.registerWindow=function(t){this._storage.has(t)||this._storage.add(t)},t.prototype.ensureWindow=function(t,o){var e,i;return void 0===o&&(o={position:"fixed"}),void 0!==(e=this._windows.get(t))?e:(this.registerWindow(t),(i=this._document.createElement("div")).style.position=o.position,i.style.zIndex=this._index.toString(), +i.dataset.id=t,this._container.appendChild(i),this._windows.set(t,i),++this._index,i)},t.prototype.unregisterWindow=function(t){this._storage.remove(t);var o=this._windows.get(t);void 0!==o&&(null!==o.parentElement&&o.parentElement.removeChild(o),this._windows.delete(t))},t.prototype.getZindex=function(t){var o=this.ensureWindow(t);return parseInt(o.style.zIndex||"0")},t.prototype.moveToTop=function(t){this.getZindex(t)!==this._index&&(this.ensureWindow(t).style.zIndex=(++this._index).toString())},t.prototype.removeWindow=function(t){this.unregisterWindow(t)},t}(),l=new WeakMap},"y1L/":function(t,o,e){},zjLg:function(t,o,e){}}]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/16.cc58f582c191485d9392.css b/public/charting_library/static/bundles/16.cc58f582c191485d9392.css new file mode 100644 index 0000000..c714af6 --- /dev/null +++ b/public/charting_library/static/bundles/16.cc58f582c191485d9392.css @@ -0,0 +1 @@ +.header-dpl-vtN_-{position:relative;font-size:14px;font-weight:700;color:#212121;padding:30px 60px 30px 30px;border-bottom:1px solid;border-bottom-color:#dadde0}html.theme-dark .header-dpl-vtN_-{border-bottom-color:#363c4e;color:#c5cbce}@media screen and (max-width:767px){.header-dpl-vtN_-{padding:20px 60px 20px 20px}}.header-dpl-vtN_- .close-3kPn4OTV-{position:absolute;padding:15px;top:17px;right:15px;cursor:pointer;opacity:.5;transition:opacity .35s ease;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}@media screen and (max-width:767px){.header-dpl-vtN_- .close-3kPn4OTV-{top:7px;right:7px}}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.header-dpl-vtN_- .close-3kPn4OTV-:hover{opacity:1;transition-duration:.06s}}.header-dpl-vtN_- .close-3kPn4OTV- svg{display:block;width:13px;height:13px;fill:#4a4a4a}html.theme-dark .header-dpl-vtN_- .close-3kPn4OTV- svg{fill:#c5cbce}.footer-2Zoji8zg-{padding:0 30px 30px}@media screen and (max-width:767px){.footer-2Zoji8zg-{padding:0 20px 20px}}.body-2N-vuwQW-{flex-grow:1;padding:30px;overflow:auto;-webkit-overflow-scrolling:touch}.body-2N-vuwQW-::-webkit-scrollbar{width:5px;height:5px}.body-2N-vuwQW-::-webkit-scrollbar-thumb{border:1px solid;border-color:#f1f3f6;border-radius:3px;background-color:#9db2bd}html.theme-dark .body-2N-vuwQW-::-webkit-scrollbar-thumb{background-color:#363c4e;border-color:#1c2030}.body-2N-vuwQW-::-webkit-scrollbar-track{background-color:transparent;border-radius:3px}@media screen and (max-width:767px){.body-2N-vuwQW-{padding:20px}}.message-2o-rtQm0-{position:absolute;left:0;top:0;right:0;font-size:14px;padding:30px;text-align:center;color:#37bc9b;background:#ebf9f5;transition:opacity .2625s ease,transform .2625s ease}html.theme-dark .message-2o-rtQm0-{background:#21384d}.message-2o-rtQm0-.error-2EW0C6z--{color:#ff4a68;background:#ffedf0}html.theme-dark .message-2o-rtQm0-.error-2EW0C6z--{background:#6f2626} \ No newline at end of file diff --git a/public/charting_library/static/bundles/16.cc58f582c191485d9392.rtl.css b/public/charting_library/static/bundles/16.cc58f582c191485d9392.rtl.css new file mode 100644 index 0000000..2ae2f1e --- /dev/null +++ b/public/charting_library/static/bundles/16.cc58f582c191485d9392.rtl.css @@ -0,0 +1 @@ +.header-dpl-vtN_-{position:relative;font-size:14px;font-weight:700;color:#212121;padding:30px 30px 30px 60px;border-bottom:1px solid;border-bottom-color:#dadde0}html.theme-dark .header-dpl-vtN_-{border-bottom-color:#363c4e;color:#c5cbce}@media screen and (max-width:767px){.header-dpl-vtN_-{padding:20px 20px 20px 60px}}.header-dpl-vtN_- .close-3kPn4OTV-{position:absolute;padding:15px;top:17px;left:15px;cursor:pointer;opacity:.5;transition:opacity .35s ease;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}@media screen and (max-width:767px){.header-dpl-vtN_- .close-3kPn4OTV-{top:7px;left:7px}}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.header-dpl-vtN_- .close-3kPn4OTV-:hover{opacity:1;transition-duration:.06s}}.header-dpl-vtN_- .close-3kPn4OTV- svg{display:block;width:13px;height:13px;fill:#4a4a4a}html.theme-dark .header-dpl-vtN_- .close-3kPn4OTV- svg{fill:#c5cbce}.footer-2Zoji8zg-{padding:0 30px 30px}@media screen and (max-width:767px){.footer-2Zoji8zg-{padding:0 20px 20px}}.body-2N-vuwQW-{flex-grow:1;padding:30px;overflow:auto;-webkit-overflow-scrolling:touch}.body-2N-vuwQW-::-webkit-scrollbar{width:5px;height:5px}.body-2N-vuwQW-::-webkit-scrollbar-thumb{border:1px solid;border-color:#f1f3f6;border-radius:3px;background-color:#9db2bd}html.theme-dark .body-2N-vuwQW-::-webkit-scrollbar-thumb{background-color:#363c4e;border-color:#1c2030}.body-2N-vuwQW-::-webkit-scrollbar-track{background-color:transparent;border-radius:3px}@media screen and (max-width:767px){.body-2N-vuwQW-{padding:20px}}.message-2o-rtQm0-{position:absolute;right:0;top:0;left:0;font-size:14px;padding:30px;text-align:center;color:#37bc9b;background:#ebf9f5;transition:opacity .2625s ease,transform .2625s ease}html.theme-dark .message-2o-rtQm0-{background:#21384d}.message-2o-rtQm0-.error-2EW0C6z--{color:#ff4a68;background:#ffedf0}html.theme-dark .message-2o-rtQm0-.error-2EW0C6z--{background:#6f2626} \ No newline at end of file diff --git a/public/charting_library/static/bundles/16.e0d00f8a564954896734.js b/public/charting_library/static/bundles/16.e0d00f8a564954896734.js new file mode 100644 index 0000000..1be04ea --- /dev/null +++ b/public/charting_library/static/bundles/16.e0d00f8a564954896734.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[16],[]]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/17.00b04a06a8cd9c6f5f6c.js b/public/charting_library/static/bundles/17.00b04a06a8cd9c6f5f6c.js new file mode 100644 index 0000000..d0e5e33 --- /dev/null +++ b/public/charting_library/static/bundles/17.00b04a06a8cd9c6f5f6c.js @@ -0,0 +1,5 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[17],{bR4N:function(t,e,a){"use strict";var n,o=a("wmOI").ESC,s=a("0waE").guid,i=a("jAh7").getRootOverlapManager,p=function(t,e,n){var l,c,r,u,d,h,f=".popup-menu";t=$(t),(n=n||{}).activeClass=n.activeClass||"",l=(n.event||"click")+f,n.hideEvent&&(c=n.hideEvent+f),u=r=function(){},d={},h=function(l,h,v){function m(e){var a=$(e.target).parents().andSelf();a.is(w)||a.is(t)||a.is(".charts-popup-tab-headers, .charts-popup-itemheader")||u()}function g(t){if(d.preventFirstProcessClick)d.preventFirstProcessClick=!1;else{var e=$(t.target).parents().andSelf();e.is(".charts-popup-tab-headers, .charts-popup-itemheader")||n.notCloseOnButtons&&e.is(".icon-delete")||u()}}function b(t){t.keyCode===o&&u()}var C,w,y,T,x,D,_,k,S,M,A,I,N,L,E,O,W,P,R,z,B,F,G,H=s(),J=l.target.ownerDocument,U=J.defaultView,V=i(J),K=h||e;if("function"==typeof K&&(K=K()),$(this).hasClass("open")||$(this).hasClass("active"))return l.preventDefault(),u(),void(C=d.scrollTop);switch(u=function(){d.scrollTop=w.scrollTop(),w.remove(),V.removeWindow(H),t.removeClass("active open "+n.activeClass),t.data("popup-menu",null),$(J).off("click",g),$(J).off("mousedown",m),Modernizr.mobiletouch&&$(J).off("touchstart.chartgui",m),$(J).off("selectstart."+f),J.removeEventListener("keydown",b,!1),u=r,n.onRemove&&n.onRemove()},t.addClass("active open "+n.activeClass),w=$('
'),n.addClass&&w.addClass(n.addClass),n.zIndex&&w.css("z-index",n.zIndex),y=w,n.listInner&&(y=$('
').appendTo(y)),n.listTable&&(y=$('').text(o.title));else{if(o.separator)return h=$(''),void i.append(h);h=$(''),o.url&&h.attr("href",o.url),o.target&&h.attr("target",o.target),s||h.addClass("first"),"function"==typeof o.active?o.active(o)&&h.addClass("active"):o.active&&h.addClass("active"),o.addClass&&h.addClass(o.addClass),o.addData&&h.data(o.addData),o.disabled&&h.addClass("disabled"),"function"==typeof o.action&&(f=o.action,v=function(t){$(t.target).parents().andSelf().is(T)||(f.apply(h,arguments),!o.url&&t&&"function"==typeof t.preventDefault&&t.preventDefault())},n.upAction?h.bind("mouseup",v):h.bind("click",v)),o.date?(m=$('').appendTo(h),$('').text(o.date||"").appendTo(h)):o.icon&&!n.svg?((g=$('').appendTo(h)).css("background-image",o.icon.image||""),o.icon.offset&&g.css("background-position","string"==typeof o.icon.offset?o.icon.offset:o.icon.offset.x+"px "+o.icon.offset.y+"px"),m=$('').appendTo(h)):!0===n.svg&&o.svg?(n.wrapIcon?h.append($('').addClass(o.iconClass).append(o.svg)):h.append(o.svg),m=$('').appendTo(h)):o.iconClass?(h.append($('').addClass(o.iconClass)),m=$('').appendTo(h)):m=$('').appendTo(h),o.html?m.html(o.html):m.text(TradingView.clean(o.title,!0)||""),b=$('').appendTo(h),o.shortcut&&b.text(o.shortcut.keys),"function"==typeof o.deleteAction&&(C=o.deleteAction,y=o.deleteAction.title||$.t("Delete"),(T=$('')).html(a("uo4K")),T.attr("title",y),T.on("click",function(t){C.apply(h,arguments),t.preventDefault()}),h.append(T)),o.buttons instanceof Array&&o.buttons.length&&o.buttons.forEach(function(t){t.el instanceof $||(t.el=$(t.el)),t.el.appendTo(h),t.handler&&t.el.on("click",function(e){t.handler.apply(h,arguments)})}),void 0!==o.counter&&("function"==typeof o.counter?$('').html(o.counter()).appendTo(h):(x=o.counterBlue?"blue":"",$('').text(o.counter+"").addClass(x).appendTo(h))),i.append(h),t.data("popup-menu",i)}}(this,e,y)}),c||(d.preventFirstProcessClick=!0),$(J).on("click",g),$(J).on("mousedown",m),J.addEventListener("keydown",b,!1),Modernizr.mobiletouch&&$(J).on("touchstart.chartgui",m),n.upAction&&$(J).on("selectstart.popup-menu",function(){return!1}),w.appendTo(V.ensureWindow(H)),T=J.documentElement.clientWidth,x=J.documentElement.clientHeight,D=t.outerWidth(),_=t.outerHeight(),k=t.offset(),C=$(U).scrollTop()||0,k.top-=C, +k.top=Math.round(k.top),k.left=Math.round(k.left),S=w.outerWidth(),M=w.outerHeight(),A=void 0!==n.viewportSpacing?n.viewportSpacing:10,I=n.popupSpacing?~~n.popupSpacing:1,N=n.popupDrift?~~n.popupDrift:0,L=M-w.height(),E="down",n.direction&&(E="function"==typeof n.direction?n.direction():n.direction),O=!!n.reverse,"down"===E?(W=x-k.top-_-I-A-L,P=k.top-I-A-L,WW&&(E="up")):"right"===E&&(R=T-k.left-D-I-A-L,z=k.left-I-A-L,RR&&(E="left")),E){case"down":case"up":"down"===E?w.css("top",k.top+_+I+"px"):w.css("bottom",x-k.top+I+"px").css("top","auto"),O?w.css("left",Math.max(k.left+N+D-S,A)+"px").css("right","auto"):w.css("left",k.left+N+"px").css("right","auto");break;case"right":case"left":I=Math.max(I,4),"right"===E?w.css("left",Math.floor(k.left+D+I)+"px").css("right","auto"):w.css("left",Math.floor(Math.max(k.left-S-I,A))+"px").css("right","auto"),O?w.css("top",Math.floor(Math.max(k.top+N+_-M,A))+"px"):w.css("top",Math.floor(k.top+N)+"px")}w.show(),B=k.top,"up"===E||{left:1,right:1}[E]&&O?"up"!==E?B+=_:B-=_+I+L+A:B=x-B-_-2*I-L,w.height()>B&&w.addClass("popup-menu-scroll-y"),w.css("max-height",B+"px"),n.careRightBorder&&(F=T+$(U).scrollLeft(),parseInt(w.css("left"))+w.width()+A>F&&w.css("left",F-w.width()-A+"px").css("right","auto")),n.careBottomBorder&&parseInt(w.css("top"))+w.height()+A>x+C&&w.css("top",x-w.height()-A+C+"px"),G=w.offset(),w.css({position:"fixed",left:G.left-$(J).scrollLeft(),right:"auto"}),w[0].scrollHeight>w.height()&&w.addClass("popup-with-scroll"),l&&l.preventDefault()},l&&t.bind(l,h),c&&t.bind(c,function(){u()}),n.runOpened&&h()};p.TabGroup=function t(e){if(!(this instanceof t))return new t(e);e=e||{},this.tabs=[],"function"==typeof e.onChange&&(this.onChange=e.onChange)},p.TabGroup.prototype.appendTab=function(t,e,a){if(null==t?t="":t+="",e||(e=[]),a||(a={}),!Array.isArray(e))throw new TypeError("items must be an array");return this.tabs.push({name:t,items:e,active:!!a.active}),e},p.Header=function t(e){if(!(this instanceof t))return new t(e);this.title=e},p.Group=function t(e){if(!(this instanceof t))return new t(e);e=e||{},this.items=[],this.title=null==e.title?"":e.title+"",this.collapsible=!!e.collapsible,this.collapsed=!!e.collapsed,"function"==typeof e.onChange&&(this.onChange=e.onChange)},p.Group.prototype.push=function(){this.items.push.apply(this.items,arguments)},e.bindPopupMenu=p,n=function(t){(t=$(t)).unbind(".popup-menu"),t.removeData("popup-menu")},e.unbindPopupMenu=n},guTw:function(t,e,a){"use strict";(function(e){function n(t,a,n){var o={saveAsText:$.t("Save As..."),applyDefaultText:$.t("Apply Defaults")};this._toolName=t,this._applyTemplate=a,this._options=$.extend(o,n||{}),this._list=[],e.enabled("charting_library_base")||(this.templatesDeferred=this.loadData())}var o=a("bR4N").bindPopupMenu,s=a("UJLt").SaveRenameDialog,i=a("hkLy").InputField,p=a("oNDq").createConfirmDialog,l=a("uOxu").getLogger("Chart.LineToolTemplatesList");n._cache={},n.prototype.getData=function(){return this._list},n.prototype.loadData=function(){var t=this +;return this._toolName in n._cache?(this._list=n._cache[this._toolName],$.Deferred().resolve()):$.get("/drawing-templates/"+this._toolName+"/",function(e){t._list=e,n._cache[t._toolName]=e}).error(function(){l.logWarn("Failed to load drawing template: "+t._toolName)})},n.prototype.templatesLoaded=function(){return this.templatesDeferred},n.prototype.invalidateToolCache=function(){delete n._cache[this._toolName]},n.prototype.createButton=function(t){var e,a=this;return t=$.extend({},t,a._options),e=$("").addClass(t.buttonClass?t.buttonClass:"_tv-button").html(t.buttonInner?t.buttonInner:$.t("Template")+''),o(e,null,{event:"button-popup",hideEvent:"hide-popup",zIndex:t.popupZIndex,activeClass:t.popupActiveClass,direction:t.popupDirection}),e.bind("click",function(e){var n,o,s;e.stopPropagation(),$(this).is("active")||(n=[],"function"==typeof t.getDataForSaveAs&&(o=function(e){var n=JSON.stringify(t.getDataForSaveAs());a.saveTemplate(e,n)},n.push({title:t.saveAsText,action:a.showSaveDialog.bind(a,o),addClass:"special"})),"function"==typeof t.defaultsCallback&&n.push({title:t.applyDefaultText,action:t.defaultsCallback,addClass:"special"}),s=[],$.each(a._list,function(e,n){s.push({title:n,action:function(){a.loadTemplate.call(a,n,t.loadTemplateCallback)},deleteAction:function(){runOrSignIn(function(){var t=$.t("Do you really want to delete Drawing Template '{0}' ?").format(n);p({type:"modal",content:t}).then(function(t){t.on("action:yes",function(t){a.removeTemplate.call(a,n),t.close()}),t.open()})},{source:"Delete line tool template"})}})}),s.length&&(s.sort(function(t,e){return(t=t.title.toUpperCase())===(e=e.title.toUpperCase())?0:t>e?1:-1}),n.push({separator:!0}),n=n.concat(s)),$(this).trigger("button-popup",[n]))}),e},n.prototype.loadTemplate=function(t,e){var a=this;return $.get("/drawing-template/"+this._toolName+"/?templateName="+encodeURIComponent(t),function(t){a._applyTemplate(JSON.parse(t.content)),e&&e()}).error(function(t){l.logWarn(t.responseText)})},n.prototype.removeTemplate=function(t){if(t){$.post("/remove-drawing-template/",{name:t,tool:this._toolName}).error(function(t){l.logWarn(t.responseText)}),this.invalidateToolCache(),this._list=$.grep(this._list,function(e){return e!==t})}},n.prototype.saveTemplate=function(t,e){var a,n=this;t&&e&&(t=TradingView.clean(t),a=-1!==$.inArray(t,n._list),function(){var o={name:t,tool:n._toolName,content:e},s=function(){a||n._list.push(t)};$.post("/save-drawing-template/",o,s).error(function(t){l.logWarn(t.responseText)}),n.invalidateToolCache()}())},n.prototype.deleteAction=function(t){var e=t,a=this;runOrSignIn(function(){var t=$.t(" Do you really want to delete Drawing Template '{0}' ?").format(e);p({type:"modal",content:t}).then(function(t){t.on("action:yes",function(t){a.removeTemplate.call(a,e),t.close()}),t.open()})},{source:"Delete line tool template"})},n.prototype.showSaveDialog=function(t){var e=this,a="text",n=function(t){return TradingView.clean(t[a])},o=new s({fields:[new i({name:a,label:$.t("Template name")+":", +maxLength:64,error:$.t("Please enter template name")})],title:$.t("Save Drawing Template As"),confirm:{shouldShowDialog:function(t){return-1!==e._list.indexOf(n(t))},getMessage:function(t){return $.t("Drawing Template '{0}' already exists. Do you really want to replace it?").format(n(t))}}});runOrSignIn(function(){o.show().then(function(e){t(e[a])})},{source:"Save line tool template",sourceMeta:"Chart"})},t.exports=n}).call(this,a("Kxc7"))},uo4K:function(t,e){t.exports=''}}]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/18.183d41ade16dae257526.css b/public/charting_library/static/bundles/18.183d41ade16dae257526.css new file mode 100644 index 0000000..71a8e58 --- /dev/null +++ b/public/charting_library/static/bundles/18.183d41ade16dae257526.css @@ -0,0 +1 @@ +.inputWrapper-6bNZbTW4-{display:flex;flex-grow:1;position:relative;border-radius:2px 2px 2px 2px}.textInput-3WRWEmm7-{background-color:#fff;border:1px solid;box-sizing:border-box;color:#535353;display:flex;font-size:13px;height:34px;padding:0 12px;transition:border-color .35s ease 0s,background-color .35s ease 0s;width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:inherit;border-color:#dadde0;flex:1}html.theme-dark .textInput-3WRWEmm7-{border-color:#363c4e;color:#f2f3f5;background-color:#131722}.textInput-3WRWEmm7-:-ms-input-placeholder,.textInput-3WRWEmm7-::-ms-input-placeholder{color:#adaeb0;opacity:1}.textInput-3WRWEmm7-::placeholder{color:#adaeb0;opacity:1}html.theme-dark .textInput-3WRWEmm7-:-ms-input-placeholder,html.theme-dark .textInput-3WRWEmm7-::-ms-input-placeholder{color:#4f5966}html.theme-dark .textInput-3WRWEmm7-::placeholder{color:#4f5966}.textInput-3WRWEmm7-[readonly],.textInput-3WRWEmm7-[readonly]:focus{border-color:#dadde0;color:#8a8a8a}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.textInput-3WRWEmm7-[readonly]:hover{border-color:#dadde0;color:#8a8a8a}}html.theme-dark .textInput-3WRWEmm7-[readonly],html.theme-dark .textInput-3WRWEmm7-[readonly]:focus{color:#758696}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .textInput-3WRWEmm7-[readonly]:hover{color:#758696}}html.theme-dark .textInput-3WRWEmm7-[readonly],html.theme-dark .textInput-3WRWEmm7-[readonly]:focus{border-color:#363c4e}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .textInput-3WRWEmm7-[readonly]:hover{border-color:#363c4e}}.textInput-3WRWEmm7-[disabled]{color:#ececec;border-color:#ececec;background-color:#fff;cursor:auto}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.textInput-3WRWEmm7-[disabled]:hover{color:#ececec;border-color:#ececec;background-color:#fff;cursor:auto}}html.theme-dark .textInput-3WRWEmm7-[disabled]{background-color:#131722}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .textInput-3WRWEmm7-[disabled]:hover{background-color:#131722}}html.theme-dark .textInput-3WRWEmm7-[disabled]{border-color:#262b3e}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .textInput-3WRWEmm7-[disabled]:hover{border-color:#262b3e}}html.theme-dark .textInput-3WRWEmm7-[disabled]{color:#262b3e}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .textInput-3WRWEmm7-[disabled]:hover{color:#262b3e}}.textInput-3WRWEmm7-[disabled]:-ms-input-placeholder,.textInput-3WRWEmm7-[disabled]::-ms-input-placeholder{color:#ececec}.textInput-3WRWEmm7-[disabled]::placeholder{color:#ececec}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.textInput-3WRWEmm7-[disabled]:hover:-ms-input-placeholder,.textInput-3WRWEmm7-[disabled]:hover::-ms-input-placeholder{color:#ececec}.textInput-3WRWEmm7-[disabled]:hover::placeholder{color:#ececec}}html.theme-dark .textInput-3WRWEmm7-[disabled]:-ms-input-placeholder,html.theme-dark .textInput-3WRWEmm7-[disabled]::-ms-input-placeholder{color:#262b3e}html.theme-dark .textInput-3WRWEmm7-[disabled]::placeholder{color:#262b3e}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .textInput-3WRWEmm7-[disabled]:hover:-ms-input-placeholder,html.theme-dark .textInput-3WRWEmm7-[disabled]:hover::-ms-input-placeholder{color:#262b3e}html.theme-dark .textInput-3WRWEmm7-[disabled]:hover::placeholder{color:#262b3e}}.textInput-3WRWEmm7-.error-v0663AtN-,.textInput-3WRWEmm7-.error-v0663AtN-[disabled],.textInput-3WRWEmm7-.error-v0663AtN-[readonly]{border-color:#f24965!important}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.textInput-3WRWEmm7-.error-v0663AtN-:hover{border-color:#f24965!important}}.textInput-3WRWEmm7-.success-7iP8kTY5-,.textInput-3WRWEmm7-.success-7iP8kTY5-[disabled],.textInput-3WRWEmm7-.success-7iP8kTY5-[readonly]{border-color:#38b395!important}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.textInput-3WRWEmm7-.success-7iP8kTY5-:hover{border-color:#38b395!important}}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.textInput-3WRWEmm7-:hover{border-color:#c8c8c8;transition-duration:.06s}}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .textInput-3WRWEmm7-:hover{border-color:#4c525e}}.textInput-3WRWEmm7-:focus{border-color:#2196f3!important;transition-duration:.06s}.textInput-3WRWEmm7-.textInputLeftDirection-mlAXPh8V-{text-align:left;direction:ltr}.xsmall-3Ah_Or2--{height:19px}.small-2bmxiJCE-{height:27px}.large-1JDowW2I-{height:48px}.iconed-3ZQvxTot- .textInput-3WRWEmm7-{padding-left:30px}.iconed-3ZQvxTot- .inputIcon-W_Bse-a1-{opacity:.4}.iconed-3ZQvxTot- .inputIcon-W_Bse-a1- svg{display:inline-block;position:absolute;width:14px;height:14px;margin:10px 0 0 10px;fill:#4a4a4a;stroke:#4a4a4a}.clearable-2tabt_rj- .textInput-3WRWEmm7-{display:inline-block;width:100%}.clearable-2tabt_rj- .clearIcon-389FR5J4-{display:inline-flex;position:absolute;right:12px;top:10px;cursor:pointer;opacity:.4}.clearable-2tabt_rj- .clearIcon-389FR5J4- svg{max-width:16px;height:16px;fill:#4a4a4a;stroke:#4a4a4a} \ No newline at end of file diff --git a/public/charting_library/static/bundles/18.183d41ade16dae257526.rtl.css b/public/charting_library/static/bundles/18.183d41ade16dae257526.rtl.css new file mode 100644 index 0000000..cc585cf --- /dev/null +++ b/public/charting_library/static/bundles/18.183d41ade16dae257526.rtl.css @@ -0,0 +1 @@ +.inputWrapper-6bNZbTW4-{display:flex;flex-grow:1;position:relative;border-radius:2px 2px 2px 2px}.textInput-3WRWEmm7-{background-color:#fff;border:1px solid;box-sizing:border-box;color:#535353;display:flex;font-size:13px;height:34px;padding:0 12px;transition:border-color .35s ease 0s,background-color .35s ease 0s;width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:inherit;border-color:#dadde0;flex:1}html.theme-dark .textInput-3WRWEmm7-{border-color:#363c4e;color:#f2f3f5;background-color:#131722}.textInput-3WRWEmm7-:-ms-input-placeholder,.textInput-3WRWEmm7-::-ms-input-placeholder{color:#adaeb0;opacity:1}.textInput-3WRWEmm7-::placeholder{color:#adaeb0;opacity:1}html.theme-dark .textInput-3WRWEmm7-:-ms-input-placeholder,html.theme-dark .textInput-3WRWEmm7-::-ms-input-placeholder{color:#4f5966}html.theme-dark .textInput-3WRWEmm7-::placeholder{color:#4f5966}.textInput-3WRWEmm7-[readonly],.textInput-3WRWEmm7-[readonly]:focus{border-color:#dadde0;color:#8a8a8a}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.textInput-3WRWEmm7-[readonly]:hover{border-color:#dadde0;color:#8a8a8a}}html.theme-dark .textInput-3WRWEmm7-[readonly],html.theme-dark .textInput-3WRWEmm7-[readonly]:focus{color:#758696}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .textInput-3WRWEmm7-[readonly]:hover{color:#758696}}html.theme-dark .textInput-3WRWEmm7-[readonly],html.theme-dark .textInput-3WRWEmm7-[readonly]:focus{border-color:#363c4e}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .textInput-3WRWEmm7-[readonly]:hover{border-color:#363c4e}}.textInput-3WRWEmm7-[disabled]{color:#ececec;border-color:#ececec;background-color:#fff;cursor:auto}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.textInput-3WRWEmm7-[disabled]:hover{color:#ececec;border-color:#ececec;background-color:#fff;cursor:auto}}html.theme-dark .textInput-3WRWEmm7-[disabled]{background-color:#131722}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .textInput-3WRWEmm7-[disabled]:hover{background-color:#131722}}html.theme-dark .textInput-3WRWEmm7-[disabled]{border-color:#262b3e}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .textInput-3WRWEmm7-[disabled]:hover{border-color:#262b3e}}html.theme-dark .textInput-3WRWEmm7-[disabled]{color:#262b3e}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .textInput-3WRWEmm7-[disabled]:hover{color:#262b3e}}.textInput-3WRWEmm7-[disabled]:-ms-input-placeholder,.textInput-3WRWEmm7-[disabled]::-ms-input-placeholder{color:#ececec}.textInput-3WRWEmm7-[disabled]::placeholder{color:#ececec}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.textInput-3WRWEmm7-[disabled]:hover:-ms-input-placeholder,.textInput-3WRWEmm7-[disabled]:hover::-ms-input-placeholder{color:#ececec}.textInput-3WRWEmm7-[disabled]:hover::placeholder{color:#ececec}}html.theme-dark .textInput-3WRWEmm7-[disabled]:-ms-input-placeholder,html.theme-dark .textInput-3WRWEmm7-[disabled]::-ms-input-placeholder{color:#262b3e}html.theme-dark .textInput-3WRWEmm7-[disabled]::placeholder{color:#262b3e}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .textInput-3WRWEmm7-[disabled]:hover:-ms-input-placeholder,html.theme-dark .textInput-3WRWEmm7-[disabled]:hover::-ms-input-placeholder{color:#262b3e}html.theme-dark .textInput-3WRWEmm7-[disabled]:hover::placeholder{color:#262b3e}}.textInput-3WRWEmm7-.error-v0663AtN-,.textInput-3WRWEmm7-.error-v0663AtN-[disabled],.textInput-3WRWEmm7-.error-v0663AtN-[readonly]{border-color:#f24965!important}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.textInput-3WRWEmm7-.error-v0663AtN-:hover{border-color:#f24965!important}}.textInput-3WRWEmm7-.success-7iP8kTY5-,.textInput-3WRWEmm7-.success-7iP8kTY5-[disabled],.textInput-3WRWEmm7-.success-7iP8kTY5-[readonly]{border-color:#38b395!important}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.textInput-3WRWEmm7-.success-7iP8kTY5-:hover{border-color:#38b395!important}}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.textInput-3WRWEmm7-:hover{border-color:#c8c8c8;transition-duration:.06s}}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .textInput-3WRWEmm7-:hover{border-color:#4c525e}}.textInput-3WRWEmm7-:focus{border-color:#2196f3!important;transition-duration:.06s}.textInput-3WRWEmm7-.textInputLeftDirection-mlAXPh8V-{text-align:left;direction:ltr}.xsmall-3Ah_Or2--{height:19px}.small-2bmxiJCE-{height:27px}.large-1JDowW2I-{height:48px}.iconed-3ZQvxTot- .textInput-3WRWEmm7-{padding-right:30px}.iconed-3ZQvxTot- .inputIcon-W_Bse-a1-{opacity:.4}.iconed-3ZQvxTot- .inputIcon-W_Bse-a1- svg{display:inline-block;position:absolute;width:14px;height:14px;margin:10px 10px 0 0;fill:#4a4a4a;stroke:#4a4a4a}.clearable-2tabt_rj- .textInput-3WRWEmm7-{display:inline-block;width:100%}.clearable-2tabt_rj- .clearIcon-389FR5J4-{display:inline-flex;position:absolute;left:12px;top:10px;cursor:pointer;opacity:.4}.clearable-2tabt_rj- .clearIcon-389FR5J4- svg{max-width:16px;height:16px;fill:#4a4a4a;stroke:#4a4a4a} \ No newline at end of file diff --git a/public/charting_library/static/bundles/18.e4c458360dbad4de5cf6.js b/public/charting_library/static/bundles/18.e4c458360dbad4de5cf6.js new file mode 100644 index 0000000..85ee7de --- /dev/null +++ b/public/charting_library/static/bundles/18.e4c458360dbad4de5cf6.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[18],[]]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/19.aba848e28ec755548668.css b/public/charting_library/static/bundles/19.aba848e28ec755548668.css new file mode 100644 index 0000000..a5b87a7 --- /dev/null +++ b/public/charting_library/static/bundles/19.aba848e28ec755548668.css @@ -0,0 +1 @@ +.loader-3Pj8ExOX-{position:absolute;top:0;left:0;right:0;bottom:0;height:100%;margin:0 auto;text-align:center;font-size:0;opacity:1;transition:opacity .35s ease}.loader-3Pj8ExOX-:after{content:" ";display:inline-block;height:100%;vertical-align:middle}.loader-3Pj8ExOX- .item-2n55_7om-{margin-right:2px;margin-left:2px;display:inline-block;vertical-align:middle;width:10px;height:10px;opacity:1;border-radius:100%;transform:translateY(0) scale(.6);transition:transform .35s cubic-bezier(.68,-.55,.265,1.55);animation:tv-button-loader-SKpJjjYw- .96s infinite ease-in-out both}.loader-3Pj8ExOX- .item-2n55_7om-:nth-child(2){transition-delay:.11666667s;animation-delay:.151s}.loader-3Pj8ExOX- .item-2n55_7om-:nth-child(3){transition-delay:.23333333s;animation-delay:.32s}.loader-3Pj8ExOX- .item-2n55_7om-.black-eFIQWyf4-{background-color:#757575}.loader-3Pj8ExOX- .item-2n55_7om-.white-2Ma0ajvT-{background-color:#fff}.loader-3Pj8ExOX- .item-2n55_7om-.gray-24fvVR0S-{background-color:#8797a5}.loader-3Pj8ExOX-.loader-initial{opacity:.1}.loader-3Pj8ExOX-.loader-initial .item-2n55_7om-{animation:none;transform:translateY(12px) scale(.6)}.loader-3Pj8ExOX-.loader-appear{opacity:1;transition:opacity .7s ease}.loader-3Pj8ExOX-.loader-appear .item-2n55_7om-{animation:none;transform:translateY(0) scale(.6)}@keyframes tv-button-loader-SKpJjjYw-{0%,to{transform:scale(.6)}50%{transform:scale(.9)}} \ No newline at end of file diff --git a/public/charting_library/static/bundles/19.aba848e28ec755548668.rtl.css b/public/charting_library/static/bundles/19.aba848e28ec755548668.rtl.css new file mode 100644 index 0000000..069a2e6 --- /dev/null +++ b/public/charting_library/static/bundles/19.aba848e28ec755548668.rtl.css @@ -0,0 +1 @@ +.loader-3Pj8ExOX-{position:absolute;top:0;right:0;left:0;bottom:0;height:100%;margin:0 auto;text-align:center;font-size:0;opacity:1;transition:opacity .35s ease}.loader-3Pj8ExOX-:after{content:" ";display:inline-block;height:100%;vertical-align:middle}.loader-3Pj8ExOX- .item-2n55_7om-{margin-left:2px;margin-right:2px;display:inline-block;vertical-align:middle;width:10px;height:10px;opacity:1;border-radius:100%;transform:translateY(0) scale(.6);transition:transform .35s cubic-bezier(.68,-.55,.265,1.55);animation:tv-button-loader-SKpJjjYw- .96s infinite ease-in-out both}.loader-3Pj8ExOX- .item-2n55_7om-:nth-child(2){transition-delay:.11666667s;animation-delay:.151s}.loader-3Pj8ExOX- .item-2n55_7om-:nth-child(3){transition-delay:.23333333s;animation-delay:.32s}.loader-3Pj8ExOX- .item-2n55_7om-.black-eFIQWyf4-{background-color:#757575}.loader-3Pj8ExOX- .item-2n55_7om-.white-2Ma0ajvT-{background-color:#fff}.loader-3Pj8ExOX- .item-2n55_7om-.gray-24fvVR0S-{background-color:#8797a5}.loader-3Pj8ExOX-.loader-initial{opacity:.1}.loader-3Pj8ExOX-.loader-initial .item-2n55_7om-{animation:none;transform:translateY(12px) scale(.6)}.loader-3Pj8ExOX-.loader-appear{opacity:1;transition:opacity .7s ease}.loader-3Pj8ExOX-.loader-appear .item-2n55_7om-{animation:none;transform:translateY(0) scale(.6)}@keyframes tv-button-loader-SKpJjjYw-{0%,to{transform:scale(.6)}50%{transform:scale(.9)}} \ No newline at end of file diff --git a/public/charting_library/static/bundles/19.c5542d290eefbb001433.js b/public/charting_library/static/bundles/19.c5542d290eefbb001433.js new file mode 100644 index 0000000..eded22f --- /dev/null +++ b/public/charting_library/static/bundles/19.c5542d290eefbb001433.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[19],[]]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/2.195070ea59b3395625da.js b/public/charting_library/static/bundles/2.195070ea59b3395625da.js new file mode 100644 index 0000000..8d153e3 --- /dev/null +++ b/public/charting_library/static/bundles/2.195070ea59b3395625da.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[2],[]]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/2.a3e34146d368d13b6bc1.css b/public/charting_library/static/bundles/2.a3e34146d368d13b6bc1.css new file mode 100644 index 0000000..854e846 --- /dev/null +++ b/public/charting_library/static/bundles/2.a3e34146d368d13b6bc1.css @@ -0,0 +1 @@ +.tv-button{position:relative;display:inline-block;vertical-align:middle;min-width:40px;margin:0;padding:1px 22px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;line-height:32px;text-align:center;white-space:nowrap;text-decoration:none;font-size:14px;color:#757575;fill:currentColor;border:none;border-radius:4px;outline:0;background-color:transparent;cursor:pointer;overflow:hidden;box-sizing:border-box;-webkit-tap-highlight-color:transparent;transition:background-color .35s ease,border-color .35s ease,color .35s ease}.tv-button.tv-button--danger_ghost,.tv-button.tv-button--default,.tv-button.tv-button--default_ghost,.tv-button.tv-button--primary_ghost,.tv-button.tv-button--secondary_ghost,.tv-button.tv-button--state,.tv-button.tv-button--success_ghost,.tv-button.tv-button--warning_ghost{padding:0 21px}.tv-button.i-active,.tv-button.i-hover,.tv-button:active{transition-duration:.06s}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button:hover{transition-duration:.06s}}.tv-button svg{vertical-align:middle}.tv-button--block{display:block;width:100%;text-align:center}.tv-button+.tv-button{margin-left:15px}.tv-button.tv-button--no-left-margin{margin-left:0}.tv-button__text{position:relative;display:inline-block}.tv-button__text--full-height{display:flex;align-items:center;justify-content:center;height:100%;width:100%;white-space:normal;word-wrap:break-word;line-height:1.2em;margin:11px 5px}.tv-button--default,.tv-button--default_ghost{color:#fff;border-color:#fff;background-color:#fff}html.theme-dark .tv-button--default,html.theme-dark .tv-button--default_ghost{background-color:#171b29;border-color:#171b29}.tv-button--default_ghost{color:#fff}html.theme-dark .tv-button--default_ghost{color:#171b29}.tv-button--default_ghost.i-checked{color:#fff;border-color:#fff;background-color:#fff}html.theme-dark .tv-button--default_ghost.i-checked{background-color:#171b29;border-color:#171b29}.tv-button--default.i-hover,.tv-button--default_ghost.i-hover{color:#fff;border-color:#f2f2f2;background-color:#f2f2f2}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--default:hover,.tv-button--default_ghost:hover{color:#fff;border-color:#f2f2f2;background-color:#f2f2f2}}html.theme-dark .tv-button--default.i-hover,html.theme-dark .tv-button--default_ghost.i-hover{background-color:#1c2030}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .tv-button--default:hover,html.theme-dark .tv-button--default_ghost:hover{background-color:#1c2030}}html.theme-dark .tv-button--default.i-hover,html.theme-dark .tv-button--default_ghost.i-hover{border-color:#1c2030}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .tv-button--default:hover,html.theme-dark .tv-button--default_ghost:hover{border-color:#1c2030}}.tv-button--default.i-active,.tv-button--default:active,.tv-button--default_ghost.i-active,.tv-button--default_ghost:active{color:#fff;border-color:#ececec;background-color:#ececec;transform:translateY(1px)}html.theme-dark .tv-button--default.i-active,html.theme-dark .tv-button--default:active,html.theme-dark .tv-button--default_ghost.i-active,html.theme-dark .tv-button--default_ghost:active{background-color:#1c2030;border-color:#1c2030}.tv-button--default,.tv-button--default.i-checked,.tv-button--default_ghost,.tv-button--default_ghost.i-checked{color:#757575;border:1px solid;border-color:#b5b7b9}html.theme-dark .tv-button--default,html.theme-dark .tv-button--default.i-checked,html.theme-dark .tv-button--default_ghost,html.theme-dark .tv-button--default_ghost.i-checked{border-color:#363c4e;color:#758696}.tv-button--default.i-hover,.tv-button--default_ghost.i-hover{color:#757575;border-color:#b5b7b9}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--default:hover,.tv-button--default_ghost:hover{color:#757575;border-color:#b5b7b9}}html.theme-dark .tv-button--default.i-hover,html.theme-dark .tv-button--default_ghost.i-hover{border-color:#363c4e}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .tv-button--default:hover,html.theme-dark .tv-button--default_ghost:hover{border-color:#363c4e}}html.theme-dark .tv-button--default.i-hover,html.theme-dark .tv-button--default_ghost.i-hover{color:#758696}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .tv-button--default:hover,html.theme-dark .tv-button--default_ghost:hover{color:#758696}}.tv-button--default.i-active,.tv-button--default:active,.tv-button--default_ghost.i-active,.tv-button--default_ghost:active{color:#757575;border-color:#b5b7b9}html.theme-dark .tv-button--default.i-active,html.theme-dark .tv-button--default:active,html.theme-dark .tv-button--default_ghost.i-active,html.theme-dark .tv-button--default_ghost:active{border-color:#363c4e;color:#758696}.tv-button--primary,.tv-button--primary_ghost{color:#fff;border-color:#2196f3;background-color:#2196f3}.tv-button--primary_ghost{color:#2196f3}.tv-button--primary_ghost.i-checked{color:#fff;border-color:#2196f3;background-color:#2196f3}.tv-button--primary.i-hover,.tv-button--primary_ghost.i-hover{color:#fff;border-color:#1e88e5;background-color:#1e88e5}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--primary:hover,.tv-button--primary_ghost:hover{color:#fff;border-color:#1e88e5;background-color:#1e88e5}}.tv-button--primary.i-active,.tv-button--primary:active,.tv-button--primary_ghost.i-active,.tv-button--primary_ghost:active{color:#fff;border-color:#049ddc;background-color:#049ddc;transform:translateY(1px)}.tv-button--secondary,.tv-button--secondary_ghost{color:#757575;border-color:#e9eff2;background-color:#e9eff2}.tv-button--secondary_ghost{color:#757575}.tv-button--secondary_ghost.i-checked{color:#757575;border-color:#e9eff2;background-color:#e9eff2}.tv-button--secondary.i-hover,.tv-button--secondary_ghost.i-hover{color:#757575;border-color:#dce6ea;background-color:#dce6ea}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--secondary:hover,.tv-button--secondary_ghost:hover{color:#757575;border-color:#dce6ea;background-color:#dce6ea}}.tv-button--secondary.i-active,.tv-button--secondary:active,.tv-button--secondary_ghost.i-active,.tv-button--secondary_ghost:active{color:#757575;border-color:#cfdce3;background-color:#cfdce3;transform:translateY(1px)}.tv-button--success,.tv-button--success_ghost{color:#fff;border-color:#3cbc98;background-color:#3cbc98}.tv-button--success_ghost{color:#3cbc98}.tv-button--success_ghost.i-checked{color:#fff;border-color:#3cbc98;background-color:#3cbc98}.tv-button--success.i-hover,.tv-button--success_ghost.i-hover{color:#fff;border-color:#38b395;background-color:#38b395}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--success:hover,.tv-button--success_ghost:hover{color:#fff;border-color:#38b395;background-color:#38b395}}.tv-button--success.i-active,.tv-button--success:active,.tv-button--success_ghost.i-active,.tv-button--success_ghost:active{color:#fff;border-color:#00a97f;background-color:#00a97f;transform:translateY(1px)}.tv-button--danger,.tv-button--danger_ghost{color:#fff;border-color:#ff4a68;background-color:#ff4a68}.tv-button--danger_ghost{color:#ff4a68}.tv-button--danger_ghost.i-checked{color:#fff;border-color:#ff4a68;background-color:#ff4a68}.tv-button--danger.i-hover,.tv-button--danger_ghost.i-hover{color:#fff;border-color:#f24965;background-color:#f24965}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--danger:hover,.tv-button--danger_ghost:hover{color:#fff;border-color:#f24965;background-color:#f24965}}.tv-button--danger.i-active,.tv-button--danger:active,.tv-button--danger_ghost.i-active,.tv-button--danger_ghost:active{color:#fff;border-color:#ff173e;background-color:#ff173e;transform:translateY(1px)}.tv-button--warning,.tv-button--warning_ghost{color:#fff;border-color:#f89e30;background-color:#f89e30}.tv-button--warning_ghost{color:#f89e30}.tv-button--warning_ghost.i-checked{color:#fff;border-color:#f89e30;background-color:#f89e30}.tv-button--warning.i-hover,.tv-button--warning_ghost.i-hover{color:#fff;border-color:#f79217;background-color:#f79217}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--warning:hover,.tv-button--warning_ghost:hover{color:#fff;border-color:#f79217;background-color:#f79217}}.tv-button--warning.i-active,.tv-button--warning:active,.tv-button--warning_ghost.i-active,.tv-button--warning_ghost:active{color:#fff;border-color:#d47807;background-color:#d47807;transform:translateY(1px)}.tv-button--link{color:#2196f3;transition:color .35s ease}html.theme-dark .tv-button--link{color:#1976d2}.tv-button--link:visited{color:#2196f3;fill:#2196f3}html.theme-dark .tv-button--link:visited{fill:#1976d2;color:#1976d2}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--link:hover{color:#1e88e5;fill:#1e88e5;transition-duration:.06s}}.tv-button--link:active{color:#1e88e5;fill:#1e88e5;transition-duration:.06s}.tv-button--danger_ghost,.tv-button--default_ghost,.tv-button--primary_ghost,.tv-button--secondary_ghost,.tv-button--success_ghost,.tv-button--warning_ghost{border-width:1px;border-style:solid;background-color:transparent}.tv-button--danger_ghost.tv-button--size_large,.tv-button--default_ghost.tv-button--size_large,.tv-button--primary_ghost.tv-button--size_large,.tv-button--secondary_ghost.tv-button--size_large,.tv-button--success_ghost.tv-button--size_large,.tv-button--warning_ghost.tv-button--size_large{border-width:2px}.tv-button .tv-ripple{background-color:hsla(0,0%,100%,.25)}.tv-button--default .tv-ripple,.tv-button--default_ghost .tv-ripple{background-color:rgba(117,134,150,.25)}.tv-button.i-disabled .tv-ripple{background-color:transparent}.tv-button.i-disabled,.tv-button.i-disabled:active,.tv-button:disabled,.tv-button:disabled:active{cursor:default;color:#9db2bd;border-color:#f1f3f6;background-color:#f1f3f6}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button.i-disabled:hover,.tv-button:disabled:hover{cursor:default;color:#9db2bd;border-color:#f1f3f6;background-color:#f1f3f6}}html.theme-dark .tv-button.i-disabled,html.theme-dark .tv-button.i-disabled:active,html.theme-dark .tv-button:disabled,html.theme-dark .tv-button:disabled:active{background-color:#262b3e}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .tv-button.i-disabled:hover,html.theme-dark .tv-button:disabled:hover{background-color:#262b3e}}html.theme-dark .tv-button.i-disabled,html.theme-dark .tv-button.i-disabled:active,html.theme-dark .tv-button:disabled,html.theme-dark .tv-button:disabled:active{border-color:#262b3e}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .tv-button.i-disabled:hover,html.theme-dark .tv-button:disabled:hover{border-color:#262b3e}}html.theme-dark .tv-button.i-disabled,html.theme-dark .tv-button.i-disabled:active,html.theme-dark .tv-button:disabled,html.theme-dark .tv-button:disabled:active{color:#363c4e}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .tv-button.i-disabled:hover,html.theme-dark .tv-button:disabled:hover{color:#363c4e}}.tv-button.i-disabled:active,.tv-button:disabled:active{transform:translateY(0)}.tv-button--size_xsmall{padding:2px 7px;line-height:15px;border-radius:1px;font-size:11px;font-weight:400}.tv-button--size_xsmall.tv-button--danger_ghost,.tv-button--size_xsmall.tv-button--default,.tv-button--size_xsmall.tv-button--default_ghost,.tv-button--size_xsmall.tv-button--primary_ghost,.tv-button--size_xsmall.tv-button--secondary_ghost,.tv-button--size_xsmall.tv-button--state,.tv-button--size_xsmall.tv-button--success_ghost,.tv-button--size_xsmall.tv-button--warning_ghost{padding:1px 6px}.tv-button--size_xsmall+.tv-button--size_xsmall{margin-left:10px}.tv-button--size_small{padding:1px 12px;line-height:25px;font-size:13px}.tv-button--size_small.tv-button--danger_ghost,.tv-button--size_small.tv-button--default,.tv-button--size_small.tv-button--default_ghost,.tv-button--size_small.tv-button--primary_ghost,.tv-button--size_small.tv-button--secondary_ghost,.tv-button--size_small.tv-button--state,.tv-button--size_small.tv-button--success_ghost,.tv-button--size_small.tv-button--warning_ghost{padding:0 11px}.tv-button--size_small+.tv-button--size_small{margin-left:10px}.tv-button--size_large{padding:1px 30px;font-size:17px;letter-spacing:1px;line-height:44px}.tv-button--size_large.tv-button--danger_ghost,.tv-button--size_large.tv-button--default,.tv-button--size_large.tv-button--default_ghost,.tv-button--size_large.tv-button--primary_ghost,.tv-button--size_large.tv-button--secondary_ghost,.tv-button--size_large.tv-button--state,.tv-button--size_large.tv-button--success_ghost,.tv-button--size_large.tv-button--warning_ghost{padding:0 29px}.tv-button--max-width{max-width:300px}.tv-button--no-padding{padding:1px}.tv-button--no-padding.tv-button--danger_ghost,.tv-button--no-padding.tv-button--default,.tv-button--no-padding.tv-button--default_ghost,.tv-button--no-padding.tv-button--primary_ghost,.tv-button--no-padding.tv-button--secondary_ghost,.tv-button--no-padding.tv-button--state,.tv-button--no-padding.tv-button--success_ghost,.tv-button--no-padding.tv-button--warning_ghost{padding:0}.tv-button--content-center{display:flex;align-items:center;justify-content:center;height:100%;margin:0 auto;max-width:220px}.tv-button--state{text-align:center;background:transparent;border-width:1px;border-style:solid}.tv-button--state:after{content:"";display:inline-block}.tv-button--state__checked,.tv-button--state__uncheck-hint,.tv-button--state__unchecked{display:block;height:0;transition:opacity .2625s ease,transform .2625s ease}.tv-button--state__ellipsis-text{display:block;white-space:nowrap;text-overflow:ellipsis;overflow-x:hidden}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--state.i-checked:hover .tv-button--state__checked,.tv-button--state.i-checked:hover .tv-button--state__uncheck-hint,.tv-button--state.i-checked:hover .tv-button--state__unchecked{will-change:opacity,transform}}.tv-button--state.i-checked .tv-button--state__unchecked,.tv-button--state__checked,.tv-button--state__uncheck-hint{opacity:0}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--state.i-checked:hover .tv-button--state__checked{opacity:0}}.tv-button--state.i-checked .tv-button--state__checked,.tv-button--state__unchecked{opacity:1}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--state.i-checked:hover .tv-button--state__uncheck-hint{opacity:1}}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--state.i-checked:hover .tv-button--state__checked{transform:translateY(-5px)}}.tv-button--state.i-checked .tv-button--state__unchecked,.tv-button--state__checked,.tv-button--state__uncheck-hint{transform:translateY(5px)}.tv-button--state.i-checked .tv-button--state__checked{transform:translateY(0)}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--state.i-checked:hover .tv-button--state__uncheck-hint{transform:translateY(0)}}.tv-button--state.tv-button--success{color:#3cbc98;background-color:transparent}.tv-button--state.tv-button--success.i-checked{color:#fff;background-color:#3cbc98}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--state.tv-button--success:hover{color:#fff;background-color:#38b395}}.tv-button--state.tv-button--success:active{color:#fff;background-color:#00a97f}.tv-button--state.tv-button--danger{color:#ff4a68;background-color:transparent}.tv-button--state.tv-button--danger.i-checked{color:#fff;background-color:#ff4a68}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--state.tv-button--danger:hover{color:#fff;background-color:#f24965}}.tv-button--state.tv-button--danger:active{color:#fff;background-color:#ff173e}.tv-button--state.tv-button--primary{color:#2196f3;background-color:transparent}.tv-button--state.tv-button--primary.i-checked{color:#fff;background-color:#2196f3}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--state.tv-button--primary:hover{color:#fff;background-color:#1e88e5}}.tv-button--state.tv-button--primary:active{color:#fff;background-color:#049ddc}.tv-button--state.tv-button--secondary{color:#757575;background-color:transparent}.tv-button--state.tv-button--secondary.i-checked{color:#757575;background-color:#e9eff2}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--state.tv-button--secondary:hover{color:#757575;background-color:#dce6ea}}.tv-button--state.tv-button--secondary:active{color:#757575;background-color:#cfdce3}.tv-button--state.tv-button--warning{color:#f89e30;background-color:transparent}.tv-button--state.tv-button--warning.i-checked{color:#fff;background-color:#f89e30}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--state.tv-button--warning:hover{color:#fff;background-color:#f79217}}.tv-button--state.tv-button--warning:active{color:#fff;background-color:#d47807}.tv-button--loader .tv-button__text{transition:opacity .175s ease,transform .175s ease}.tv-button--loader.i-start-load .tv-button__text{opacity:0;transform:translateY(-5px)}.tv-button--loader.i-loading .tv-button__text{opacity:0;transform:translateY(5px)}.tv-button--loader.i-stop-load .tv-button__text{opacity:1;transform:translateY(0);transition-delay:.175s}.tv-button__loader{position:absolute;top:0;left:0;right:0;bottom:0;height:100%;margin:0 auto;text-align:center;font-size:0;opacity:0;transition:opacity .35s ease}.tv-button__loader:after{content:"";display:inline-block;height:100%;vertical-align:middle}.tv-button--loader.i-loading .tv-button__loader,.tv-button--loader.i-start-load .tv-button__loader{opacity:1}.tv-button--loader.i-stop-load .tv-button__loader{opacity:0}.tv-button__loader-item{margin-right:2px;margin-left:2px;display:inline-block;vertical-align:middle;width:10px;height:10px;opacity:0;border-radius:100%;background-color:#fff;transform:translateY(12px) scale(.6);transition:transform .35s cubic-bezier(.68,-.55,.265,1.55),opacity .35s ease}.tv-button__loader-item:nth-child(2){transition-delay:.11666667s}.tv-button__loader-item:nth-child(3){transition-delay:.23333333s}.tv-button--default .tv-button__loader-item{background-color:#757575}.tv-button--loader.i-loading .tv-button__loader-item,.tv-button--loader.i-start-load .tv-button__loader-item{opacity:1}.tv-button--loader.i-stop-load .tv-button__loader-item{opacity:0}.tv-button--loader.i-loading .tv-button__loader-item,.tv-button--loader.i-start-load .tv-button__loader-item,.tv-button--loader.i-stop-load .tv-button__loader-item{transform:translateY(0) scale(.6)}.tv-button--loader.i-loading .tv-button__loader-item,.tv-button--loader.i-stop-load .tv-button__loader-item{animation:tv-button-loader .96s infinite ease-in-out both}.tv-button--loader.i-loading .tv-button__loader-item:nth-child(2),.tv-button--loader.i-stop-load .tv-button__loader-item:nth-child(2){animation-delay:.151s}.tv-button--loader.i-loading .tv-button__loader-item:nth-child(3),.tv-button--loader.i-stop-load .tv-button__loader-item:nth-child(3){animation-delay:.32s}.tv-button--no-border-radius{border-radius:0}.tv-button--no-border{border:none}.tv-button--connect{border-radius:0}.tv-button--connect_left{border-top-left-radius:0;border-bottom-left-radius:0}.tv-button--connect_right{border-top-right-radius:0;border-bottom-right-radius:0}@keyframes tv-button-loader{0%,to{transform:scale(.6)}50%{transform:scale(.9)}}@media screen and (max-width:767px){.tv-button.tv-button--phone-compact{padding-left:4px;padding-right:4px}}.sb-inner-shadow{box-shadow:0 0 5px rgba(0,0,0,.15);position:absolute;bottom:-10px;width:100%;height:10px;background:#fff;z-index:5;pointer-events:none;transform:translateY(0);transition:opacity .11666667s ease,transform .11666667s ease}html.theme-dark .sb-inner-shadow{background:#171b29}.sb-inner-shadow.top{box-shadow:0 0 5px rgba(0,0,0,.15);top:-10px}.sb-inner-shadow.i-invisible{transform:translateY(5px)}.sb-inner-shadow.i-invisible.top{transform:translateY(-5px)}.sb-inner-shadow.i-invisible{opacity:0}.sb-scrollbar{position:absolute!important;opacity:0;width:7px;height:100px;top:73px;right:1px;z-index:1;transition:opacity .3s}.sb-scrollbar.active,.sb-scrollbar.active-always{opacity:1}.sb-scrollbar__content-wrapper--scroll-inited{position:relative}.sb-scrollbar__content--scroll-inited{position:absolute}.sb-scrollbar-wrap{position:absolute;top:0;right:1px;width:6px;height:100%;z-index:1}.sb-scrollbar-wrap .sb-scrollbar{right:0}.sb-scrollbar-body{width:6px;border:0;background:#d8d8d8}html.theme-dark .sb-scrollbar-body{background:#4f5966}.gray .sb-scrollbar-body{background:#75757a;border-color:#75757a;border-radius:3px}.sb-scrollbar-bottom,.sb-scrollbar-top{display:none}.active-always.gray,.gray{opacity:.5}.i-hidden{display:none!important}.i-invisible{visibility:hidden!important}.i-clearfix:after{clear:both;display:table;content:""}.i-align_left{text-align:left!important}.i-align_right{text-align:right!important}.i-align_center{text-align:center!important}.i-float_left{float:left!important}.i-float_right{float:right!important}.i-float_none{float:none!important}@media screen and (min-width:1020px){.i-device-only{display:none!important}}@media screen and (max-width:1019px){.i-desktop-only{display:none!important}}@media screen and (min-width:479px){.i-phones-only{display:none!important}}@media screen and (max-width:479px){.i-except-phones-only{display:none!important}}.i-no-break{white-space:nowrap}.wrapper-2KWBfDVB-.touch-E6yQTRo_-.wrapper-2KWBfDVB-.touch-E6yQTRo_-{overflow-y:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:scrollbar}.wrapper-2KWBfDVB-.touch-E6yQTRo_-.wrapper-2KWBfDVB-.touch-E6yQTRo_-::-webkit-scrollbar{width:5px;height:5px}.wrapper-2KWBfDVB-.touch-E6yQTRo_-.wrapper-2KWBfDVB-.touch-E6yQTRo_-::-webkit-scrollbar-thumb{border:1px solid;border-color:#f1f3f6;border-radius:3px;background-color:#9db2bd}html.theme-dark .wrapper-2KWBfDVB-.touch-E6yQTRo_-.wrapper-2KWBfDVB-.touch-E6yQTRo_-::-webkit-scrollbar-thumb{background-color:#363c4e;border-color:#1c2030}.wrapper-2KWBfDVB-.touch-E6yQTRo_-.wrapper-2KWBfDVB-.touch-E6yQTRo_-::-webkit-scrollbar-track{background-color:transparent;border-radius:3px} \ No newline at end of file diff --git a/public/charting_library/static/bundles/2.a3e34146d368d13b6bc1.rtl.css b/public/charting_library/static/bundles/2.a3e34146d368d13b6bc1.rtl.css new file mode 100644 index 0000000..dbdf793 --- /dev/null +++ b/public/charting_library/static/bundles/2.a3e34146d368d13b6bc1.rtl.css @@ -0,0 +1 @@ +.tv-button{position:relative;display:inline-block;vertical-align:middle;min-width:40px;margin:0;padding:1px 22px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;line-height:32px;text-align:center;white-space:nowrap;text-decoration:none;font-size:14px;color:#757575;fill:currentColor;border:none;border-radius:4px;outline:0;background-color:transparent;cursor:pointer;overflow:hidden;box-sizing:border-box;-webkit-tap-highlight-color:transparent;transition:background-color .35s ease,border-color .35s ease,color .35s ease}.tv-button.tv-button--danger_ghost,.tv-button.tv-button--default,.tv-button.tv-button--default_ghost,.tv-button.tv-button--primary_ghost,.tv-button.tv-button--secondary_ghost,.tv-button.tv-button--state,.tv-button.tv-button--success_ghost,.tv-button.tv-button--warning_ghost{padding:0 21px}.tv-button.i-active,.tv-button.i-hover,.tv-button:active{transition-duration:.06s}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button:hover{transition-duration:.06s}}.tv-button svg{vertical-align:middle}.tv-button--block{display:block;width:100%;text-align:center}.tv-button+.tv-button{margin-right:15px}.tv-button.tv-button--no-left-margin{margin-right:0}.tv-button__text{position:relative;display:inline-block}.tv-button__text--full-height{display:flex;align-items:center;justify-content:center;height:100%;width:100%;white-space:normal;word-wrap:break-word;line-height:1.2em;margin:11px 5px}.tv-button--default,.tv-button--default_ghost{color:#fff;border-color:#fff;background-color:#fff}html.theme-dark .tv-button--default,html.theme-dark .tv-button--default_ghost{background-color:#171b29;border-color:#171b29}.tv-button--default_ghost{color:#fff}html.theme-dark .tv-button--default_ghost{color:#171b29}.tv-button--default_ghost.i-checked{color:#fff;border-color:#fff;background-color:#fff}html.theme-dark .tv-button--default_ghost.i-checked{background-color:#171b29;border-color:#171b29}.tv-button--default.i-hover,.tv-button--default_ghost.i-hover{color:#fff;border-color:#f2f2f2;background-color:#f2f2f2}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--default:hover,.tv-button--default_ghost:hover{color:#fff;border-color:#f2f2f2;background-color:#f2f2f2}}html.theme-dark .tv-button--default.i-hover,html.theme-dark .tv-button--default_ghost.i-hover{background-color:#1c2030}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .tv-button--default:hover,html.theme-dark .tv-button--default_ghost:hover{background-color:#1c2030}}html.theme-dark .tv-button--default.i-hover,html.theme-dark .tv-button--default_ghost.i-hover{border-color:#1c2030}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .tv-button--default:hover,html.theme-dark .tv-button--default_ghost:hover{border-color:#1c2030}}.tv-button--default.i-active,.tv-button--default:active,.tv-button--default_ghost.i-active,.tv-button--default_ghost:active{color:#fff;border-color:#ececec;background-color:#ececec;transform:translateY(1px)}html.theme-dark .tv-button--default.i-active,html.theme-dark .tv-button--default:active,html.theme-dark .tv-button--default_ghost.i-active,html.theme-dark .tv-button--default_ghost:active{background-color:#1c2030;border-color:#1c2030}.tv-button--default,.tv-button--default.i-checked,.tv-button--default_ghost,.tv-button--default_ghost.i-checked{color:#757575;border:1px solid;border-color:#b5b7b9}html.theme-dark .tv-button--default,html.theme-dark .tv-button--default.i-checked,html.theme-dark .tv-button--default_ghost,html.theme-dark .tv-button--default_ghost.i-checked{border-color:#363c4e;color:#758696}.tv-button--default.i-hover,.tv-button--default_ghost.i-hover{color:#757575;border-color:#b5b7b9}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--default:hover,.tv-button--default_ghost:hover{color:#757575;border-color:#b5b7b9}}html.theme-dark .tv-button--default.i-hover,html.theme-dark .tv-button--default_ghost.i-hover{border-color:#363c4e}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .tv-button--default:hover,html.theme-dark .tv-button--default_ghost:hover{border-color:#363c4e}}html.theme-dark .tv-button--default.i-hover,html.theme-dark .tv-button--default_ghost.i-hover{color:#758696}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .tv-button--default:hover,html.theme-dark .tv-button--default_ghost:hover{color:#758696}}.tv-button--default.i-active,.tv-button--default:active,.tv-button--default_ghost.i-active,.tv-button--default_ghost:active{color:#757575;border-color:#b5b7b9}html.theme-dark .tv-button--default.i-active,html.theme-dark .tv-button--default:active,html.theme-dark .tv-button--default_ghost.i-active,html.theme-dark .tv-button--default_ghost:active{border-color:#363c4e;color:#758696}.tv-button--primary,.tv-button--primary_ghost{color:#fff;border-color:#2196f3;background-color:#2196f3}.tv-button--primary_ghost{color:#2196f3}.tv-button--primary_ghost.i-checked{color:#fff;border-color:#2196f3;background-color:#2196f3}.tv-button--primary.i-hover,.tv-button--primary_ghost.i-hover{color:#fff;border-color:#1e88e5;background-color:#1e88e5}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--primary:hover,.tv-button--primary_ghost:hover{color:#fff;border-color:#1e88e5;background-color:#1e88e5}}.tv-button--primary.i-active,.tv-button--primary:active,.tv-button--primary_ghost.i-active,.tv-button--primary_ghost:active{color:#fff;border-color:#049ddc;background-color:#049ddc;transform:translateY(1px)}.tv-button--secondary,.tv-button--secondary_ghost{color:#757575;border-color:#e9eff2;background-color:#e9eff2}.tv-button--secondary_ghost{color:#757575}.tv-button--secondary_ghost.i-checked{color:#757575;border-color:#e9eff2;background-color:#e9eff2}.tv-button--secondary.i-hover,.tv-button--secondary_ghost.i-hover{color:#757575;border-color:#dce6ea;background-color:#dce6ea}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--secondary:hover,.tv-button--secondary_ghost:hover{color:#757575;border-color:#dce6ea;background-color:#dce6ea}}.tv-button--secondary.i-active,.tv-button--secondary:active,.tv-button--secondary_ghost.i-active,.tv-button--secondary_ghost:active{color:#757575;border-color:#cfdce3;background-color:#cfdce3;transform:translateY(1px)}.tv-button--success,.tv-button--success_ghost{color:#fff;border-color:#3cbc98;background-color:#3cbc98}.tv-button--success_ghost{color:#3cbc98}.tv-button--success_ghost.i-checked{color:#fff;border-color:#3cbc98;background-color:#3cbc98}.tv-button--success.i-hover,.tv-button--success_ghost.i-hover{color:#fff;border-color:#38b395;background-color:#38b395}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--success:hover,.tv-button--success_ghost:hover{color:#fff;border-color:#38b395;background-color:#38b395}}.tv-button--success.i-active,.tv-button--success:active,.tv-button--success_ghost.i-active,.tv-button--success_ghost:active{color:#fff;border-color:#00a97f;background-color:#00a97f;transform:translateY(1px)}.tv-button--danger,.tv-button--danger_ghost{color:#fff;border-color:#ff4a68;background-color:#ff4a68}.tv-button--danger_ghost{color:#ff4a68}.tv-button--danger_ghost.i-checked{color:#fff;border-color:#ff4a68;background-color:#ff4a68}.tv-button--danger.i-hover,.tv-button--danger_ghost.i-hover{color:#fff;border-color:#f24965;background-color:#f24965}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--danger:hover,.tv-button--danger_ghost:hover{color:#fff;border-color:#f24965;background-color:#f24965}}.tv-button--danger.i-active,.tv-button--danger:active,.tv-button--danger_ghost.i-active,.tv-button--danger_ghost:active{color:#fff;border-color:#ff173e;background-color:#ff173e;transform:translateY(1px)}.tv-button--warning,.tv-button--warning_ghost{color:#fff;border-color:#f89e30;background-color:#f89e30}.tv-button--warning_ghost{color:#f89e30}.tv-button--warning_ghost.i-checked{color:#fff;border-color:#f89e30;background-color:#f89e30}.tv-button--warning.i-hover,.tv-button--warning_ghost.i-hover{color:#fff;border-color:#f79217;background-color:#f79217}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--warning:hover,.tv-button--warning_ghost:hover{color:#fff;border-color:#f79217;background-color:#f79217}}.tv-button--warning.i-active,.tv-button--warning:active,.tv-button--warning_ghost.i-active,.tv-button--warning_ghost:active{color:#fff;border-color:#d47807;background-color:#d47807;transform:translateY(1px)}.tv-button--link{color:#2196f3;transition:color .35s ease}html.theme-dark .tv-button--link{color:#1976d2}.tv-button--link:visited{color:#2196f3;fill:#2196f3}html.theme-dark .tv-button--link:visited{fill:#1976d2;color:#1976d2}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--link:hover{color:#1e88e5;fill:#1e88e5;transition-duration:.06s}}.tv-button--link:active{color:#1e88e5;fill:#1e88e5;transition-duration:.06s}.tv-button--danger_ghost,.tv-button--default_ghost,.tv-button--primary_ghost,.tv-button--secondary_ghost,.tv-button--success_ghost,.tv-button--warning_ghost{border-width:1px;border-style:solid;background-color:transparent}.tv-button--danger_ghost.tv-button--size_large,.tv-button--default_ghost.tv-button--size_large,.tv-button--primary_ghost.tv-button--size_large,.tv-button--secondary_ghost.tv-button--size_large,.tv-button--success_ghost.tv-button--size_large,.tv-button--warning_ghost.tv-button--size_large{border-width:2px}.tv-button .tv-ripple{background-color:hsla(0,0%,100%,.25)}.tv-button--default .tv-ripple,.tv-button--default_ghost .tv-ripple{background-color:rgba(117,134,150,.25)}.tv-button.i-disabled .tv-ripple{background-color:transparent}.tv-button.i-disabled,.tv-button.i-disabled:active,.tv-button:disabled,.tv-button:disabled:active{cursor:default;color:#9db2bd;border-color:#f1f3f6;background-color:#f1f3f6}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button.i-disabled:hover,.tv-button:disabled:hover{cursor:default;color:#9db2bd;border-color:#f1f3f6;background-color:#f1f3f6}}html.theme-dark .tv-button.i-disabled,html.theme-dark .tv-button.i-disabled:active,html.theme-dark .tv-button:disabled,html.theme-dark .tv-button:disabled:active{background-color:#262b3e}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .tv-button.i-disabled:hover,html.theme-dark .tv-button:disabled:hover{background-color:#262b3e}}html.theme-dark .tv-button.i-disabled,html.theme-dark .tv-button.i-disabled:active,html.theme-dark .tv-button:disabled,html.theme-dark .tv-button:disabled:active{border-color:#262b3e}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .tv-button.i-disabled:hover,html.theme-dark .tv-button:disabled:hover{border-color:#262b3e}}html.theme-dark .tv-button.i-disabled,html.theme-dark .tv-button.i-disabled:active,html.theme-dark .tv-button:disabled,html.theme-dark .tv-button:disabled:active{color:#363c4e}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .tv-button.i-disabled:hover,html.theme-dark .tv-button:disabled:hover{color:#363c4e}}.tv-button.i-disabled:active,.tv-button:disabled:active{transform:translateY(0)}.tv-button--size_xsmall{padding:2px 7px;line-height:15px;border-radius:1px;font-size:11px;font-weight:400}.tv-button--size_xsmall.tv-button--danger_ghost,.tv-button--size_xsmall.tv-button--default,.tv-button--size_xsmall.tv-button--default_ghost,.tv-button--size_xsmall.tv-button--primary_ghost,.tv-button--size_xsmall.tv-button--secondary_ghost,.tv-button--size_xsmall.tv-button--state,.tv-button--size_xsmall.tv-button--success_ghost,.tv-button--size_xsmall.tv-button--warning_ghost{padding:1px 6px}.tv-button--size_xsmall+.tv-button--size_xsmall{margin-right:10px}.tv-button--size_small{padding:1px 12px;line-height:25px;font-size:13px}.tv-button--size_small.tv-button--danger_ghost,.tv-button--size_small.tv-button--default,.tv-button--size_small.tv-button--default_ghost,.tv-button--size_small.tv-button--primary_ghost,.tv-button--size_small.tv-button--secondary_ghost,.tv-button--size_small.tv-button--state,.tv-button--size_small.tv-button--success_ghost,.tv-button--size_small.tv-button--warning_ghost{padding:0 11px}.tv-button--size_small+.tv-button--size_small{margin-right:10px}.tv-button--size_large{padding:1px 30px;font-size:17px;letter-spacing:1px;line-height:44px}.tv-button--size_large.tv-button--danger_ghost,.tv-button--size_large.tv-button--default,.tv-button--size_large.tv-button--default_ghost,.tv-button--size_large.tv-button--primary_ghost,.tv-button--size_large.tv-button--secondary_ghost,.tv-button--size_large.tv-button--state,.tv-button--size_large.tv-button--success_ghost,.tv-button--size_large.tv-button--warning_ghost{padding:0 29px}.tv-button--max-width{max-width:300px}.tv-button--no-padding{padding:1px}.tv-button--no-padding.tv-button--danger_ghost,.tv-button--no-padding.tv-button--default,.tv-button--no-padding.tv-button--default_ghost,.tv-button--no-padding.tv-button--primary_ghost,.tv-button--no-padding.tv-button--secondary_ghost,.tv-button--no-padding.tv-button--state,.tv-button--no-padding.tv-button--success_ghost,.tv-button--no-padding.tv-button--warning_ghost{padding:0}.tv-button--content-center{display:flex;align-items:center;justify-content:center;height:100%;margin:0 auto;max-width:220px}.tv-button--state{text-align:center;background:transparent;border-width:1px;border-style:solid}.tv-button--state:after{content:"";display:inline-block}.tv-button--state__checked,.tv-button--state__uncheck-hint,.tv-button--state__unchecked{display:block;height:0;transition:opacity .2625s ease,transform .2625s ease}.tv-button--state__ellipsis-text{display:block;white-space:nowrap;text-overflow:ellipsis;overflow-x:hidden}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--state.i-checked:hover .tv-button--state__checked,.tv-button--state.i-checked:hover .tv-button--state__uncheck-hint,.tv-button--state.i-checked:hover .tv-button--state__unchecked{will-change:opacity,transform}}.tv-button--state.i-checked .tv-button--state__unchecked,.tv-button--state__checked,.tv-button--state__uncheck-hint{opacity:0}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--state.i-checked:hover .tv-button--state__checked{opacity:0}}.tv-button--state.i-checked .tv-button--state__checked,.tv-button--state__unchecked{opacity:1}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--state.i-checked:hover .tv-button--state__uncheck-hint{opacity:1}}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--state.i-checked:hover .tv-button--state__checked{transform:translateY(-5px)}}.tv-button--state.i-checked .tv-button--state__unchecked,.tv-button--state__checked,.tv-button--state__uncheck-hint{transform:translateY(5px)}.tv-button--state.i-checked .tv-button--state__checked{transform:translateY(0)}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--state.i-checked:hover .tv-button--state__uncheck-hint{transform:translateY(0)}}.tv-button--state.tv-button--success{color:#3cbc98;background-color:transparent}.tv-button--state.tv-button--success.i-checked{color:#fff;background-color:#3cbc98}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--state.tv-button--success:hover{color:#fff;background-color:#38b395}}.tv-button--state.tv-button--success:active{color:#fff;background-color:#00a97f}.tv-button--state.tv-button--danger{color:#ff4a68;background-color:transparent}.tv-button--state.tv-button--danger.i-checked{color:#fff;background-color:#ff4a68}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--state.tv-button--danger:hover{color:#fff;background-color:#f24965}}.tv-button--state.tv-button--danger:active{color:#fff;background-color:#ff173e}.tv-button--state.tv-button--primary{color:#2196f3;background-color:transparent}.tv-button--state.tv-button--primary.i-checked{color:#fff;background-color:#2196f3}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--state.tv-button--primary:hover{color:#fff;background-color:#1e88e5}}.tv-button--state.tv-button--primary:active{color:#fff;background-color:#049ddc}.tv-button--state.tv-button--secondary{color:#757575;background-color:transparent}.tv-button--state.tv-button--secondary.i-checked{color:#757575;background-color:#e9eff2}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--state.tv-button--secondary:hover{color:#757575;background-color:#dce6ea}}.tv-button--state.tv-button--secondary:active{color:#757575;background-color:#cfdce3}.tv-button--state.tv-button--warning{color:#f89e30;background-color:transparent}.tv-button--state.tv-button--warning.i-checked{color:#fff;background-color:#f89e30}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-button--state.tv-button--warning:hover{color:#fff;background-color:#f79217}}.tv-button--state.tv-button--warning:active{color:#fff;background-color:#d47807}.tv-button--loader .tv-button__text{transition:opacity .175s ease,transform .175s ease}.tv-button--loader.i-start-load .tv-button__text{opacity:0;transform:translateY(-5px)}.tv-button--loader.i-loading .tv-button__text{opacity:0;transform:translateY(5px)}.tv-button--loader.i-stop-load .tv-button__text{opacity:1;transform:translateY(0);transition-delay:.175s}.tv-button__loader{position:absolute;top:0;right:0;left:0;bottom:0;height:100%;margin:0 auto;text-align:center;font-size:0;opacity:0;transition:opacity .35s ease}.tv-button__loader:after{content:"";display:inline-block;height:100%;vertical-align:middle}.tv-button--loader.i-loading .tv-button__loader,.tv-button--loader.i-start-load .tv-button__loader{opacity:1}.tv-button--loader.i-stop-load .tv-button__loader{opacity:0}.tv-button__loader-item{margin-left:2px;margin-right:2px;display:inline-block;vertical-align:middle;width:10px;height:10px;opacity:0;border-radius:100%;background-color:#fff;transform:translateY(12px) scale(.6);transition:transform .35s cubic-bezier(.68,-.55,.265,1.55),opacity .35s ease}.tv-button__loader-item:nth-child(2){transition-delay:.11666667s}.tv-button__loader-item:nth-child(3){transition-delay:.23333333s}.tv-button--default .tv-button__loader-item{background-color:#757575}.tv-button--loader.i-loading .tv-button__loader-item,.tv-button--loader.i-start-load .tv-button__loader-item{opacity:1}.tv-button--loader.i-stop-load .tv-button__loader-item{opacity:0}.tv-button--loader.i-loading .tv-button__loader-item,.tv-button--loader.i-start-load .tv-button__loader-item,.tv-button--loader.i-stop-load .tv-button__loader-item{transform:translateY(0) scale(.6)}.tv-button--loader.i-loading .tv-button__loader-item,.tv-button--loader.i-stop-load .tv-button__loader-item{animation:tv-button-loader .96s infinite ease-in-out both}.tv-button--loader.i-loading .tv-button__loader-item:nth-child(2),.tv-button--loader.i-stop-load .tv-button__loader-item:nth-child(2){animation-delay:.151s}.tv-button--loader.i-loading .tv-button__loader-item:nth-child(3),.tv-button--loader.i-stop-load .tv-button__loader-item:nth-child(3){animation-delay:.32s}.tv-button--no-border-radius{border-radius:0}.tv-button--no-border{border:none}.tv-button--connect{border-radius:0}.tv-button--connect_left{border-top-right-radius:0;border-bottom-right-radius:0}.tv-button--connect_right{border-top-left-radius:0;border-bottom-left-radius:0}@keyframes tv-button-loader{0%,to{transform:scale(.6)}50%{transform:scale(.9)}}@media screen and (max-width:767px){.tv-button.tv-button--phone-compact{padding-right:4px;padding-left:4px}}.sb-inner-shadow{box-shadow:0 0 5px rgba(0,0,0,.15);position:absolute;bottom:-10px;width:100%;height:10px;background:#fff;z-index:5;pointer-events:none;transform:translateY(0);transition:opacity .11666667s ease,transform .11666667s ease}html.theme-dark .sb-inner-shadow{background:#171b29}.sb-inner-shadow.top{box-shadow:0 0 5px rgba(0,0,0,.15);top:-10px}.sb-inner-shadow.i-invisible{transform:translateY(5px)}.sb-inner-shadow.i-invisible.top{transform:translateY(-5px)}.sb-inner-shadow.i-invisible{opacity:0}.sb-scrollbar{position:absolute!important;opacity:0;width:7px;height:100px;top:73px;left:1px;z-index:1;transition:opacity .3s}.sb-scrollbar.active,.sb-scrollbar.active-always{opacity:1}.sb-scrollbar__content-wrapper--scroll-inited{position:relative}.sb-scrollbar__content--scroll-inited{position:absolute}.sb-scrollbar-wrap{position:absolute;top:0;left:1px;width:6px;height:100%;z-index:1}.sb-scrollbar-wrap .sb-scrollbar{left:0}.sb-scrollbar-body{width:6px;border:0;background:#d8d8d8}html.theme-dark .sb-scrollbar-body{background:#4f5966}.gray .sb-scrollbar-body{background:#75757a;border-color:#75757a;border-radius:3px}.sb-scrollbar-bottom,.sb-scrollbar-top{display:none}.active-always.gray,.gray{opacity:.5}.i-hidden{display:none!important}.i-invisible{visibility:hidden!important}.i-clearfix:after{clear:both;display:table;content:""}.i-align_left{text-align:right!important}.i-align_right{text-align:left!important}.i-align_center{text-align:center!important}.i-float_left{float:right!important}.i-float_right{float:left!important}.i-float_none{float:none!important}@media screen and (min-width:1020px){.i-device-only{display:none!important}}@media screen and (max-width:1019px){.i-desktop-only{display:none!important}}@media screen and (min-width:479px){.i-phones-only{display:none!important}}@media screen and (max-width:479px){.i-except-phones-only{display:none!important}}.i-no-break{white-space:nowrap}.wrapper-2KWBfDVB-.touch-E6yQTRo_-.wrapper-2KWBfDVB-.touch-E6yQTRo_-{overflow-y:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:scrollbar}.wrapper-2KWBfDVB-.touch-E6yQTRo_-.wrapper-2KWBfDVB-.touch-E6yQTRo_-::-webkit-scrollbar{width:5px;height:5px}.wrapper-2KWBfDVB-.touch-E6yQTRo_-.wrapper-2KWBfDVB-.touch-E6yQTRo_-::-webkit-scrollbar-thumb{border:1px solid;border-color:#f1f3f6;border-radius:3px;background-color:#9db2bd}html.theme-dark .wrapper-2KWBfDVB-.touch-E6yQTRo_-.wrapper-2KWBfDVB-.touch-E6yQTRo_-::-webkit-scrollbar-thumb{background-color:#363c4e;border-color:#1c2030}.wrapper-2KWBfDVB-.touch-E6yQTRo_-.wrapper-2KWBfDVB-.touch-E6yQTRo_-::-webkit-scrollbar-track{background-color:transparent;border-radius:3px} \ No newline at end of file diff --git a/public/charting_library/static/bundles/20.2416da4fc4c075b56691.js b/public/charting_library/static/bundles/20.2416da4fc4c075b56691.js new file mode 100644 index 0000000..d1d1baa --- /dev/null +++ b/public/charting_library/static/bundles/20.2416da4fc4c075b56691.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[20],[]]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/20.f75162343321d7d9178c.css b/public/charting_library/static/bundles/20.f75162343321d7d9178c.css new file mode 100644 index 0000000..f5f1079 --- /dev/null +++ b/public/charting_library/static/bundles/20.f75162343321d7d9178c.css @@ -0,0 +1 @@ +.tv-caret{content:"";display:inline-block;width:0;height:0;border-style:solid;border-width:4px 4px 0;border-color:currentColor transparent transparent;margin-left:5px;vertical-align:middle;transition:transform .35s ease}.active .tv-caret,.i-dropped .tv-caret:not(.tv-caret--strict),.tv-caret--strict.i-dropped{transform:rotate(-180deg);will-change:transform;transition-duration:.33}.tv-caret--small{margin-left:3px;margin-right:-1px;border-top-width:3px;border-right-width:3px;border-left-width:3px}.tv-caret--colored{transition:transform .35s ease,color .35s ease}.tv-caret--no-margin{margin-left:0} \ No newline at end of file diff --git a/public/charting_library/static/bundles/20.f75162343321d7d9178c.rtl.css b/public/charting_library/static/bundles/20.f75162343321d7d9178c.rtl.css new file mode 100644 index 0000000..14180c7 --- /dev/null +++ b/public/charting_library/static/bundles/20.f75162343321d7d9178c.rtl.css @@ -0,0 +1 @@ +.tv-caret{content:"";display:inline-block;width:0;height:0;border-style:solid;border-width:4px 4px 0;border-color:currentColor transparent transparent;margin-right:5px;vertical-align:middle;transition:transform .35s ease}.active .tv-caret,.i-dropped .tv-caret:not(.tv-caret--strict),.tv-caret--strict.i-dropped{transform:rotate(180deg);will-change:transform;transition-duration:.33}.tv-caret--small{margin-right:3px;margin-left:-1px;border-top-width:3px;border-left-width:3px;border-right-width:3px}.tv-caret--colored{transition:transform .35s ease,color .35s ease}.tv-caret--no-margin{margin-right:0} \ No newline at end of file diff --git a/public/charting_library/static/bundles/21.7e987db0ed47cc3f789c.css b/public/charting_library/static/bundles/21.7e987db0ed47cc3f789c.css new file mode 100644 index 0000000..f87b608 --- /dev/null +++ b/public/charting_library/static/bundles/21.7e987db0ed47cc3f789c.css @@ -0,0 +1 @@ +._tv-dialog-shadowbox{position:fixed;left:0;top:0;width:100%;height:100%;background:rgba(0,0,0,.5);z-index:110;-webkit-transform:translateZ(0)}._tv-dialog-shadowbox.transparent{background:none}._tv-dialog{position:absolute;min-height:18px;left:50%;top:50%;background:#fff;border:1px solid;border-color:#b5b7b9;box-shadow:0 0 10px 0 rgba(0,0,0,.15)}html.theme-dark ._tv-dialog{border-color:#363c4e;background:#1e222d}._tv-dialog__link{color:#2196f3;transition:color .35s ease}html.theme-dark ._tv-dialog__link{color:#1976d2}._tv-dialog__link:visited{color:#2196f3;fill:#2196f3}html.theme-dark ._tv-dialog__link:visited{fill:#1976d2;color:#1976d2}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){._tv-dialog__link:hover{color:#1e88e5;fill:#1e88e5;transition-duration:.06s}}._tv-dialog__link:active{color:#1e88e5;fill:#1e88e5;transition-duration:.06s}._tv-dialog__indented-list{padding-left:20px}._tv-dialog__highlightedText{box-shadow:0 0 0 .37em #fff2cf;background:#fff2cf}html.theme-dark ._tv-dialog__highlightedText{background:#194453;box-shadow:0 0 0 .37em #194453}._tv-dialog__highlightedText:empty{background:transparent;box-shadow:none}._tv-dialog__subTitle{margin-top:20px;font-weight:700;display:block}._tv-dialog._tv-dialog-min-width{min-width:400px}._tv-dialog--alert-email a,._tv-dialog--open-a-chart a{color:#2196f3;transition:color .35s ease}html.theme-dark ._tv-dialog--alert-email a,html.theme-dark ._tv-dialog--open-a-chart a{color:#1976d2}._tv-dialog--alert-email a:visited,._tv-dialog--open-a-chart a:visited{color:#2196f3;fill:#2196f3}html.theme-dark ._tv-dialog--alert-email a:visited,html.theme-dark ._tv-dialog--open-a-chart a:visited{fill:#1976d2;color:#1976d2}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){._tv-dialog--alert-email a:hover,._tv-dialog--open-a-chart a:hover{color:#1e88e5;fill:#1e88e5;transition-duration:.06s}}._tv-dialog--alert-email a:active,._tv-dialog--open-a-chart a:active{color:#1e88e5;fill:#1e88e5;transition-duration:.06s}._tv-dialog.ui-resizable{position:absolute}._tv-dialog-title{color:#4c525e;font-weight:700;font-size:15px;padding:17px 35px 17px 20px;cursor:default;word-wrap:break-word}html.theme-dark ._tv-dialog-title{color:#d6d8e0}._tv-dialog-title._tv-dialog-title-no-close{padding-right:20px}._tv-dialog-title._tv-dialog-title-hidden{padding:0;font-size:0;color:transparent;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}._tv-dialog-title ._tv-dialog-title-close{width:21px;height:21px;display:block;position:absolute;right:15px;top:13px;cursor:pointer;z-index:1}._tv-dialog-title ._tv-dialog-title-close:after{width:9px;height:9px;content:" ";position:absolute;top:6px;left:6px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAASCAYAAACJgPRIAAAAUElEQVR42pWQMQoAIAwD++d+x8HJbyoOWXJDSSBgwpVS62vtc8ulXg/ZAZkFMycNoBJgXoUcX1cm9N1NSL0esgMyC2ZOGkAlwLwKObhu/qcHp/zWImEdH8EAAAAASUVORK5CYII=);display:block}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){._tv-dialog-title ._tv-dialog-title-close:hover:after{background-position:bottom}}._tv-dialog-content{color:#131722;max-width:100%}html.theme-dark ._tv-dialog-content{color:#d6d8e0}._tv-dialog-content a:not([class*=button]):not([class*=btn]):not([class*=tabs]):not([class*=tab]):not([class*=sbSelector]):not([class*=filter]):not(a[href="#yes"]):not(a[href="#no"]){color:#2196f3;transition:color .35s ease}html.theme-dark ._tv-dialog-content a:not([class*=button]):not([class*=btn]):not([class*=tabs]):not([class*=tab]):not([class*=sbSelector]):not([class*=filter]):not(a[href="#yes"]):not(a[href="#no"]){color:#1976d2}._tv-dialog-content a:not([class*=button]):not([class*=btn]):not([class*=tabs]):not([class*=tab]):not([class*=sbSelector]):not([class*=filter]):not(a[href="#yes"]):not(a[href="#no"]):visited{color:#2196f3;fill:#2196f3}html.theme-dark ._tv-dialog-content a:not([class*=button]):not([class*=btn]):not([class*=tabs]):not([class*=tab]):not([class*=sbSelector]):not([class*=filter]):not(a[href="#yes"]):not(a[href="#no"]):visited{fill:#1976d2;color:#1976d2}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){._tv-dialog-content a:not([class*=button]):not([class*=btn]):not([class*=tabs]):not([class*=tab]):not([class*=sbSelector]):not([class*=filter]):not(a[href="#yes"]):not(a[href="#no"]):hover{color:#1e88e5;fill:#1e88e5;transition-duration:.06s}}._tv-dialog-content a:not([class*=button]):not([class*=btn]):not([class*=tabs]):not([class*=tab]):not([class*=sbSelector]):not([class*=filter]):not(a[href="#yes"]):not(a[href="#no"]):active{color:#1e88e5;fill:#1e88e5;transition-duration:.06s}._tv-dialog-content .main{padding:0 20px 20px}._tv-dialog-content .main p:first-child{margin-top:0}._tv-dialog-content .main p:last-child{margin-bottom:0}._tv-dialog-content .main .buttons{margin-top:25px;text-align:right}._tv-dialog-content .main .buttons.center{text-align:center}._tv-dialog-content .main .buttons ._tv-button{min-width:60px;text-transform:uppercase}._tv-dialog-content .main-properties{padding:25px}._tv-dialog-content .main-properties.alert-aftertabs,._tv-dialog-content .main-properties.main-properties-aftertabs{padding-top:5px}._tv-dialog-content .main-properties.main-properties-tabless{padding-top:40px}._tv-dialog-content .main-properties td{padding:3px 4px;height:27px}._tv-dialog-content .main-properties td:empty{padding:0}._tv-dialog-content .main-properties td.no-left-indent,._tv-dialog-content .main-properties td:first-child{padding-left:0}._tv-dialog-content .main-properties td:last-child{padding-right:0}._tv-dialog-content .main-properties .percents-label{position:relative;top:5px;left:5px}._tv-dialog-content .main-browser-extension{padding:40px 70px 40px 52px;padding:0}._tv-dialog-content .main-browser-extension .extension-poster{width:328px;height:377px;background:url(../images/dialogs/browser-extension/demo.png) 0 0}._tv-dialog-content .main-browser-extension .left,._tv-dialog-content .main-browser-extension .right{width:50%;box-sizing:border-box}._tv-dialog-content .main-browser-extension .left{float:left;padding:32px 0 0 46px}._tv-dialog-content .main-browser-extension .right{float:right;padding:51px 70px 0 44px}._tv-dialog-content .main-browser-extension .logo{float:left;width:36px;height:36px;background-size:36px 36px;margin-right:10px}._tv-dialog-content .main-browser-extension .logo.chrome{background:url(../images/svg/google-chrome-logo.svg) 0 0}._tv-dialog-content .main-browser-extension .info,._tv-dialog-content .main-browser-extension .name{float:left;clear:right;color:#a9a9a9;width:200px}._tv-dialog-content .main-browser-extension .name{font-size:20px;height:20px;line-height:20px}._tv-dialog-content .main-browser-extension .info{font-size:12px;height:14px;line-height:20px}._tv-dialog-content .main-browser-extension h1{margin-top:48px;margin-bottom:0;font-size:20px;line-height:20px}._tv-dialog-content .main-browser-extension p{color:#c2c5cb;margin:14px 0 28px}._tv-dialog-content .main-browser-extension .install-extension button{height:42px;padding:0 25px;line-height:42px;text-align:center;border:none;font-size:12px;text-transform:uppercase;background:#52c3e7;color:#fff;cursor:pointer}._tv-dialog-content .properties-separator{border-bottom:1px solid #b5b7b9}html.theme-dark ._tv-dialog-content .properties-separator{border-bottom:1px solid #363c4e}._tv-dialog-content ._tv-dialog-checkbox-mask{width:18px;height:16px;position:absolute;top:2px;left:2px;background:url(../images/dialogs/checkbox.png) 0 0}._tv-dialog-content ._tv-dialog-checkbox-mask.radio{background:#fff url(../images/icons.png);background-position:-100px -140px;width:16px}._tv-dialog-content ._tv-dialog-checkbox-mask.disabled{background-position:0 -32px}._tv-dialog-content ._tv-dialog-checkbox-mask-active{background:url(../images/dialogs/checkbox.png) 0 -16px}._tv-dialog-content ._tv-dialog-checkbox-mask-active.radio{background-position:-120px -140px}._tv-dialog-content--with-padding-top{padding-top:40px}._tv-dialog-content form input:not(.tv-control-input)[type=text],._tv-dialog-content form input[type=password],._tv-dialog-text-input{width:100%;box-sizing:border-box;height:33px;border:1px solid #b5b7b9;margin:1px;padding:0 5px;background-color:#fff;color:#4a4a4a}html.theme-dark ._tv-dialog-content form input:not(.tv-control-input)[type=text],html.theme-dark ._tv-dialog-content form input[type=password],html.theme-dark ._tv-dialog-text-input{color:#c5cbce;background-color:#1e222d;border:1px solid #363c4e}._tv-dialog-content form input:not(.tv-control-input)[type=text]:disabled,._tv-dialog-content form input[type=password]:disabled,._tv-dialog-text-input:disabled{color:#5a5a5a;opacity:.5}._tv-dialog-content ._tv-dialog-text-input{height:27px}._tv-dialog-text-input.disabled{color:#909292!important}._tv-dialog-content form input[type=password].error,._tv-dialog-content form input[type=text].error{margin:0;border:2px solid #de5764;background:#f7e4e6;color:#e06571}._tv-dialog-content textarea{color:#4a4a4a;font-size:12px;line-height:18px;border:1px solid;border-color:#b5b7b9;padding:8px 5px;box-sizing:border-box}html.theme-dark ._tv-dialog-content textarea{background:#1e222d;border-color:#363c4e;color:#c5cbce}._tv-dialog-content textarea:disabled{color:#5a5a5a;opacity:.5}._tv-dialog-content form input:not(.tv-control-input)._tv-dialog-content-textactive,._tv-dialog-text-input:focus{background:#fff;border-color:#2196f3!important;color:#595959}html.theme-dark ._tv-dialog-content form input:not(.tv-control-input)._tv-dialog-content-textactive,html.theme-dark ._tv-dialog-text-input:focus{color:#9db2bd;border-color:#1976d2!important;background:#1e222d}._tv-dialog-content textarea{border:1px solid #b5b7b9;background:#fff}html.theme-dark ._tv-dialog-content textarea{border:1px solid #363c4e}._tv-dialog-content textarea._tv-dialog-content-textareaactive{color:#595959;border-color:#2196f3!important}html.theme-dark ._tv-dialog-content textarea._tv-dialog-content-textareaactive{border-color:#1976d2!important}._tv-dialog-content .caption{font-size:11px;color:#4f5966;margin-bottom:3px;margin-top:7px;font-weight:700}html.theme-dark ._tv-dialog-content .caption{color:#f7f8fa}._tv-dialog-content .caption.half{float:left;width:50%}._tv-dialog-content .caption-big{font-size:12px;color:#4f5966;margin:15px 0}html.theme-dark ._tv-dialog-content .caption-big{color:#f7f8fa}._tv-dialog-content .caption-big-center{font-size:12px;color:#4f5966;margin:15px 0;text-align:center}html.theme-dark ._tv-dialog-content .caption-big-center{color:#f7f8fa}._tv-dialog-content .caption-big-center.slim{margin:0;text-align:left}._tv-dialog-content .caption-big-center.slim ul{padding-left:20px}._tv-dialog-content .caption-big.slim{margin:0;text-align:left}._tv-dialog-content .caption.first{margin-top:0}._tv-dialog-content .critical,._tv-dialog-content .disconnect{padding-bottom:15px}._tv-dialog-content .disconnect ol,._tv-dialog-content .disconnect ul{padding-left:1.5em;margin-bottom:0}._tv-dialog-content .disconnect ul{list-style:square}._tv-dialog-content .input input{width:298px!important}._tv-dialog-content .input{margin-bottom:7px}._tv-dialog-content .big-button ._tv-button{padding:10px 50px;background:#fff}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){._tv-dialog-content .big-button ._tv-button:hover{background:#fcfcfc}}._tv-dialog-content label{color:#4a4a4a}html.theme-dark ._tv-dialog-content label{color:#c5cbce}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){._tv-dialog-content .flat:hover:before{border-width:0!important}}._tv-dialog-error,._tv-dialog-message{display:none;position:absolute;top:0;width:100%;font-size:12px;z-index:100;text-align:center}._tv-dialog-error .message,._tv-dialog-message .message{display:table-cell;vertical-align:middle;padding:10px;height:32px}._tv-dialog-error .close,._tv-dialog-message .close{display:none;position:absolute;top:4px;right:4px;width:9px;height:9px;border:4px solid transparent;cursor:pointer;opacity:.7}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){._tv-dialog-error .close:hover,._tv-dialog-message .close:hover{opacity:1}}._tv-dialog-error.with-close .message,._tv-dialog-message.with-close .message{padding:10px 30px}._tv-dialog-error.with-close .close,._tv-dialog-message.with-close .close{display:block}._tv-dialog-error a,._tv-dialog-message a{color:#2196f3;transition:color .35s ease}html.theme-dark ._tv-dialog-error a,html.theme-dark ._tv-dialog-message a{color:#1976d2}._tv-dialog-error a:visited,._tv-dialog-message a:visited{color:#2196f3;fill:#2196f3}html.theme-dark ._tv-dialog-error a:visited,html.theme-dark ._tv-dialog-message a:visited{fill:#1976d2;color:#1976d2}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){._tv-dialog-error a:hover,._tv-dialog-message a:hover{color:#1e88e5;fill:#1e88e5;transition-duration:.06s}}._tv-dialog-error a:active,._tv-dialog-message a:active{color:#1e88e5;fill:#1e88e5;transition-duration:.06s}._tv-dialog-error{color:#c34c36;background:#f9e3e6}html.theme-dark ._tv-dialog-error{background:#6f2626;color:#ffedf0}._tv-dialog-error .close{fill:#9b0202}html.theme-dark ._tv-dialog-error .close{fill:#ffa4b3}._tv-dialog-message{color:#0a8415;background:#e2fde1}html.theme-dark ._tv-dialog-message{background:#21384d;color:#9addcc}._tv-dialog-message .close{fill:#096201}html.theme-dark ._tv-dialog-message .close{fill:#3bc2a1}._tv-dialog-content .dialog-buttons{text-align:right;margin-top:10px}._tv-dialog-content .dialog-comment{float:left;margin-top:15px}._tv-dialog-content .dialog-buttons a{margin:0 0 0 5px;min-width:50px;text-align:center;position:relative}._tv-dialog-content .dialog-buttons a.tv-left{margin:0 5px 0 0}._tv-dialog .ui-resizable-handle{width:11px;height:11px;background:url(../images/dialogs/resize-handle.png) 0 0 no-repeat}._tv-dialog.change-interval-dialog ._tv-dialog-title{text-align:center;font-size:13px;padding:28px 0 23px}._tv-dialog.change-interval-dialog ._tv-dialog-content{padding:0 50px 13px;text-align:center}._tv-dialog.change-interval-dialog ._tv-dialog-content .change-interval-input{box-sizing:border-box;display:block;width:150px;height:76px;border:1px solid #2196f3;text-align:inherit;font-size:43px;color:#4a4a4a;background-color:#fff;text-transform:uppercase}html.theme-dark ._tv-dialog.change-interval-dialog ._tv-dialog-content .change-interval-input{background-color:#2f3241;color:#c5cbce;border:1px solid #1976d2}._tv-dialog.change-interval-dialog ._tv-dialog-content .change-interval-input.error{border-color:#d75442;background-color:#ffefef}._tv-dialog.change-interval-dialog ._tv-dialog-content i{display:block;font-style:normal}._tv-dialog.change-interval-dialog ._tv-dialog-content i.interval-caption{margin:8px 0 15px;color:#a8a8a8;font-size:12px;font-weight:600;cursor:default}._tv-dialog.change-interval-dialog ._tv-dialog-content i.interval-caption.error{color:#d75442}._tv-dialog.change-interval-dialog ._tv-dialog-content i.help-tooltip-trigger{margin:0 auto;width:12px;height:12px;font-size:11px;font-weight:700;line-height:12px;border:1px solid;border-color:rgba(0,0,0,.5);border-radius:50%;cursor:default}html.theme-dark ._tv-dialog.change-interval-dialog ._tv-dialog-content i.help-tooltip-trigger{border-color:rgba(157,178,189,.5)}._tv-dialog-charting-library._tv-dialog{font-size:14px;font-weight:400;background:#f2f5f8}._tv-dialog-charting-library .main{padding:0 20px 20px}._tv-dialog-charting-library .line{height:1px;background:#ced5db;overflow:hidden}._tv-dialog-charting-library .lead-in{margin-bottom:5px}._tv-dialog-charting-library h3{font-size:26px;font-weight:400;text-transform:uppercase;color:#26282f;margin:0}._tv-dialog-charting-library li,._tv-dialog-charting-library p{line-height:28px;margin:0}._tv-dialog-charting-library p,._tv-dialog-charting-library ul{margin:12px 1px}._tv-dialog-charting-library form .dropzone{margin:1px;border:1px dashed rgba(0,0,0,.3);background:#fff;display:inline-block;padding:20px 0;width:140px;height:110px;float:left;box-sizing:border-box}._tv-dialog-charting-library form .dropzone *{box-sizing:border-box}._tv-dialog-charting-library form .dropzone.dz-clickable{cursor:pointer}._tv-dialog-charting-library form .dropzone.dz-started .dz-message{display:none}._tv-dialog-charting-library form .dropzone.dz-drag-hover{border-style:solid}._tv-dialog-charting-library form .dropzone.dz-drag-hover .dz-message{opacity:.5}._tv-dialog-charting-library form .dropzone .dz-message{text-align:center}._tv-dialog-charting-library form .dropzone .dz-message .link{color:#0099d4}._tv-dialog-charting-library form .dropzone .dz-filename{text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-transform:lowercase}._tv-dialog-charting-library form .dropzone .dz-filename span{padding:0 .4em}._tv-dialog-charting-library form .dropzone .dz-icon{padding:1px 42px}._tv-dialog-charting-library form .dropzone .dz-remove{fill:#ff6565;position:relative;top:-80px;left:110px}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){._tv-dialog-charting-library form .dropzone .dz-remove:hover{fill:red}}._tv-dialog-charting-library form>div{margin-bottom:12px}._tv-dialog-charting-library form .description{margin:6px 0}._tv-dialog-charting-library form .agreement{margin-bottom:10px}._tv-dialog-charting-library form .agreement .description{display:inline-block;padding:27px 5px;width:388px}._tv-dialog-charting-library form textarea{width:100%;height:90px;margin:1px}._tv-dialog-charting-library form .attach{cursor:pointer;font-size:14px;font-weight:400}._tv-dialog-charting-library form input[type=text].error{margin:1px}._tv-dialog-charting-library form .two-columns .column-wrap{box-sizing:border-box;display:inline-block;width:50%}._tv-dialog-charting-library form .two-columns .column-wrap:first-child{padding-right:10px}._tv-dialog-charting-library .big-buttons{text-align:right;padding:10px 0}._tv-dialog-charting-library .big-buttons .cancel-button{cursor:pointer;border:1px solid transparent;font-size:15px;margin:0 15px;color:#686868;background:#f2f5f8}._tv-dialog-charting-library .big-buttons .big-button{cursor:pointer;border:1px solid transparent;background-color:#06b2ce;color:#fff;font-size:15px;text-transform:uppercase;padding:10px 45px;background-image:url(../images/button-base-process.gif);background-position:-9999px -9999px;background-repeat:no-repeat}._tv-dialog-charting-library .big-buttons .big-button.process{background-position:0 0;background-repeat:repeat}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){._tv-dialog-charting-library .big-buttons .big-button:hover{background-color:#06bbd8}}._tv-dialog-charting-library .big-buttons .big-button:active{background-color:#07c3e2}._tv-dialog-charting-library .big-buttons .big-button.disabled{cursor:default;background-color:#c3c8cf}._tv-dialog.dialog-highlight .main .message textarea{width:350px;height:130px} \ No newline at end of file diff --git a/public/charting_library/static/bundles/21.7e987db0ed47cc3f789c.rtl.css b/public/charting_library/static/bundles/21.7e987db0ed47cc3f789c.rtl.css new file mode 100644 index 0000000..ddd64e5 --- /dev/null +++ b/public/charting_library/static/bundles/21.7e987db0ed47cc3f789c.rtl.css @@ -0,0 +1 @@ +._tv-dialog-shadowbox{position:fixed;right:0;top:0;width:100%;height:100%;background:rgba(0,0,0,.5);z-index:110;-webkit-transform:translateZ(0)}._tv-dialog-shadowbox.transparent{background:none}._tv-dialog{position:absolute;min-height:18px;left:50%;top:50%;background:#fff;border:1px solid;border-color:#b5b7b9;box-shadow:0 0 10px 0 rgba(0,0,0,.15)}html.theme-dark ._tv-dialog{border-color:#363c4e;background:#1e222d}._tv-dialog__link{color:#2196f3;transition:color .35s ease}html.theme-dark ._tv-dialog__link{color:#1976d2}._tv-dialog__link:visited{color:#2196f3;fill:#2196f3}html.theme-dark ._tv-dialog__link:visited{fill:#1976d2;color:#1976d2}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){._tv-dialog__link:hover{color:#1e88e5;fill:#1e88e5;transition-duration:.06s}}._tv-dialog__link:active{color:#1e88e5;fill:#1e88e5;transition-duration:.06s}._tv-dialog__indented-list{padding-right:20px}._tv-dialog__highlightedText{box-shadow:0 0 0 .37em #fff2cf;background:#fff2cf}html.theme-dark ._tv-dialog__highlightedText{background:#194453;box-shadow:0 0 0 .37em #194453}._tv-dialog__highlightedText:empty{background:transparent;box-shadow:none}._tv-dialog__subTitle{margin-top:20px;font-weight:700;display:block}._tv-dialog._tv-dialog-min-width{min-width:400px}._tv-dialog--alert-email a,._tv-dialog--open-a-chart a{color:#2196f3;transition:color .35s ease}html.theme-dark ._tv-dialog--alert-email a,html.theme-dark ._tv-dialog--open-a-chart a{color:#1976d2}._tv-dialog--alert-email a:visited,._tv-dialog--open-a-chart a:visited{color:#2196f3;fill:#2196f3}html.theme-dark ._tv-dialog--alert-email a:visited,html.theme-dark ._tv-dialog--open-a-chart a:visited{fill:#1976d2;color:#1976d2}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){._tv-dialog--alert-email a:hover,._tv-dialog--open-a-chart a:hover{color:#1e88e5;fill:#1e88e5;transition-duration:.06s}}._tv-dialog--alert-email a:active,._tv-dialog--open-a-chart a:active{color:#1e88e5;fill:#1e88e5;transition-duration:.06s}._tv-dialog.ui-resizable{position:absolute}._tv-dialog-title{color:#4c525e;font-weight:700;font-size:15px;padding:17px 20px 17px 35px;cursor:default;word-wrap:break-word}html.theme-dark ._tv-dialog-title{color:#d6d8e0}._tv-dialog-title._tv-dialog-title-no-close{padding-left:20px}._tv-dialog-title._tv-dialog-title-hidden{padding:0;font-size:0;color:transparent;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}._tv-dialog-title ._tv-dialog-title-close{width:21px;height:21px;display:block;position:absolute;left:15px;top:13px;cursor:pointer;z-index:1}._tv-dialog-title ._tv-dialog-title-close:after{width:9px;height:9px;content:" ";position:absolute;top:6px;right:6px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAASCAYAAACJgPRIAAAAUElEQVR42pWQMQoAIAwD++d+x8HJbyoOWXJDSSBgwpVS62vtc8ulXg/ZAZkFMycNoBJgXoUcX1cm9N1NSL0esgMyC2ZOGkAlwLwKObhu/qcHp/zWImEdH8EAAAAASUVORK5CYII=);display:block}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){._tv-dialog-title ._tv-dialog-title-close:hover:after{background-position:bottom}}._tv-dialog-content{color:#131722;max-width:100%}html.theme-dark ._tv-dialog-content{color:#d6d8e0}._tv-dialog-content a:not([class*=button]):not([class*=btn]):not([class*=tabs]):not([class*=tab]):not([class*=sbSelector]):not([class*=filter]):not(a[href="#yes"]):not(a[href="#no"]){color:#2196f3;transition:color .35s ease}html.theme-dark ._tv-dialog-content a:not([class*=button]):not([class*=btn]):not([class*=tabs]):not([class*=tab]):not([class*=sbSelector]):not([class*=filter]):not(a[href="#yes"]):not(a[href="#no"]){color:#1976d2}._tv-dialog-content a:not([class*=button]):not([class*=btn]):not([class*=tabs]):not([class*=tab]):not([class*=sbSelector]):not([class*=filter]):not(a[href="#yes"]):not(a[href="#no"]):visited{color:#2196f3;fill:#2196f3}html.theme-dark ._tv-dialog-content a:not([class*=button]):not([class*=btn]):not([class*=tabs]):not([class*=tab]):not([class*=sbSelector]):not([class*=filter]):not(a[href="#yes"]):not(a[href="#no"]):visited{fill:#1976d2;color:#1976d2}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){._tv-dialog-content a:not([class*=button]):not([class*=btn]):not([class*=tabs]):not([class*=tab]):not([class*=sbSelector]):not([class*=filter]):not(a[href="#yes"]):not(a[href="#no"]):hover{color:#1e88e5;fill:#1e88e5;transition-duration:.06s}}._tv-dialog-content a:not([class*=button]):not([class*=btn]):not([class*=tabs]):not([class*=tab]):not([class*=sbSelector]):not([class*=filter]):not(a[href="#yes"]):not(a[href="#no"]):active{color:#1e88e5;fill:#1e88e5;transition-duration:.06s}._tv-dialog-content .main{padding:0 20px 20px}._tv-dialog-content .main p:first-child{margin-top:0}._tv-dialog-content .main p:last-child{margin-bottom:0}._tv-dialog-content .main .buttons{margin-top:25px;text-align:left}._tv-dialog-content .main .buttons.center{text-align:center}._tv-dialog-content .main .buttons ._tv-button{min-width:60px;text-transform:uppercase}._tv-dialog-content .main-properties{padding:25px}._tv-dialog-content .main-properties.alert-aftertabs,._tv-dialog-content .main-properties.main-properties-aftertabs{padding-top:5px}._tv-dialog-content .main-properties.main-properties-tabless{padding-top:40px}._tv-dialog-content .main-properties td{padding:3px 4px;height:27px}._tv-dialog-content .main-properties td:empty{padding:0}._tv-dialog-content .main-properties td.no-left-indent,._tv-dialog-content .main-properties td:first-child{padding-right:0}._tv-dialog-content .main-properties td:last-child{padding-left:0}._tv-dialog-content .main-properties .percents-label{position:relative;top:5px;right:5px}._tv-dialog-content .main-browser-extension{padding:40px 52px 40px 70px;padding:0}._tv-dialog-content .main-browser-extension .extension-poster{width:328px;height:377px;background:url(../images/dialogs/browser-extension/demo.png) 100% 0}._tv-dialog-content .main-browser-extension .left,._tv-dialog-content .main-browser-extension .right{width:50%;box-sizing:border-box}._tv-dialog-content .main-browser-extension .left{float:right;padding:32px 46px 0 0}._tv-dialog-content .main-browser-extension .right{float:left;padding:51px 44px 0 70px}._tv-dialog-content .main-browser-extension .logo{float:right;width:36px;height:36px;background-size:36px 36px;margin-left:10px}._tv-dialog-content .main-browser-extension .logo.chrome{background:url(../images/svg/google-chrome-logo.svg) 100% 0}._tv-dialog-content .main-browser-extension .info,._tv-dialog-content .main-browser-extension .name{float:right;clear:left;color:#a9a9a9;width:200px}._tv-dialog-content .main-browser-extension .name{font-size:20px;height:20px;line-height:20px}._tv-dialog-content .main-browser-extension .info{font-size:12px;height:14px;line-height:20px}._tv-dialog-content .main-browser-extension h1{margin-top:48px;margin-bottom:0;font-size:20px;line-height:20px}._tv-dialog-content .main-browser-extension p{color:#c2c5cb;margin:14px 0 28px}._tv-dialog-content .main-browser-extension .install-extension button{height:42px;padding:0 25px;line-height:42px;text-align:center;border:none;font-size:12px;text-transform:uppercase;background:#52c3e7;color:#fff;cursor:pointer}._tv-dialog-content .properties-separator{border-bottom:1px solid #b5b7b9}html.theme-dark ._tv-dialog-content .properties-separator{border-bottom:1px solid #363c4e}._tv-dialog-content ._tv-dialog-checkbox-mask{width:18px;height:16px;position:absolute;top:2px;right:2px;background:url(../images/dialogs/checkbox.png) 100% 0}._tv-dialog-content ._tv-dialog-checkbox-mask.radio{background:#fff url(../images/icons.png);background-position:-100px -140px;width:16px}._tv-dialog-content ._tv-dialog-checkbox-mask.disabled{background-position:100% -32px}._tv-dialog-content ._tv-dialog-checkbox-mask-active{background:url(../images/dialogs/checkbox.png) 100% -16px}._tv-dialog-content ._tv-dialog-checkbox-mask-active.radio{background-position:-120px -140px}._tv-dialog-content--with-padding-top{padding-top:40px}._tv-dialog-content form input:not(.tv-control-input)[type=text],._tv-dialog-content form input[type=password],._tv-dialog-text-input{width:100%;box-sizing:border-box;height:33px;border:1px solid #b5b7b9;margin:1px;padding:0 5px;background-color:#fff;color:#4a4a4a}html.theme-dark ._tv-dialog-content form input:not(.tv-control-input)[type=text],html.theme-dark ._tv-dialog-content form input[type=password],html.theme-dark ._tv-dialog-text-input{color:#c5cbce;background-color:#1e222d;border:1px solid #363c4e}._tv-dialog-content form input:not(.tv-control-input)[type=text]:disabled,._tv-dialog-content form input[type=password]:disabled,._tv-dialog-text-input:disabled{color:#5a5a5a;opacity:.5}._tv-dialog-content ._tv-dialog-text-input{height:27px}._tv-dialog-text-input.disabled{color:#909292!important}._tv-dialog-content form input[type=password].error,._tv-dialog-content form input[type=text].error{margin:0;border:2px solid #de5764;background:#f7e4e6;color:#e06571}._tv-dialog-content textarea{color:#4a4a4a;font-size:12px;line-height:18px;border:1px solid;border-color:#b5b7b9;padding:8px 5px;box-sizing:border-box}html.theme-dark ._tv-dialog-content textarea{background:#1e222d;border-color:#363c4e;color:#c5cbce}._tv-dialog-content textarea:disabled{color:#5a5a5a;opacity:.5}._tv-dialog-content form input:not(.tv-control-input)._tv-dialog-content-textactive,._tv-dialog-text-input:focus{background:#fff;border-color:#2196f3!important;color:#595959}html.theme-dark ._tv-dialog-content form input:not(.tv-control-input)._tv-dialog-content-textactive,html.theme-dark ._tv-dialog-text-input:focus{color:#9db2bd;border-color:#1976d2!important;background:#1e222d}._tv-dialog-content textarea{border:1px solid #b5b7b9;background:#fff}html.theme-dark ._tv-dialog-content textarea{border:1px solid #363c4e}._tv-dialog-content textarea._tv-dialog-content-textareaactive{color:#595959;border-color:#2196f3!important}html.theme-dark ._tv-dialog-content textarea._tv-dialog-content-textareaactive{border-color:#1976d2!important}._tv-dialog-content .caption{font-size:11px;color:#4f5966;margin-bottom:3px;margin-top:7px;font-weight:700}html.theme-dark ._tv-dialog-content .caption{color:#f7f8fa}._tv-dialog-content .caption.half{float:right;width:50%}._tv-dialog-content .caption-big{font-size:12px;color:#4f5966;margin:15px 0}html.theme-dark ._tv-dialog-content .caption-big{color:#f7f8fa}._tv-dialog-content .caption-big-center{font-size:12px;color:#4f5966;margin:15px 0;text-align:center}html.theme-dark ._tv-dialog-content .caption-big-center{color:#f7f8fa}._tv-dialog-content .caption-big-center.slim{margin:0;text-align:right}._tv-dialog-content .caption-big-center.slim ul{padding-right:20px}._tv-dialog-content .caption-big.slim{margin:0;text-align:right}._tv-dialog-content .caption.first{margin-top:0}._tv-dialog-content .critical,._tv-dialog-content .disconnect{padding-bottom:15px}._tv-dialog-content .disconnect ol,._tv-dialog-content .disconnect ul{padding-right:1.5em;margin-bottom:0}._tv-dialog-content .disconnect ul{list-style:square}._tv-dialog-content .input input{width:298px!important}._tv-dialog-content .input{margin-bottom:7px}._tv-dialog-content .big-button ._tv-button{padding:10px 50px;background:#fff}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){._tv-dialog-content .big-button ._tv-button:hover{background:#fcfcfc}}._tv-dialog-content label{color:#4a4a4a}html.theme-dark ._tv-dialog-content label{color:#c5cbce}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){._tv-dialog-content .flat:hover:before{border-width:0!important}}._tv-dialog-error,._tv-dialog-message{display:none;position:absolute;top:0;width:100%;font-size:12px;z-index:100;text-align:center}._tv-dialog-error .message,._tv-dialog-message .message{display:table-cell;vertical-align:middle;padding:10px;height:32px}._tv-dialog-error .close,._tv-dialog-message .close{display:none;position:absolute;top:4px;left:4px;width:9px;height:9px;border:4px solid transparent;cursor:pointer;opacity:.7}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){._tv-dialog-error .close:hover,._tv-dialog-message .close:hover{opacity:1}}._tv-dialog-error.with-close .message,._tv-dialog-message.with-close .message{padding:10px 30px}._tv-dialog-error.with-close .close,._tv-dialog-message.with-close .close{display:block}._tv-dialog-error a,._tv-dialog-message a{color:#2196f3;transition:color .35s ease}html.theme-dark ._tv-dialog-error a,html.theme-dark ._tv-dialog-message a{color:#1976d2}._tv-dialog-error a:visited,._tv-dialog-message a:visited{color:#2196f3;fill:#2196f3}html.theme-dark ._tv-dialog-error a:visited,html.theme-dark ._tv-dialog-message a:visited{fill:#1976d2;color:#1976d2}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){._tv-dialog-error a:hover,._tv-dialog-message a:hover{color:#1e88e5;fill:#1e88e5;transition-duration:.06s}}._tv-dialog-error a:active,._tv-dialog-message a:active{color:#1e88e5;fill:#1e88e5;transition-duration:.06s}._tv-dialog-error{color:#c34c36;background:#f9e3e6}html.theme-dark ._tv-dialog-error{background:#6f2626;color:#ffedf0}._tv-dialog-error .close{fill:#9b0202}html.theme-dark ._tv-dialog-error .close{fill:#ffa4b3}._tv-dialog-message{color:#0a8415;background:#e2fde1}html.theme-dark ._tv-dialog-message{background:#21384d;color:#9addcc}._tv-dialog-message .close{fill:#096201}html.theme-dark ._tv-dialog-message .close{fill:#3bc2a1}._tv-dialog-content .dialog-buttons{text-align:left;margin-top:10px}._tv-dialog-content .dialog-comment{float:right;margin-top:15px}._tv-dialog-content .dialog-buttons a{margin:0 5px 0 0;min-width:50px;text-align:center;position:relative}._tv-dialog-content .dialog-buttons a.tv-left{margin:0 0 0 5px}._tv-dialog .ui-resizable-handle{width:11px;height:11px;background:url(../images/dialogs/resize-handle.png) 100% 0 no-repeat}._tv-dialog.change-interval-dialog ._tv-dialog-title{text-align:center;font-size:13px;padding:28px 0 23px}._tv-dialog.change-interval-dialog ._tv-dialog-content{padding:0 50px 13px;text-align:center}._tv-dialog.change-interval-dialog ._tv-dialog-content .change-interval-input{box-sizing:border-box;display:block;width:150px;height:76px;border:1px solid #2196f3;text-align:inherit;font-size:43px;color:#4a4a4a;background-color:#fff;text-transform:uppercase}html.theme-dark ._tv-dialog.change-interval-dialog ._tv-dialog-content .change-interval-input{background-color:#2f3241;color:#c5cbce;border:1px solid #1976d2}._tv-dialog.change-interval-dialog ._tv-dialog-content .change-interval-input.error{border-color:#d75442;background-color:#ffefef}._tv-dialog.change-interval-dialog ._tv-dialog-content i{display:block;font-style:normal}._tv-dialog.change-interval-dialog ._tv-dialog-content i.interval-caption{margin:8px 0 15px;color:#a8a8a8;font-size:12px;font-weight:600;cursor:default}._tv-dialog.change-interval-dialog ._tv-dialog-content i.interval-caption.error{color:#d75442}._tv-dialog.change-interval-dialog ._tv-dialog-content i.help-tooltip-trigger{margin:0 auto;width:12px;height:12px;font-size:11px;font-weight:700;line-height:12px;border:1px solid;border-color:rgba(0,0,0,.5);border-radius:50%;cursor:default}html.theme-dark ._tv-dialog.change-interval-dialog ._tv-dialog-content i.help-tooltip-trigger{border-color:rgba(157,178,189,.5)}._tv-dialog-charting-library._tv-dialog{font-size:14px;font-weight:400;background:#f2f5f8}._tv-dialog-charting-library .main{padding:0 20px 20px}._tv-dialog-charting-library .line{height:1px;background:#ced5db;overflow:hidden}._tv-dialog-charting-library .lead-in{margin-bottom:5px}._tv-dialog-charting-library h3{font-size:26px;font-weight:400;text-transform:uppercase;color:#26282f;margin:0}._tv-dialog-charting-library li,._tv-dialog-charting-library p{line-height:28px;margin:0}._tv-dialog-charting-library p,._tv-dialog-charting-library ul{margin:12px 1px}._tv-dialog-charting-library form .dropzone{margin:1px;border:1px dashed rgba(0,0,0,.3);background:#fff;display:inline-block;padding:20px 0;width:140px;height:110px;float:right;box-sizing:border-box}._tv-dialog-charting-library form .dropzone *{box-sizing:border-box}._tv-dialog-charting-library form .dropzone.dz-clickable{cursor:pointer}._tv-dialog-charting-library form .dropzone.dz-started .dz-message{display:none}._tv-dialog-charting-library form .dropzone.dz-drag-hover{border-style:solid}._tv-dialog-charting-library form .dropzone.dz-drag-hover .dz-message{opacity:.5}._tv-dialog-charting-library form .dropzone .dz-message{text-align:center}._tv-dialog-charting-library form .dropzone .dz-message .link{color:#0099d4}._tv-dialog-charting-library form .dropzone .dz-filename{text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-transform:lowercase}._tv-dialog-charting-library form .dropzone .dz-filename span{padding:0 .4em}._tv-dialog-charting-library form .dropzone .dz-icon{padding:1px 42px}._tv-dialog-charting-library form .dropzone .dz-remove{fill:#ff6565;position:relative;top:-80px;right:110px}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){._tv-dialog-charting-library form .dropzone .dz-remove:hover{fill:red}}._tv-dialog-charting-library form>div{margin-bottom:12px}._tv-dialog-charting-library form .description{margin:6px 0}._tv-dialog-charting-library form .agreement{margin-bottom:10px}._tv-dialog-charting-library form .agreement .description{display:inline-block;padding:27px 5px;width:388px}._tv-dialog-charting-library form textarea{width:100%;height:90px;margin:1px}._tv-dialog-charting-library form .attach{cursor:pointer;font-size:14px;font-weight:400}._tv-dialog-charting-library form input[type=text].error{margin:1px}._tv-dialog-charting-library form .two-columns .column-wrap{box-sizing:border-box;display:inline-block;width:50%}._tv-dialog-charting-library form .two-columns .column-wrap:first-child{padding-left:10px}._tv-dialog-charting-library .big-buttons{text-align:left;padding:10px 0}._tv-dialog-charting-library .big-buttons .cancel-button{cursor:pointer;border:1px solid transparent;font-size:15px;margin:0 15px;color:#686868;background:#f2f5f8}._tv-dialog-charting-library .big-buttons .big-button{cursor:pointer;border:1px solid transparent;background-color:#06b2ce;color:#fff;font-size:15px;text-transform:uppercase;padding:10px 45px;background-image:url(../images/button-base-process.gif);background-position:-9999px -9999px;background-repeat:no-repeat}._tv-dialog-charting-library .big-buttons .big-button.process{background-position:100% 0;background-repeat:repeat}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){._tv-dialog-charting-library .big-buttons .big-button:hover{background-color:#06bbd8}}._tv-dialog-charting-library .big-buttons .big-button:active{background-color:#07c3e2}._tv-dialog-charting-library .big-buttons .big-button.disabled{cursor:default;background-color:#c3c8cf}._tv-dialog.dialog-highlight .main .message textarea{width:350px;height:130px} \ No newline at end of file diff --git a/public/charting_library/static/bundles/21.fc856808959a5b8734f7.js b/public/charting_library/static/bundles/21.fc856808959a5b8734f7.js new file mode 100644 index 0000000..c2fd308 --- /dev/null +++ b/public/charting_library/static/bundles/21.fc856808959a5b8734f7.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[21],[]]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/22.c118eafc7686081984c8.js b/public/charting_library/static/bundles/22.c118eafc7686081984c8.js new file mode 100644 index 0000000..cf9d765 --- /dev/null +++ b/public/charting_library/static/bundles/22.c118eafc7686081984c8.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[22],[]]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/22.f31ebffc8672752a2d4b.css b/public/charting_library/static/bundles/22.f31ebffc8672752a2d4b.css new file mode 100644 index 0000000..849acdb --- /dev/null +++ b/public/charting_library/static/bundles/22.f31ebffc8672752a2d4b.css @@ -0,0 +1 @@ +.button-2ioYhFEY-{display:flex;align-items:center;height:100%;box-sizing:border-box;cursor:default;transition:background-color 60ms ease,opacity 60ms ease,color 60ms ease;color:#131722}html.theme-dark .button-2ioYhFEY-{color:#787b86}.button-2ioYhFEY-:active{color:#000}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.button-2ioYhFEY-:hover{color:#000}}html.theme-dark .button-2ioYhFEY-:active{color:#868993}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .button-2ioYhFEY-:hover{color:#868993}}.button-2ioYhFEY- svg{display:block;fill:currentColor;-moz-transform:translateX(0)}.button-2ioYhFEY-.isInteractive-20uLObIc-{position:relative;z-index:0}.button-2ioYhFEY-.isInteractive-20uLObIc-.hover-yHQNmTbI-:before,.button-2ioYhFEY-.isInteractive-20uLObIc-:active:before{content:"";display:block;position:absolute;z-index:-1;top:2px;right:2px;bottom:2px;left:2px;background-color:#f0f3fa;border-radius:2px}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.button-2ioYhFEY-.isInteractive-20uLObIc-:hover:before{content:"";display:block;position:absolute;z-index:-1;top:2px;right:2px;bottom:2px;left:2px;background-color:#f0f3fa;border-radius:2px}}html.theme-dark .button-2ioYhFEY-.isInteractive-20uLObIc-.hover-yHQNmTbI-:before,html.theme-dark .button-2ioYhFEY-.isInteractive-20uLObIc-:active:before{background-color:#2a2e39}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .button-2ioYhFEY-.isInteractive-20uLObIc-:hover:before{background-color:#2a2e39}}.button-2ioYhFEY-.isInteractive-20uLObIc-.isGrouped-2BBXQnbO-{position:relative;z-index:0}.button-2ioYhFEY-.isInteractive-20uLObIc-.isGrouped-2BBXQnbO-.hover-yHQNmTbI-:before,.button-2ioYhFEY-.isInteractive-20uLObIc-.isGrouped-2BBXQnbO-:active:before{content:"";display:block;position:absolute;z-index:-1;top:2px;right:2px;bottom:2px;left:2px;background-color:#f0f3fa;border-radius:2px;right:0;left:0}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.button-2ioYhFEY-.isInteractive-20uLObIc-.isGrouped-2BBXQnbO-:hover:before{content:"";display:block;position:absolute;z-index:-1;top:2px;right:2px;bottom:2px;left:2px;background-color:#f0f3fa;border-radius:2px;right:0;left:0}}html.theme-dark .button-2ioYhFEY-.isInteractive-20uLObIc-.isGrouped-2BBXQnbO-.hover-yHQNmTbI-:before,html.theme-dark .button-2ioYhFEY-.isInteractive-20uLObIc-.isGrouped-2BBXQnbO-:active:before{background-color:#2a2e39}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .button-2ioYhFEY-.isInteractive-20uLObIc-.isGrouped-2BBXQnbO-:hover:before{background-color:#2a2e39}}.button-2ioYhFEY-.isInteractive-20uLObIc-.isActive-22S-lGpa-{color:#2196f3}html.theme-sa .button-2ioYhFEY-.isInteractive-20uLObIc-.isActive-22S-lGpa-{color:#ff7200}html.theme-dark .button-2ioYhFEY-.isInteractive-20uLObIc-.isActive-22S-lGpa-{color:#1976d2}.button-2ioYhFEY-.isInteractive-20uLObIc-.isActive-22S-lGpa-:active{color:#1e88e5}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.button-2ioYhFEY-.isInteractive-20uLObIc-.isActive-22S-lGpa-:hover{color:#1e88e5}}html.theme-dark .button-2ioYhFEY-.isInteractive-20uLObIc-.isActive-22S-lGpa-:active{color:#1e88e5}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .button-2ioYhFEY-.isInteractive-20uLObIc-.isActive-22S-lGpa-:hover{color:#1e88e5}}.button-2ioYhFEY-.isInteractive-20uLObIc-.isOpened-p-Ume5l9-.hover-yHQNmTbI-:before,.button-2ioYhFEY-.isInteractive-20uLObIc-.isOpened-p-Ume5l9-:active:before,.button-2ioYhFEY-.isInteractive-20uLObIc-.isOpened-p-Ume5l9-:before{content:"";display:block;position:absolute;z-index:-1;top:0;right:0;bottom:0;left:0;border-radius:0;background-color:#f0f3fa}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.button-2ioYhFEY-.isInteractive-20uLObIc-.isOpened-p-Ume5l9-:hover:before{content:"";display:block;position:absolute;z-index:-1;top:0;right:0;bottom:0;left:0;border-radius:0;background-color:#f0f3fa}}html.theme-dark .button-2ioYhFEY-.isInteractive-20uLObIc-.isOpened-p-Ume5l9-.hover-yHQNmTbI-:before,html.theme-dark .button-2ioYhFEY-.isInteractive-20uLObIc-.isOpened-p-Ume5l9-:active:before,html.theme-dark .button-2ioYhFEY-.isInteractive-20uLObIc-.isOpened-p-Ume5l9-:before{background-color:#2a2e39}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .button-2ioYhFEY-.isInteractive-20uLObIc-.isOpened-p-Ume5l9-:hover:before{background-color:#2a2e39}}.button-2ioYhFEY-.isDisabled-1_tmrLfP-{opacity:.3}.button-2ioYhFEY-.isDisabled-1_tmrLfP-,.button-2ioYhFEY-.isDisabled-1_tmrLfP-:active{background-color:transparent}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.button-2ioYhFEY-.isDisabled-1_tmrLfP-:hover{background-color:transparent}}.button-2ioYhFEY-.isDisabled-1_tmrLfP-.isActive-22S-lGpa-{opacity:1;color:#2196f3}html.theme-sa .button-2ioYhFEY-.isDisabled-1_tmrLfP-.isActive-22S-lGpa-{color:#ff7200}html.theme-dark .button-2ioYhFEY-.isDisabled-1_tmrLfP-.isActive-22S-lGpa-{color:#1976d2}.icon-beK_KS0k-+.text-1sK7vbvh-,.text-1sK7vbvh-+.icon-beK_KS0k-{margin-left:2px} \ No newline at end of file diff --git a/public/charting_library/static/bundles/22.f31ebffc8672752a2d4b.rtl.css b/public/charting_library/static/bundles/22.f31ebffc8672752a2d4b.rtl.css new file mode 100644 index 0000000..60fdd2d --- /dev/null +++ b/public/charting_library/static/bundles/22.f31ebffc8672752a2d4b.rtl.css @@ -0,0 +1 @@ +.button-2ioYhFEY-{display:flex;align-items:center;height:100%;box-sizing:border-box;cursor:default;transition:background-color 60ms ease,opacity 60ms ease,color 60ms ease;color:#131722}html.theme-dark .button-2ioYhFEY-{color:#787b86}.button-2ioYhFEY-:active{color:#000}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.button-2ioYhFEY-:hover{color:#000}}html.theme-dark .button-2ioYhFEY-:active{color:#868993}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .button-2ioYhFEY-:hover{color:#868993}}.button-2ioYhFEY- svg{display:block;fill:currentColor;-moz-transform:translateX(0)}.button-2ioYhFEY-.isInteractive-20uLObIc-{position:relative;z-index:0}.button-2ioYhFEY-.isInteractive-20uLObIc-.hover-yHQNmTbI-:before,.button-2ioYhFEY-.isInteractive-20uLObIc-:active:before{content:"";display:block;position:absolute;z-index:-1;top:2px;left:2px;bottom:2px;right:2px;background-color:#f0f3fa;border-radius:2px}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.button-2ioYhFEY-.isInteractive-20uLObIc-:hover:before{content:"";display:block;position:absolute;z-index:-1;top:2px;left:2px;bottom:2px;right:2px;background-color:#f0f3fa;border-radius:2px}}html.theme-dark .button-2ioYhFEY-.isInteractive-20uLObIc-.hover-yHQNmTbI-:before,html.theme-dark .button-2ioYhFEY-.isInteractive-20uLObIc-:active:before{background-color:#2a2e39}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .button-2ioYhFEY-.isInteractive-20uLObIc-:hover:before{background-color:#2a2e39}}.button-2ioYhFEY-.isInteractive-20uLObIc-.isGrouped-2BBXQnbO-{position:relative;z-index:0}.button-2ioYhFEY-.isInteractive-20uLObIc-.isGrouped-2BBXQnbO-.hover-yHQNmTbI-:before,.button-2ioYhFEY-.isInteractive-20uLObIc-.isGrouped-2BBXQnbO-:active:before{content:"";display:block;position:absolute;z-index:-1;top:2px;left:2px;bottom:2px;right:2px;background-color:#f0f3fa;border-radius:2px;left:0;right:0}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.button-2ioYhFEY-.isInteractive-20uLObIc-.isGrouped-2BBXQnbO-:hover:before{content:"";display:block;position:absolute;z-index:-1;top:2px;left:2px;bottom:2px;right:2px;background-color:#f0f3fa;border-radius:2px;left:0;right:0}}html.theme-dark .button-2ioYhFEY-.isInteractive-20uLObIc-.isGrouped-2BBXQnbO-.hover-yHQNmTbI-:before,html.theme-dark .button-2ioYhFEY-.isInteractive-20uLObIc-.isGrouped-2BBXQnbO-:active:before{background-color:#2a2e39}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .button-2ioYhFEY-.isInteractive-20uLObIc-.isGrouped-2BBXQnbO-:hover:before{background-color:#2a2e39}}.button-2ioYhFEY-.isInteractive-20uLObIc-.isActive-22S-lGpa-{color:#2196f3}html.theme-sa .button-2ioYhFEY-.isInteractive-20uLObIc-.isActive-22S-lGpa-{color:#ff7200}html.theme-dark .button-2ioYhFEY-.isInteractive-20uLObIc-.isActive-22S-lGpa-{color:#1976d2}.button-2ioYhFEY-.isInteractive-20uLObIc-.isActive-22S-lGpa-:active{color:#1e88e5}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.button-2ioYhFEY-.isInteractive-20uLObIc-.isActive-22S-lGpa-:hover{color:#1e88e5}}html.theme-dark .button-2ioYhFEY-.isInteractive-20uLObIc-.isActive-22S-lGpa-:active{color:#1e88e5}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .button-2ioYhFEY-.isInteractive-20uLObIc-.isActive-22S-lGpa-:hover{color:#1e88e5}}.button-2ioYhFEY-.isInteractive-20uLObIc-.isOpened-p-Ume5l9-.hover-yHQNmTbI-:before,.button-2ioYhFEY-.isInteractive-20uLObIc-.isOpened-p-Ume5l9-:active:before,.button-2ioYhFEY-.isInteractive-20uLObIc-.isOpened-p-Ume5l9-:before{content:"";display:block;position:absolute;z-index:-1;top:0;left:0;bottom:0;right:0;border-radius:0;background-color:#f0f3fa}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.button-2ioYhFEY-.isInteractive-20uLObIc-.isOpened-p-Ume5l9-:hover:before{content:"";display:block;position:absolute;z-index:-1;top:0;left:0;bottom:0;right:0;border-radius:0;background-color:#f0f3fa}}html.theme-dark .button-2ioYhFEY-.isInteractive-20uLObIc-.isOpened-p-Ume5l9-.hover-yHQNmTbI-:before,html.theme-dark .button-2ioYhFEY-.isInteractive-20uLObIc-.isOpened-p-Ume5l9-:active:before,html.theme-dark .button-2ioYhFEY-.isInteractive-20uLObIc-.isOpened-p-Ume5l9-:before{background-color:#2a2e39}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .button-2ioYhFEY-.isInteractive-20uLObIc-.isOpened-p-Ume5l9-:hover:before{background-color:#2a2e39}}.button-2ioYhFEY-.isDisabled-1_tmrLfP-{opacity:.3}.button-2ioYhFEY-.isDisabled-1_tmrLfP-,.button-2ioYhFEY-.isDisabled-1_tmrLfP-:active{background-color:transparent}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.button-2ioYhFEY-.isDisabled-1_tmrLfP-:hover{background-color:transparent}}.button-2ioYhFEY-.isDisabled-1_tmrLfP-.isActive-22S-lGpa-{opacity:1;color:#2196f3}html.theme-sa .button-2ioYhFEY-.isDisabled-1_tmrLfP-.isActive-22S-lGpa-{color:#ff7200}html.theme-dark .button-2ioYhFEY-.isDisabled-1_tmrLfP-.isActive-22S-lGpa-{color:#1976d2}.icon-beK_KS0k-+.text-1sK7vbvh-,.text-1sK7vbvh-+.icon-beK_KS0k-{margin-right:2px} \ No newline at end of file diff --git a/public/charting_library/static/bundles/23.7c4be219df640cb3880c.css b/public/charting_library/static/bundles/23.7c4be219df640cb3880c.css new file mode 100644 index 0000000..2d72481 --- /dev/null +++ b/public/charting_library/static/bundles/23.7c4be219df640cb3880c.css @@ -0,0 +1 @@ +.dialog-34XTwGTT-{position:fixed;min-width:280px;width:100%;max-width:380px}.dialog-34XTwGTT- [data-dragg-area]{cursor:url(grab.bc156522a6b55a60be9fae15c14b66c5.cur),move;cursor:grab}.dialog-34XTwGTT- [data-dragg-area].dragging-33JfMDO6-{cursor:url(grabbing.1c0862a8a8c0fb02885557bc97fdafe7.cur),move;cursor:grabbing} \ No newline at end of file diff --git a/public/charting_library/static/bundles/23.7c4be219df640cb3880c.rtl.css b/public/charting_library/static/bundles/23.7c4be219df640cb3880c.rtl.css new file mode 100644 index 0000000..2d72481 --- /dev/null +++ b/public/charting_library/static/bundles/23.7c4be219df640cb3880c.rtl.css @@ -0,0 +1 @@ +.dialog-34XTwGTT-{position:fixed;min-width:280px;width:100%;max-width:380px}.dialog-34XTwGTT- [data-dragg-area]{cursor:url(grab.bc156522a6b55a60be9fae15c14b66c5.cur),move;cursor:grab}.dialog-34XTwGTT- [data-dragg-area].dragging-33JfMDO6-{cursor:url(grabbing.1c0862a8a8c0fb02885557bc97fdafe7.cur),move;cursor:grabbing} \ No newline at end of file diff --git a/public/charting_library/static/bundles/23.e89d09694523563b8f86.js b/public/charting_library/static/bundles/23.e89d09694523563b8f86.js new file mode 100644 index 0000000..0c17a67 --- /dev/null +++ b/public/charting_library/static/bundles/23.e89d09694523563b8f86.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[23],[]]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/24.319f9ed9725f3cea260a.js b/public/charting_library/static/bundles/24.319f9ed9725f3cea260a.js new file mode 100644 index 0000000..ea6bb24 --- /dev/null +++ b/public/charting_library/static/bundles/24.319f9ed9725f3cea260a.js @@ -0,0 +1,8 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[24],{"2dtg":function(o,e){o.exports=''},"2lje":function(o,e){o.exports=''},"3s8f":function(o,e){o.exports=''},"43BO":function(o,e){o.exports=''},"6oLA":function(o,e){o.exports=''},Csdk:function(o,e){o.exports=''},FVBd:function(o,e){ +o.exports=''},G1jy:function(o,e){o.exports=''},Ijvb:function(o,e,i){"use strict";i.d(e,"a",function(){return n});var n={SyncDrawing:i("G1jy"),arrow:i("tceb"),cursor:i("WHEt"),dot:i("Csdk"),drawginmode:i("2dtg"),drawginmodeActive:i("FVBd"),eraser:i("2lje"),group:i("lZXH"),hideAllDrawings:i("6oLA"),hideAllDrawingsActive:i("dmHa"),lockAllDrawings:i("Uh5y"),lockAllDrawingsActive:i("43BO"),magnet:i("3s8f"),strongMagnet:i("xjKU"),measure:i("oCKS"),removeAllDrawingTools:i("aVjL"),showObjectTree:i("qQ3E"),zoom:i("kmdM"),"zoom-out":i("mbEK")}},"MP+M":function(o,e,i){"use strict";var n,l,t,a,c,s,r;i.d(e,"a",function(){return r}),i("YFKU"),n=i("ei7k"),l=i("zxD0"),t=i("Ijvb"),a={keys:["Shift"],text:window.t("{0} — drawing a straight line at angles of 45")},c={keys:["Shift"],text:window.t("{0} — circle")},s={keys:["Shift"],text:window.t("{0} — square")},r={LineTool5PointsPattern:{icon:l.lineToolsIcons.LineTool5PointsPattern,localizedName:window.t("XABCD Pattern")},LineToolABCD:{icon:l.lineToolsIcons.LineToolABCD,localizedName:window.t("ABCD Pattern")},LineToolArc:{icon:l.lineToolsIcons.LineToolArc,localizedName:window.t("Arc")},LineToolArrow:{icon:l.lineToolsIcons.LineToolArrow,localizedName:window.t("Arrow")},LineToolArrowMarkDown:{icon:l.lineToolsIcons.LineToolArrowMarkDown,localizedName:window.t("Arrow Mark Down")},LineToolArrowMarkLeft:{icon:l.lineToolsIcons.LineToolArrowMarkLeft,localizedName:window.t("Arrow Mark Left")},LineToolArrowMarkRight:{icon:l.lineToolsIcons.LineToolArrowMarkRight,localizedName:window.t("Arrow Mark Right")},LineToolArrowMarkUp:{ +icon:l.lineToolsIcons.LineToolArrowMarkUp,localizedName:window.t("Arrow Mark Up")},LineToolBalloon:{icon:l.lineToolsIcons.LineToolBalloon,localizedName:window.t("Balloon")},LineToolBarsPattern:{icon:l.lineToolsIcons.LineToolBarsPattern,localizedName:window.t("Bars Pattern")},LineToolBezierCubic:{icon:l.lineToolsIcons.LineToolBezierCubic,localizedName:window.t("Double Curve")},LineToolBezierQuadro:{icon:l.lineToolsIcons.LineToolBezierQuadro,localizedName:window.t("Curve")},LineToolBrush:{icon:l.lineToolsIcons.LineToolBrush,localizedName:window.t("Brush")},LineToolCallout:{icon:l.lineToolsIcons.LineToolCallout,localizedName:window.t("Callout")},LineToolCircleLines:{icon:l.lineToolsIcons.LineToolCircleLines,localizedName:window.t("Cyclic Lines")},LineToolCypherPattern:{icon:l.lineToolsIcons.LineToolCypherPattern,localizedName:window.t("Cypher Pattern")},LineToolDateAndPriceRange:{icon:l.lineToolsIcons.LineToolDateAndPriceRange,localizedName:window.t("Date and Price Range")},LineToolDateRange:{icon:l.lineToolsIcons.LineToolDateRange,localizedName:window.t("Date Range")},LineToolDisjointAngle:{icon:l.lineToolsIcons.LineToolDisjointAngle,localizedName:window.t("Disjoint Angle"),hotKey:Object(n.b)(a)},LineToolElliottCorrection:{icon:l.lineToolsIcons.LineToolElliottCorrection,localizedName:window.t("Elliott Correction Wave (ABC)")},LineToolElliottDoubleCombo:{icon:l.lineToolsIcons.LineToolElliottDoubleCombo,localizedName:window.t("Elliott Double Combo Wave (WXY)")},LineToolElliottImpulse:{icon:l.lineToolsIcons.LineToolElliottImpulse,localizedName:window.t("Elliott Impulse Wave (12345)")},LineToolElliottTriangle:{icon:l.lineToolsIcons.LineToolElliottTriangle,localizedName:window.t("Elliott Triangle Wave (ABCDE)")},LineToolElliottTripleCombo:{icon:l.lineToolsIcons.LineToolElliottTripleCombo,localizedName:window.t("Elliott Triple Combo Wave (WXYXZ)")},LineToolEllipse:{icon:l.lineToolsIcons.LineToolEllipse,localizedName:window.t("Ellipse"),hotKey:Object(n.b)(c)},LineToolExtended:{icon:l.lineToolsIcons.LineToolExtended,localizedName:window.t("Extended")},LineToolFibChannel:{icon:l.lineToolsIcons.LineToolFibChannel,localizedName:window.t("Fib Channel")},LineToolFibCircles:{icon:l.lineToolsIcons.LineToolFibCircles,localizedName:window.t("Fib Circles"),hotKey:Object(n.b)(c)},LineToolFibRetracement:{icon:l.lineToolsIcons.LineToolFibRetracement,localizedName:window.t("Fib Retracement")},LineToolFibSpeedResistanceArcs:{icon:l.lineToolsIcons.LineToolFibSpeedResistanceArcs,localizedName:window.t("Fib Speed Resistance Arcs")},LineToolFibSpeedResistanceFan:{icon:l.lineToolsIcons.LineToolFibSpeedResistanceFan,localizedName:window.t("Fib Speed Resistance Fan"),hotKey:Object(n.b)(s)},LineToolFibSpiral:{icon:l.lineToolsIcons.LineToolFibSpiral,localizedName:window.t("Fib Spiral")},LineToolFibTimeZone:{icon:l.lineToolsIcons.LineToolFibTimeZone,localizedName:window.t("Fib Time Zone")},LineToolFibWedge:{icon:l.lineToolsIcons.LineToolFibWedge,localizedName:window.t("Fib Wedge")},LineToolFlagMark:{icon:l.lineToolsIcons.LineToolFlagMark, +localizedName:window.t("Flag Mark")},LineToolFlatBottom:{icon:l.lineToolsIcons.LineToolFlatBottom,localizedName:window.t("Flat Top/Bottom"),hotKey:Object(n.b)(a)},LineToolGannComplex:{icon:l.lineToolsIcons.LineToolGannComplex,localizedName:window.t("Gann Square")},LineToolGannFixed:{icon:l.lineToolsIcons.LineToolGannFixed,localizedName:window.t("Gann Square Fixed")},LineToolGannFan:{icon:l.lineToolsIcons.LineToolGannFan,localizedName:window.t("Gann Fan")},LineToolGannSquare:{icon:l.lineToolsIcons.LineToolGannSquare,localizedName:window.t("Gann Box"),hotKey:Object(n.b)({keys:["Shift"],text:window.t("{0} — fixed increments")})},LineToolGhostFeed:{icon:l.lineToolsIcons.LineToolGhostFeed,localizedName:window.t("Ghost Feed")},LineToolHeadAndShoulders:{icon:l.lineToolsIcons.LineToolHeadAndShoulders,localizedName:window.t("Head and Shoulders")},LineToolHorzLine:{icon:l.lineToolsIcons.LineToolHorzLine,localizedName:window.t("Horizontal Line"),hotKey:Object(n.b)({keys:["Alt","H"],text:"{0} + {1}"})},LineToolHorzRay:{icon:l.lineToolsIcons.LineToolHorzRay,localizedName:window.t("Horizontal Ray")},LineToolIcon:{icon:l.lineToolsIcons.LineToolIcon,localizedName:window.t("Font Icons")},LineToolInsidePitchfork:{icon:l.lineToolsIcons.LineToolInsidePitchfork,localizedName:window.t("Inside Pitchfork")},LineToolNote:{icon:l.lineToolsIcons.LineToolNote,localizedName:window.t("Note")},LineToolNoteAbsolute:{icon:l.lineToolsIcons.LineToolNoteAbsolute,localizedName:window.t("Anchored Note")},LineToolParallelChannel:{icon:l.lineToolsIcons.LineToolParallelChannel,localizedName:window.t("Parallel Channel"),hotKey:Object(n.b)(a)},LineToolPitchfan:{icon:l.lineToolsIcons.LineToolPitchfan,localizedName:window.t("Pitchfan")},LineToolPitchfork:{icon:l.lineToolsIcons.LineToolPitchfork,localizedName:window.t("Pitchfork")},LineToolPolyline:{icon:l.lineToolsIcons.LineToolPolyline,localizedName:window.t("Polyline")},LineToolPrediction:{icon:l.lineToolsIcons.LineToolPrediction,localizedName:window.t("Forecast")},LineToolPriceLabel:{icon:l.lineToolsIcons.LineToolPriceLabel,localizedName:window.t("Price Label")},LineToolPriceRange:{icon:l.lineToolsIcons.LineToolPriceRange,localizedName:window.t("Price Range")},LineToolProjection:{icon:l.lineToolsIcons.LineToolProjection,localizedName:window.t("Projection")},LineToolRay:{icon:l.lineToolsIcons.LineToolRay,localizedName:window.t("Ray")},LineToolRectangle:{icon:l.lineToolsIcons.LineToolRectangle,localizedName:window.t("Rectangle"),hotKey:Object(n.b)({keys:["Shift"],text:window.t("{0} — square")})},LineToolRegressionTrend:{icon:l.lineToolsIcons.LineToolRegressionTrend,localizedName:window.t("Regression Trend")},LineToolRiskRewardLong:{icon:l.lineToolsIcons.LineToolRiskRewardLong,localizedName:window.t("Long Position")},LineToolRiskRewardShort:{icon:l.lineToolsIcons.LineToolRiskRewardShort,localizedName:window.t("Short Position")},LineToolRotatedRectangle:{icon:l.lineToolsIcons.LineToolRotatedRectangle,localizedName:window.t("Rotated Rectangle"),hotKey:Object(n.b)(a)},LineToolSchiffPitchfork:{ +icon:l.lineToolsIcons.LineToolSchiffPitchfork,localizedName:window.t("Modified Schiff Pitchfork")},LineToolSchiffPitchfork2:{icon:l.lineToolsIcons.LineToolSchiffPitchfork2,localizedName:window.t("Schiff Pitchfork")},LineToolSineLine:{icon:l.lineToolsIcons.LineToolSineLine,localizedName:window.t("Sine Line")},LineToolText:{icon:l.lineToolsIcons.LineToolText,localizedName:window.t("Text",{context:"tool"})},LineToolTextAbsolute:{icon:l.lineToolsIcons.LineToolTextAbsolute,localizedName:window.t("Anchored Text")},LineToolThreeDrivers:{icon:l.lineToolsIcons.LineToolThreeDrivers,localizedName:window.t("Three Drives Pattern")},LineToolTimeCycles:{icon:l.lineToolsIcons.LineToolTimeCycles,localizedName:window.t("Time Cycles")},LineToolTrendAngle:{icon:l.lineToolsIcons.LineToolTrendAngle,localizedName:window.t("Trend Angle"),hotKey:Object(n.b)(a)},LineToolTrendBasedFibExtension:{icon:l.lineToolsIcons.LineToolTrendBasedFibExtension,localizedName:window.t("Trend-Based Fib Extension")},LineToolTrendBasedFibTime:{icon:l.lineToolsIcons.LineToolTrendBasedFibTime,localizedName:window.t("Trend-Based Fib Time")},LineToolTrendLine:{icon:l.lineToolsIcons.LineToolTrendLine,localizedName:window.t("Trend Line"),hotKey:Object(n.b)(a)},LineToolInfoLine:{icon:l.lineToolsIcons.LineToolInfoLine,localizedName:window.t("Info Line")},LineToolTriangle:{icon:l.lineToolsIcons.LineToolTriangle,localizedName:window.t("Triangle")},LineToolTrianglePattern:{icon:l.lineToolsIcons.LineToolTrianglePattern,localizedName:window.t("Triangle Pattern")},LineToolVertLine:{icon:l.lineToolsIcons.LineToolVertLine,localizedName:window.t("Vertical Line"),hotKey:Object(n.b)({keys:["Alt","V"],text:"{0} + {1}"})},LineToolCrossLine:{icon:l.lineToolsIcons.LineToolCrossLine,localizedName:$.t("Cross Line")},SyncDrawing:{icon:t.a.SyncDrawing,iconActive:t.a.SyncDrawingActive,localizedName:window.t("New drawings are replicated to all charts in the layout and shown when the same ticker is selected")},arrow:{icon:t.a.arrow,localizedName:window.t("Arrow")},cursor:{icon:t.a.cursor,localizedName:window.t("Cross")},dot:{icon:t.a.dot,localizedName:window.t("Dot")},drawginmode:{icon:t.a.drawginmode,iconActive:t.a.drawginmodeActive,localizedName:window.t("Stay in Drawing Mode")},eraser:{icon:t.a.eraser,localizedName:window.t("Eraser")},group:{icon:t.a.group,localizedName:window.t("Show Hidden Tools")},hideAllDrawings:{icon:t.a.hideAllDrawings,iconActive:t.a.hideAllDrawingsActive,localizedName:window.t("Hide All Drawing Tools")},lockAllDrawings:{icon:t.a.lockAllDrawings,iconActive:t.a.lockAllDrawingsActive,localizedName:window.t("Lock All Drawing Tools")},magnet:{icon:t.a.magnet,localizedName:window.t("Magnet Mode snaps drawings placed near price bars to the closest OHLC value")},measure:{icon:t.a.measure,localizedName:window.t("Measure"),hotKey:Object(n.b)({keys:["Shift"],text:window.t("{0} + Click on the chart")})},removeAllDrawingTools:{icon:t.a.removeAllDrawingTools,localizedName:window.t("Remove All Drawing Tools")},showObjectsTree:{icon:t.a.showObjectTree, +localizedName:window.t("Show Object Tree")},zoom:{icon:t.a.zoom,localizedName:window.t("Zoom In")},"zoom-out":{icon:t.a["zoom-out"],localizedName:window.t("Zoom Out")}}},Uh5y:function(o,e){o.exports=''},WHEt:function(o,e){o.exports=''},aVjL:function(o,e){o.exports=''},b2d7:function(o,e,i){"use strict";var n,l,t,a,c;i.d(e,"a",function(){return c}),n=i("aIyQ"),l=i.n(n),t=i("Vdly"),function(o){function e(){o.favorites=[],Object(t.getJSON)("chart.favoriteDrawings",[]).forEach(function(e){o.favorites.push(e.tool||e)}),o.favoritesSynced.fire()}o.favorites=[],o.favoritesSynced=new l.a,o.favoriteIndex=function(e){return o.favorites.indexOf(e)},o.saveFavorites=function(){Object(t.setJSON)("chart.favoriteDrawings",o.favorites)},e(),t.onSync.subscribe(null,e)}(a||(a={})),function(o){function e(){return a.favorites.length}function i(o){return-1!==a.favoriteIndex(o)}o.favoriteAdded=new l.a,o.favoriteRemoved=new l.a,o.favoriteMoved=new l.a,o.favoritesSynced=a.favoritesSynced,o.favorites=function(){return a.favorites.slice()},o.favoritesCount=e,o.favorite=function(o){return o<0||o>=e()?"":a.favorites[o]},o.addFavorite=function(e){return!i(e)&&(a.favorites.push(e),a.saveFavorites(),o.favoriteAdded.fire(e),!0)},o.removeFavorite=function(e){var i=a.favoriteIndex(e);return-1!==i&&(a.favorites.splice(i,1),a.saveFavorites(),o.favoriteRemoved.fire(e),!0)},o.isFavorite=i,o.moveFavorite=function(i,n){if(n<0||n>=e())return!1;var l=a.favoriteIndex(i);return-1!==l&&n!==l&&(a.favorites.splice(l,1),a.favorites.splice(n,0,i),a.saveFavorites(),o.favoriteMoved.fire(i,l,n),!0)}}(c||(c={}))},dmHa:function(o,e){ +o.exports=''},kmdM:function(o,e){o.exports=''},lZXH:function(o,e){o.exports=''},mbEK:function(o,e){o.exports=''},oCKS:function(o,e){o.exports=''},qQ3E:function(o,e){o.exports=''},tceb:function(o,e){ +o.exports=''},xjKU:function(o,e){o.exports=''}}]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/25.15d449d35706e01821dd.js b/public/charting_library/static/bundles/25.15d449d35706e01821dd.js new file mode 100644 index 0000000..0c2e56d --- /dev/null +++ b/public/charting_library/static/bundles/25.15d449d35706e01821dd.js @@ -0,0 +1,4 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[25],{"5YsI":function(t,e,o){t.exports={button:"button-13wlLwhJ-",hover:"hover-3L87f6Kw-",arrow:"arrow-2pXEy7ej-",arrowWrap:"arrowWrap-r5l5nQXU-",isOpened:"isOpened-1939ai3F-"}},"82wv":function(t,e,o){"use strict";var n,i,r,a,s,c,l,u;o.d(e,"a",function(){return u}),n=o("mrSG"),i=o("q1tI"),r=o("TSYQ"),a=o("9dlw"),s=o("ML8+"),c=o("5YsI"),l=o("Iksw"),u=function(t){function e(e){var o=t.call(this,e)||this;return o._wrapperRef=null,o._handleWrapperRef=function(t){return o._wrapperRef=t},o._handleClick=function(t){t.target instanceof Node&&t.currentTarget.contains(t.target)&&o._handleToggleDropdown()},o._handleToggleDropdown=function(t){var e=o.state.isOpened,n="boolean"==typeof t?t:!e;o.setState({isOpened:n})},o._handleClose=function(){o._handleToggleDropdown(!1)},o.state={isOpened:!1},o}return n.__extends(e,t),e.prototype.render=function(){var t,e=this.props,o=e.id,n=e.arrow,u=e.children,p=e.content,d=e.isDisabled,h=e.minWidth,v=e.title,f=e.className,m=e.hotKey,g=this.state.isOpened,b=r(f,c.button,"apply-common-tooltip",((t={})[c.isDisabled]=d,t[c.isOpened]=g,t)),O={horizontalMargin:this.props.horizontalMargin||0,verticalMargin:this.props.verticalMargin||2,verticalAttachEdge:this.props.verticalAttachEdge,horizontalAttachEdge:this.props.horizontalAttachEdge,verticalDropDirection:this.props.verticalDropDirection,horizontalDropDirection:this.props.horizontalDropDirection};return i.createElement("div",{id:o,className:b,onClick:d?void 0:this._handleClick,title:v,"data-tooltip-hotkey":m,ref:this._handleWrapperRef},p,n&&i.createElement("div",{className:c.arrow},i.createElement("div",{className:c.arrowWrap},i.createElement(s.a,{dropped:g}))),i.createElement(a.a,{closeOnClickOutside:this.props.closeOnClickOutside,doNotCloseOn:this,isOpened:g,minWidth:h,onClose:this._handleClose,position:Object(l.c)(this._wrapperRef,O)},u))},e.defaultProps={arrow:!0,closeOnClickOutside:!0},e}(i.PureComponent)},"9dlw":function(t,e,o){"use strict";var n,i,r,a,s,c,l,u,p;o.d(e,"a",function(){return p}),n=o("mrSG"),i=o("bf9a"),r=o("q1tI"),a=o("i8i4"),s=o("17x9"),c=o("RgaO"),l=o("AiMB"),u=o("DTHj"),p=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._handleClose=function(){e.props.onClose()},e._handleClickOutside=function(t){var o,n=e.props,i=n.closeOnClickOutside,r=n.onClickOutside,s=n.doNotCloseOn;r&&r(t),i&&(s&&t.target instanceof Node&&(o=a.findDOMNode(s))instanceof Node&&o.contains(t.target)||e._handleClose())},e._handleScroll=function(t){var o=e.props.onScroll;o&&o(t),t.stopPropagation()},e}return n.__extends(e,t),e.prototype.componentWillReceiveProps=function(t){this.props.isOpened&&!t.isOpened&&this.setState({isMeasureValid:void 0})},e.prototype.render=function(){var t=this.props,e=t.children,o=t.isOpened,i=(t.closeOnClickOutside,t.doNotCloseOn,t.onClickOutside,t.onClose,n.__rest(t,["children","isOpened","closeOnClickOutside","doNotCloseOn","onClickOutside","onClose"]));return o?r.createElement(l.a,null,r.createElement(c.a,{handler:this._handleClickOutside, +mouseDown:!0,touchStart:!0},r.createElement(u.a,n.__assign({},i,{isOpened:o,onClose:this._handleClose,onScroll:this._handleScroll,customCloseDelegate:this.context.customCloseDelegate}),e))):null},e.contextTypes={customCloseDelegate:s.any},e.defaultProps={closeOnClickOutside:!0},e}(r.PureComponent)},AiMB:function(t,e,o){"use strict";var n,i,r,a,s,c,l,u;o.d(e,"a",function(){return l}),o.d(e,"b",function(){return u}),n=o("mrSG"),i=o("q1tI"),r=o("i8i4"),a=o("0waE"),s=o("jAh7"),c=o("+EG+"),l=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._uuid=Object(a.guid)(),e}return n.__extends(e,t),e.prototype.componentWillUnmount=function(){this._manager().removeWindow(this._uuid)},e.prototype.render=function(){return r.createPortal(i.createElement(u.Provider,{value:this},this.props.children),this._manager().ensureWindow(this._uuid))},e.prototype.moveToTop=function(){this._manager().moveToTop(this._uuid)},e.prototype._manager=function(){return null===this.context?Object(s.getRootOverlapManager)():this.context},e.contextType=c.b,e}(i.PureComponent),u=i.createContext(null)},Iksw:function(t,e,o){"use strict";function n(t,e){return function(o,n){var u=Object(i.ensureNotNull)(t).getBoundingClientRect(),p=e.verticalAttachEdge,d=void 0===p?l.verticalAttachEdge:p,h=e.verticalDropDirection,v=void 0===h?l.verticalDropDirection:h,f=e.horizontalAttachEdge,m=void 0===f?l.horizontalAttachEdge:f,g=e.horizontalDropDirection,b=void 0===g?l.horizontalDropDirection:g,O=e.horizontalMargin,_=void 0===O?l.horizontalMargin:O,w=e.verticalMargin,C=void 0===w?l.verticalMargin:w,D=d===r.Top?-1*C:C,E=m===a.Right?u.right:u.left,T=d===r.Top?u.top:u.bottom,N=E-(b===c.FromRightToLeft?o:0),k=T-(v===s.FromBottomToTop?n:0);return{x:N+_,y:k+D}}}var i,r,a,s,c,l;o.d(e,"a",function(){return r}),o.d(e,"b",function(){return s}),o.d(e,"c",function(){return n}),i=o("Eyy1"),function(t){t[t.Top=0]="Top",t[t.Bottom=1]="Bottom"}(r||(r={})),function(t){t[t.Left=0]="Left",t[t.Right=1]="Right"}(a||(a={})),function(t){t[t.FromTopToBottom=0]="FromTopToBottom",t[t.FromBottomToTop=1]="FromBottomToTop"}(s||(s={})),function(t){t[t.FromLeftToRight=0]="FromLeftToRight",t[t.FromRightToLeft=1]="FromRightToLeft"}(c||(c={})),l={verticalAttachEdge:r.Bottom,horizontalAttachEdge:a.Left,verticalDropDirection:s.FromTopToBottom,horizontalDropDirection:c.FromLeftToRight,verticalMargin:0,horizontalMargin:0}},KKsp:function(t,e,o){"use strict";function n(t){return i.createElement("div",{className:r.separator})}var i,r;o.d(e,"a",function(){return n}),i=o("q1tI"),r=o("NOPy")},"ML8+":function(t,e,o){"use strict";function n(t){var e,o=t.dropped,n=t.className;return i.createElement(a.a,{className:r(n,s.icon,(e={},e[s.dropped]=o,e)),icon:c})}var i,r,a,s,c;o.d(e,"a",function(){return n}),i=o("q1tI"),r=o("TSYQ"),a=o("jjrI"),s=o("cvzQ"),c=o("R4+T")},N5tr:function(t,e,o){"use strict";function n(t){return a.createElement(t.href?"a":"div",t)}function i(t){t.stopPropagation()}var r,a,s,c,l,u,p,d;o.d(e,"a",function(){return d}),r=o("mrSG"),a=o("q1tI"),s=o("TSYQ"),c=o("tWVy"), +l=o("tITk"),u=o("QpNh"),p=o("v1bN"),d=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._handleClick=function(t){var o=e.props,n=o.dontClosePopup,i=o.isDisabled,r=o.onClick,a=o.onClickArg,s=o.trackEventObject;i||(s&&Object(l.trackEvent)(s.category,s.event,s.label),r&&r(a,t),n||Object(c.b)())},e._handleMouseUp=function(t){var o=e.props,n=o.link,i=o.trackEventObject;1===t.button&&n&&i&&Object(l.trackEvent)(i.category,i.event,i.label)},e._formatShortcut=function(t){return t&&t.split("+").join(" + ")},e}return r.__extends(e,t),e.prototype.render=function(){var t,e,o=this.props,c=o.className,l=o.shortcut,d=o.forceShowShortcuts,h=o.icon,v=o.isActive,f=o.isDisabled,m=o.isHovered,g=o.appearAsDisabled,b=o.label,O=o.link,_=o.showToolboxOnHover,w=o.target,C=o.toolbox,D=o.theme,E=void 0===D?p:D,T=Object(u.a)(this.props);return a.createElement(n,r.__assign({},T,{className:s(c,E.item,h&&E.withIcon,(t={},t[E.isActive]=v,t[E.isDisabled]=f||g,t[E.hovered]=m,t)),href:O,target:w,onClick:this._handleClick,onMouseUp:this._handleMouseUp}),void 0!==h&&a.createElement("div",{className:E.icon,dangerouslySetInnerHTML:{__html:h}}),a.createElement("div",{className:E.labelRow},a.createElement("div",{className:E.label},b)),(void 0!==l||d)&&a.createElement("div",{className:E.shortcut},this._formatShortcut(l)),void 0!==C&&a.createElement("div",{onClick:i,className:s(E.toolbox,(e={},e[E.showOnHover]=_,e))},C))},e}(a.PureComponent)},NOPy:function(t,e,o){t.exports={separator:"separator-25lkUpN--"}},QpNh:function(t,e,o){"use strict";function n(t){var e,o,n,r,a,s=Object.entries(t).filter(i),c={};for(e=0,o=s;e'},"D/i5":function(e,t,n){e.exports={inputWrapper:"inputWrapper-6bNZbTW4-",textInput:"textInput-3WRWEmm7-",error:"error-v0663AtN-",success:"success-7iP8kTY5-",textInputLeftDirection:"textInputLeftDirection-mlAXPh8V-",xsmall:"xsmall-3Ah_Or2--",small:"small-2bmxiJCE-",large:"large-1JDowW2I-",iconed:"iconed-3ZQvxTot-",inputIcon:"inputIcon-W_Bse-a1-",clearable:"clearable-2tabt_rj-",clearIcon:"clearIcon-389FR5J4-"}},K5ke:function(e,t,n){e.exports={loader:"loader-3Pj8ExOX-",item:"item-2n55_7om-","tv-button-loader":"tv-button-loader-SKpJjjYw-",black:"black-eFIQWyf4-",white:"white-2Ma0ajvT-",gray:"gray-24fvVR0S-"}},L0Sj:function(e,t,n){"use strict";function a(e){var t,n=e.className,a=e.icon,d=e.clearable,p=e.onClear,m=e.size,f=e.strictLeftDirectionInput,h=r.__rest(e,["className","icon","clearable","onClear","size","strictLeftDirectionInput"]),g=s(l.inputWrapper,((t={})[n]=Boolean(n),t[l.iconed]=Boolean(a),t[l.clearable]=d,t));return o.createElement(u,r.__assign({theme:l,className:g,leftComponent:a?o.createElement(i.a,{key:"inputIcon",icon:a,className:l.inputIcon}):void 0,rightComponent:d?o.createElement(i.a,{className:l.clearIcon,icon:c,key:"clearIcon",onClick:p}):void 0,sizeMode:m,strictLeftDirectionInput:f},h))}var r,o,s,i,c,l,u;n.d(t,"a",function(){return u}),n.d(t,"b",function(){return a}),r=n("mrSG"),o=n("q1tI"),s=n("TSYQ"),i=n("jjrI"),c=n("Ald9"),l=n("D/i5"),u=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return r.__extends(t,e),t.prototype.render=function(){var e,t,n,a,i=this.props,c=i.theme,u=i.error,d=i.success,p=i.sizeMode,m=i.leftComponent,f=i.rightComponent,h=i.grouped,g=i.columnGrouped,v=i.fontSize,I=i.reference,b=i.className,w=(i.strictLeftDirectionInput,r.__rest(i,["theme","error","success","sizeMode","leftComponent","rightComponent","grouped","columnGrouped","fontSize","reference","className","strictLeftDirectionInput"])),x={fontSize:v},y=s(c.textInput,this.props.strictLeftDirectionInput&&l.textInputLeftDirection,((e={})[c.error]=u,e[c.success]=d,e[c[p]]=Boolean(p),e)),C=s(c.inputWrapper,((t={})[b]=Boolean(b),t[c.grouped]=h,t[c.column]=g,t)),_=[],N=o.createElement("input",r.__assign({ref:I,className:y,key:"textInput",style:x},w));return m&&(n={className:s(c.leftComponent,m.props.className),key:"leftComponent"},_.push(o.cloneElement(m,n))),_.push(N),f&&(a={className:s(c.rightComponent,f.props.className),key:"rightComponent"},_.push(o.cloneElement(f,a))),o.createElement("div",{className:C},_)},t}(o.PureComponent)},ntfI:function(e,t,n){"use strict";var a,r,o,s,i,c,l +;n.d(t,"a",function(){return l}),a=n("mrSG"),r=n("q1tI"),o=n("TSYQ"),s=n("j1f4"),i=n("K5ke"),function(e){e[e.Initial=0]="Initial",e[e.Appear=1]="Appear",e[e.Active=2]="Active"}(c||(c={})),l=function(e){function t(t){var n=e.call(this,t)||this;return n._stateChangeTimeout=null,n.state={state:c.Initial},n}return a.__extends(t,e),t.prototype.render=function(){var e,t=this.props,n=t.className,a=t.color,s=void 0===a?"black":a,c=o(i.item,((e={})[i[s]]=Boolean(s),e));return r.createElement("span",{className:o(i.loader,n,this._getStateClass())},r.createElement("span",{className:c}),r.createElement("span",{className:c}),r.createElement("span",{className:c}))},t.prototype.componentDidMount=function(){var e=this;this.setState({state:c.Appear}),this._stateChangeTimeout=setTimeout(function(){e.setState({state:c.Active})},2*s.dur)},t.prototype.componentWillUnmount=function(){this._stateChangeTimeout&&(clearTimeout(this._stateChangeTimeout),this._stateChangeTimeout=null)},t.prototype._getStateClass=function(){switch(this.state.state){case c.Initial:return"loader-initial";case c.Appear:return"loader-appear";default:return""}},t}(r.PureComponent)},oj21:function(e,t,n){"use strict";function a(e){var t,n=e.active,a=void 0===n||n,l=e.children,u=e.className,d=void 0===u?"":u,p=e.disabled,m=void 0!==p&&p,f=e.grouped,h=void 0!==f&&f,g=e.growable,v=void 0!==g&&g,I=e.onClick,b=e.reference,w=e.size,x=e.theme,y=e.type,C=void 0===y?"default":y,_=e.loading,N=void 0!==_&&_,k=e.withPadding,E=void 0===k||k,S=e.title,W=void 0===S?"":S,T=e.disabledClassName,L=e.tabIndex,D=void 0===L?0:L,j=e.target,z=void 0===j?"":j,A=e.href,B=void 0===A?"":A,O=e.rounded,q=void 0!==O&&O,P=s(((t={})[d]=Boolean(d),t[i.button]=!0,t[i.active]=a&&!m,t[T||i.disabled]=m,t[i.grouped]=h,t[i.growable]=v,t[i.withPadding]=E,t[function(e){switch(e){case"xsmall":return i.xsmall;case"small":return i.small;case"large":return i.large;default:return""}}(w)]=Boolean(w),t[function(e){switch(e){case"ghost":return i.ghost;default:return""}}(x)]=Boolean(x),t[function(e){switch(e){case"default":return i.base;case"primary":return i.primary;case"secondary":return i.secondary;case"secondary-script":return i.secondaryScript;case"success":return i.success;case"warning":return i.warning;case"danger":return i.danger;case"link":return i.link;default:return""}}(C)]=!0,t[i.rounded]=q,t)),J="default"===C?"black":"white",M={disabled:m,title:W,target:z,href:B};return o.createElement("button",r.__assign({className:P,tabIndex:D,onClick:N?void 0:I,ref:b},M),o.createElement("span",{className:i.hiddenText},l),N?o.createElement("span",{className:i.loader},o.createElement(c.a,{color:J})):o.createElement("span",{className:i.text},l))}var r,o,s,i,c;n.d(t,"a",function(){return a}),r=n("mrSG"),o=n("q1tI"),s=n("TSYQ"),i=n("qsaw"),c=n("ntfI")},qsaw:function(e,t,n){e.exports={ghost:"ghost-3yO24wIn-",primary:"primary-1rSzOFdX-",success:"success-1qQ3_tEI-",danger:"danger-jKTO4wDd-",warning:"warning-2uDfz7Zc-",secondary:"secondary-3ll81brZ-",button:"button-2O-nMUcz-",withPadding:"withPadding-_5CJoO5q-", +hiddenText:"hiddenText-3qcN5Wif-",text:"text-2KOWx3rB-",loader:"loader-1CC-1F8J-",base:"base-2d4XFcnI-",secondaryScript:"secondaryScript-2iIeFIWW-",link:"link-2sR0CShp-",xsmall:"xsmall-1aiWe3Hs-",rounded:"rounded-3qEdyiAz-",small:"small-2-nQtW8O-",large:"large-33HYhX8D-",grouped:"grouped-1WsMjajI-",growable:"growable-F6tv8R_j-",active:"active-2UxWxOgk-",disabled:"disabled-3u0ULovv-"}}}]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/27.54aad15135c7ea57b345.js b/public/charting_library/static/bundles/27.54aad15135c7ea57b345.js new file mode 100644 index 0000000..0d65509 --- /dev/null +++ b/public/charting_library/static/bundles/27.54aad15135c7ea57b345.js @@ -0,0 +1,5 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[27],{"/NcV":function(t,e){t.exports=''},FxnJ:function(t,e,i){},MjtL:function(t,e){t.exports=''},NhD9:function(t,e,i){"use strict";(function(t){var s,a,o,r,n;Object.defineProperty(e,"__esModule",{value:!0}),e.createTabbedDialog=function(e){var i,l,d,c,h,p,u,_,f,g,v;if(e=$.extend({},n,e),i=$(t.render(o,{tabs:e.tabs,customControls:e.customControls,customControlsAddClass:e.customControlsContainerAddClass},{additionalHeaderContent:e.additionalHeaderContent})),d=l=$(r),e.contentAddClass&&l.addClass(e.contentAddClass),!1!==e.withScroll&&(l=$('
').append(d.addClass("tv-dialog__scroll-wrap-inner"))),c=$('
').append(i).append(l),e.customControls&&i.find(".js-custom-controls").append(e.customControls),!0!==e.doNotCreatePages)for(h=0;h').append(e.tabs[h].page));return p=e.tabStateSaveKey,u=e.activeTab,_=e.tabsScrollBoxAddClass,f=e.tabAddClass,delete e.tabs,delete e.activeTab,delete e.customControls,delete e.tabStateSaveKey,delete e.customControlsContainerAddClass,delete e.tabsScrollBoxAddClass,delete e.tabAddClass,e.closeButtonAddClass="tv-tabbed-dialog__close",e.contentWrapTemplate=c,g=(0,a.createDialog)(e),v=new s.Tabs(i.find(".tv-tabs").get(0),d.get(0),{addLeftArrowsClass:"tv-tabbed-dialog__tabs-arrow-left",addRightArrowsClass:"tv-tabbed-dialog__tabs-arrow-right",addScrollBoxClass:_,tabClass:f,saveTab:p,activeTab:u}),g.on("afterOpen",function(){v.setActivePage(v.index(),!0,!0)}),{dialog:g,tabs:v}},s=i("pIOw"),a=i("YDhE"),i("FxnJ"),o='
{{#tabs}}
{{name}}
{{/tabs}}
{{#customControls}}
{{/customControls}}
{{>additionalHeaderContent}}',r='
',n={tabs:[]}}).call(this,i("OiQe"))},pIOw:function(t,e,i){"use strict";function s(){return new Promise(function(t){i.e("lazy-velocity").then(function(e){i("WJ2Z"),t()}.bind(null,i)).catch(i.oe)})}var a,o,r,n,l,d,c,h,p,u,_,f,g;i.r(e),a=i("Eyy1"),i("P5fv"),$.fn.velocity=function(){var t,e=this,i=[];for(t=0;t'+f.leftArrow+"
"),this._elArrowRight=this._findOrCreateElement(this._options.rArrowClass||"",this._elTabs,"append",'
'+f.rightArrow+"
"),this._addClass(this._elArrowLeft,this._options.addLeftArrowsClass),this._addClass(this._elArrowRight,this._options.addRightArrowsClass)),this._addClass(this._elScrollBox,this._options.addScrollBoxClass),this._addClass(this._elSlider,this._options.addSliderClass),this._addClass(this._elTabs,this._options.tabsContainerClass),this._addClass(this.getTabsArray(),this._options.tabClass),this._addClass(this._elTabs,this._options.loadedClass),this.checkScrollArrows(!0),this._initActivePage(),this._bindEvents()}return t.prototype.getTabsArray=function(){var t,e,i,s=this._elScrollBox.children;if(!this._options.sliderClass)return Array.prototype.slice.call(s);for(t=[],e=0;e=n?e(this._elArrowLeft):(a<=n||this._elScrollWrap.scrollWidth<=r)&&i(this._elArrowLeft,u.Left)),this._elArrowRight&&(l-a>1?e(this._elArrowRight):(a>=l||this._elScrollWrap.scrollWidth<=r)&&i(this._elArrowRight,u.Right))},t.prototype.index=function(){var t=this.getElActiveTab();return t?this.getTabsArray().indexOf(t):-1},t.prototype.getElActiveTab=function(){return this._getActiveElement(this.getTabsArray(),this._options.activeTabClass||"",this._options.inactiveTabClass)},t.prototype.getElActivePage=function(){return this._getActiveElement(this.getPagesArray(),this._options.activePageClass||"",this._options.inactivePageClass)},t.prototype.setActivePage=function(t,e,i){function s(e,i,s){e.forEach(function(e,a){var o=t===a,r=e.classList;i&&r.toggle(i,o),s&&r.toggle(s,!o)})}if(-1!==t&&(t!==this.index()||i)){var a=this.index();s(this.getTabsArray(),this._options.activeTabClass,this._options.inactiveTabClass),s(this.getPagesArray(),this._options.activePageClass,this._options.inactivePageClass),this._options.noSlider||this.updateSlider(a,t,e),this._options.saveTab&&h.setValue(this._options.saveTab,t),this.tabChanged.fire(t)}},t.prototype.updateSlider=function(t,e,i){var a,r,n,l,d,c,h=this;this._options.noSlider||0===(a=this.getTabsArray()[e]).clientWidth||0===a.clientHeight||"none"===window.getComputedStyle(a).getPropertyValue("display")||(r=window.getComputedStyle(a),n=a.offsetLeft+parseInt(r.getPropertyValue("padding-left")),l=this._getElWidth(a),(d=a.querySelector(".js-tabs__slider-pos"))&&(c=window.getComputedStyle(d),n+=parseInt(c.getPropertyValue("padding-left"))+d.offsetLeft,l-=l-this._getElWidth(d)),(i=i||-1===t||document.all&&!window.atob)?(this._elSlider.style.left=n+"px",this._elSlider.style.width=l+"px"):(this._animating=!0,s().then(function(){$.Velocity.animate(h._elSlider,{left:n},{duration:o.dur,easing:"easeOutCubic",queue:!1}),$.Velocity.animate(h._elSlider,{width:l},{complete:function(){h._animating=!1},duration:o.dur,easing:"easeOutCubic",queue:!1})})))},t.prototype.onTabClick=function(t){var e=t.currentTarget||t.target,i=this.getTabsArray().indexOf(e);-1===i||this._isTabDisabled(e)||this.setActivePage(i),document.activeElement.blur(),t.preventDefault()},t.prototype.resizeSlider=function(){var t,e;this._options.noSlider||(t=this._elTabs.offsetWidth)!==this._prevWidth&&(this._prevWidth=t,e=this.index(),this.updateSlider(e,e,!0))},t.prototype.count=function(){return this.getTabsArray().length},t.prototype.add=function(t,e){this._elScrollBox.appendChild(t),this._elPages&&e&&this._elPages.appendChild(e),this._bindTabEvents(t),this.checkScrollArrows(!0)},t.prototype.remove=function(t){function e(t){t.parentElement&&t.parentElement.removeChild(t)}var i,s,a=this.tabAt(t);a&&(this._unbindTabEvents(a),e(a)),(i=this.pageAt(t))&&e(i),s=t-1>=0?t-1:0,this.setActivePage(s),this.checkScrollArrows(!0)},t.prototype.indexOfTab=function(t){return this.getTabsArray().indexOf(t)},t.prototype.indexOfPage=function(t){return this.getPagesArray().indexOf(t)}, +t.prototype.pageAt=function(t){return this.getPagesArray()[t]||null},t.prototype.tabAt=function(t){return this.getTabsArray()[t]||null},t.prototype.deselect=function(t){var e,i=this.getElActiveTab();return this._options.activeTabClass&&i&&i.classList.remove(this._options.activeTabClass),e=this.getElActivePage(),this._options.activePageClass&&e&&e.classList.remove(this._options.activePageClass),this._elSlider&&(this._elSlider.style.left="",this._elSlider.style.width=""),this},t.prototype.stop=function(){this._unbindEvents({})},t.prototype._getElWidth=function(t){if(0===t.offsetWidth)return 0;var e=window.getComputedStyle(t);return t.offsetWidth-parseFloat(e.getPropertyValue("padding-left"))-parseFloat(e.getPropertyValue("padding-right"))-parseFloat(e.getPropertyValue("border-left-width"))-parseFloat(e.getPropertyValue("border-right-width"))},t.prototype._findOrCreateElement=function(t,e,i,s){var a,o,r,n=e.querySelector("."+t);if(!n)if((a=document.createElement("div")).innerHTML=s||'
',n=a.firstElementChild,"append"===i)e.appendChild(n);else{if("wrapInner"!==i)throw new Error("Unknown insertMethod");for(o=Array.prototype.slice.call(e.childNodes),r=0;rn?r=!0:a=e}}),s().then(function(){$.Velocity.animate(e._elScrollWrap,"scroll",{axis:"x",container:$(e._elScrollWrap),duration:o.dur/2,easing:"easeInOutCubic",offset:Math.floor(a-n-e._getElWidth(e._elArrowLeft)),queue:!1})})},target:this._elArrowLeft}),this._elArrowRight&&this._bindOneEvent({eventName:"click",listener:function(t){var i=e.getTabsArray(),r=0,n=p.IS_RTL?0:e._elScrollWrap.scrollLeft+e._getElWidth(e._elScrollWrap);p.IS_RTL&&i.reverse(),i.forEach(function(t){if(0===r){var e=t.offsetLeft+t.offsetWidth;e>n&&(r=e)}}),s().then(function(){$.Velocity.animate(e._elScrollWrap,"scroll",{axis:"x",container:$(e._elScrollWrap),duration:o.dur/2,easing:"easeInOutCubic",offset:Math.ceil(r-n+e._getElWidth(Object(a.ensureDefined)(e._elArrowRight))),queue:!1})})},target:this._elArrowRight}),(t=Array.prototype.slice.call(this._elTabs.querySelectorAll(".js-tabs__slider-hover")||[])).length&&t.forEach(function(t){return e._bindOneEvent({eventName:"mouseenter", +listener:function(t){if(!e._animating){var i=t.currentTarget;i&&e._options.activeTabClass&&i.classList&&i.classList.contains(e._options.activeTabClass)&&e._hoverSlider(i)}},target:t})}),this._bindOneEvent({eventName:"resize",listener:function(){e.checkScrollArrows(!0),e._options.noSlider||e.resizeSlider()},target:window})},t.prototype._bindTabEvents=function(t){var e=this;this._bindOneEvent({eventName:"click",listener:function(t){"function"==typeof e._options.onTabClick?e._options.onTabClick(t):e.onTabClick(t)},target:t})},t.prototype._unbindTabEvents=function(t){this._unbindEvents({target:t})},t.prototype._bindOneEvent=function(t){t.target.addEventListener(t.eventName,t.listener),this._bindings.push(t)},t.prototype._unbindEvents=function(t){var e=function(e){return!(void 0!==e.eventName&&e.eventName!==t.eventName||void 0!==e.target&&e.target!==t.target||void 0!==e.listener&&e.listener!==t.listener)};this._bindings.filter(e).forEach(function(t){return t.target.removeEventListener(t.eventName,t.listener)}),this._bindings=this._bindings.filter(function(t){return!e(t)})},t.prototype._getActiveElement=function(t,e,i){return t.filter(function(t,s,a){return e?t.classList.contains(e):!!i&&!t.classList.contains(i)})[0]||null},t.prototype._isTabDisabled=function(t){return t.classList.contains("i-disabled")||this._options.tabDisabledClass&&t.classList.contains(this._options.tabDisabledClass)||t.hasAttribute("disabled")},t.prototype._hoverSlider=function(t){var e,i=this,a=this._getElWidth(t),r=window.getComputedStyle(t),n=t.offsetLeft+parseInt(r.getPropertyValue("padding-left"))+parseInt(r.getPropertyValue("margin-left")),l={duration:o.dur/4,easing:"easeOutCubic",queue:!1};s().then(function(){$.Velocity.animate(i._elSlider,{left:n},l),$.Velocity.animate(i._elSlider,{width:a},l)}),e=function(){i.getElActiveTab()===t&&i._unhoverSlider(t),t.removeEventListener("mousleave",e)},t.addEventListener("mouseleave",e)},t.prototype._unhoverSlider=function(t){var e=this,i=window.getComputedStyle(t),a=t.querySelector(".js-tabs__slider-pos"),r=window.getComputedStyle(a),n=t.offsetLeft+parseInt(i.getPropertyValue("padding-left"))+parseInt(i.getPropertyValue("margin-left"))+parseInt(r.getPropertyValue("padding-left"))+a.offsetLeft,l=this._getElWidth(t),d=l-(l-this._getElWidth(a)),c={duration:o.dur/2,easing:"easeInSine",queue:!1};s().then(function(){$.Velocity.animate(e._elSlider,{left:n},c),$.Velocity.animate(e._elSlider,{width:d},c)})},t}()}}]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/28.3f2589cd73664ea3f3e3.js b/public/charting_library/static/bundles/28.3f2589cd73664ea3f3e3.js new file mode 100644 index 0000000..68782de --- /dev/null +++ b/public/charting_library/static/bundles/28.3f2589cd73664ea3f3e3.js @@ -0,0 +1,5 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[28],{"75D8":function(t,e,n){"use strict";function o(t){return{x:t.pageX,y:t.pageY}}function r(t){return{x:t.touches[0].pageX,y:t.touches[0].pageY}}function s(t,e,n,o){var r=function(t,e,n,o){return 180*(Math.atan2(o-e,n-t)+Math.PI/2)/Math.PI}(t,e,n,o);return r<0?360+r:r}function i(t,e,n){var o,r,s;for(void 0===n&&(n=1),o=Math.max(Math.ceil((e-t)/n),0),r=Array(o),s=0;s0&&n.props.selected<=12},n}return l.__extends(e,t),e.prototype.render=function(){var t=this,e=this.props,n=e.center,o=e.radius,r=e.spacing,s=e.selected;return d.createElement("div",null,d.createElement(v,{radius:o,spacing:r,numbers:y,activeNumber:s,format:a,onMouseDown:this._onMouseDown,onTouchStart:this._onTouchStart}),this._renderInnerFace(o*w),d.createElement(g,{ref:function(e){return t._hand=e},length:o-(this.state.isInner?o*w:r)-this.props.numberRadius,angle:s*M,step:M,center:n,onMove:this._onHandMove,onMoveEnd:this._onHandMoveEnd}))},e.prototype._renderInnerFace=function(t){return d.createElement(v,{radius:this.props.radius,spacing:t,numbers:b,activeNumber:this.props.selected,onMouseDown:this._onMouseDown,onTouchStart:this._onTouchStart,isInner:!0})},e.prototype._valueFromDegrees=function(t){return this.state.isInner?b[t/M]:y[t/M]},e}(d.PureComponent),S=i(0,60,5),T=6,C=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e._onMouseDown=function(t){e._hand.mouseStart(t)},e._onTouchStart=function(t){e._hand.touchStart(t)},e._onHandMove=function(t){e.props.onChange(t/T)},e._onHandMoveEnd=function(t){e.props.onSelect&&e.props.onSelect(t)},e}return l.__extends(e,t),e.prototype.render=function(){var t=this;return d.createElement("div",null,d.createElement(v,{radius:this.props.radius,spacing:this.props.spacing,numbers:S,activeNumber:this.props.selected,format:a,onMouseDown:this._onMouseDown,onTouchStart:this._onTouchStart}),d.createElement(g,{ref:function(e){return t._hand=e},length:this.props.radius-this.props.spacing-this.props.numberRadius,angle:this.props.selected*T,step:T,center:this.props.center,onMove:this._onHandMove,onMoveEnd:this._onHandMoveEnd}))},e}(d.PureComponent);n.d(e,"a",function(){return h}),c=.18,p=13,function(t){t[t.Hours=0]="Hours",t[t.Minutes=1]="Minutes"}(u||(u={})),h=function(t){function e(e){var n=t.call(this,e)||this;return n._clockFace=null,n._raf=null,n._recalculateTimeout=null,n._calculateShapeBinded=n._calculateShape.bind(n),n._onChangeHours=function(t){n.state.time.hours()!==t&&n._onChange(n.state.time.clone().hours(t))}, +n._onChangeMinutes=function(t){n.state.time.minutes()!==t&&n._onChange(n.state.time.clone().minutes(t))},n._onSelectHours=function(){n._displayMinutes()},n._onSelectMinutes=function(t){t&&t.target instanceof Node&&n._clockFace&&n._clockFace.contains(t.target)&&t.preventDefault(),n.props.onSelect&&n.props.onSelect(n.state.time.clone())},n._displayHours=function(){n.setState({faceType:u.Hours})},n._displayMinutes=function(){n.setState({faceType:u.Minutes})},n._setClockFace=function(t){n._clockFace=t},n.state={center:{x:0,y:0},radius:0,time:n.props.selectedTime,faceType:u.Hours},n}return l.__extends(e,t),e.prototype.render=function(){var t,e;return d.createElement("div",{className:_(f.clock,this.props.className)},d.createElement("div",{className:f.header},d.createElement("span",{className:_(f.number,(t={},t[f.active]=this.state.faceType===u.Hours,t)),onClick:this._displayHours},this.state.time.format("HH")),d.createElement("span",null,":"),d.createElement("span",{className:_(f.number,(e={},e[f.active]=this.state.faceType===u.Minutes,e)),onClick:this._displayMinutes},this.state.time.format("mm"))),d.createElement("div",{className:f.body},d.createElement("div",{className:f.clockFace,ref:this._setClockFace},this.state.faceType===u.Hours?this._renderHours():null,this.state.faceType===u.Minutes?this._renderMinutes():null,d.createElement("span",{className:f.centerDot}))))},e.prototype.componentDidMount=function(){this._calculateShape(),this._recalculateTimeout=setTimeout(this._calculateShapeBinded,1),window.addEventListener("resize",this._calculateShapeBinded),window.addEventListener("scroll",this._calculateShapeBinded,!0)},e.prototype.componentWillUnmount=function(){this._clearTimeout(),window.removeEventListener("resize",this._calculateShapeBinded),window.removeEventListener("scroll",this._calculateShapeBinded,!0),null!==this._raf&&(cancelAnimationFrame(this._raf),this._raf=null)},e.prototype._clearTimeout=function(){null!==this._recalculateTimeout&&(clearTimeout(this._recalculateTimeout),this._recalculateTimeout=null)},e.prototype._renderHours=function(){return d.createElement(E,{center:this.state.center,radius:this.state.radius,spacing:this.state.radius*c,selected:this.state.time.hours(),numberRadius:p,onChange:this._onChangeHours,onSelect:this._onSelectHours})},e.prototype._renderMinutes=function(){return d.createElement(C,{center:this.state.center,radius:this.state.radius,spacing:this.state.radius*c,selected:this.state.time.minutes(),numberRadius:p,onChange:this._onChangeMinutes,onSelect:this._onSelectMinutes})},e.prototype._onChange=function(t){this.setState({time:t}),this.props.onChange&&this.props.onChange(t.clone())},e.prototype._calculateShape=function(){var t=this;null===this._raf&&(this._raf=requestAnimationFrame(function(){var e=Object(m.ensureNotNull)(t._clockFace).getBoundingClientRect(),n=e.left,o=e.top,r=e.width;t.setState({center:{x:n+r/2,y:o+r/2},radius:r/2}),t._raf=null}))},e}(d.PureComponent)},"Db/h":function(t,e,n){t.exports={errors:"errors-C3KBJakt-",show:"show-2G4PY7Uu-",error:"error-3G4k6KUC-"}}, +Oehf:function(t,e,n){t.exports={clock:"clock-3pqBsiNm-",header:"header-pTWMGSpm-",number:"number-9PC9lvyt-",active:"active-1sonmMLV-",body:"body-2Q-g3GDd-",clockFace:"clockFace-eHYbqh-S-",face:"face-2iCoBAOV-",inner:"inner-1mVlhYbe-",hand:"hand-2ZG8pJQb-",knob:"knob-31dEppHa-",centerDot:"centerDot-210Fo0oV-"}},kSQs:function(t,e,n){"use strict";var o,r,s,i,a=n("mrSG"),c=n("q1tI"),p=n("TSYQ"),u=n("uqKQ"),h=n("i8i4"),l=n("Db/h"),d=n("Ialn");n.d(e,"b",function(){return o}),n.d(e,"a",function(){return r}),o=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a.__extends(e,t),e.prototype.render=function(){var t,e,n,o=this.props,r=o.children,s=void 0===r?[]:r,i=o.show,u=void 0!==i&&i,h=o.customErrorClass,m=p(l.errors,((t={})[l.show]=u,t),h),f=s.map(function(t,e){return c.createElement("div",{className:l.error,key:e},t)}),_={position:"absolute",top:this.props.top,width:this.props.width,height:this.props.height,bottom:void 0!==this.props.bottom?this.props.bottom:"100%",right:void 0!==this.props.right?this.props.right:0,left:this.props.left,zIndex:this.props.zIndex};return d.IS_RTL&&(e=_.left,n=_.right,_=a.__assign({},_,{left:n,right:e})),c.createElement("div",{style:_,className:m},f)},e}(c.PureComponent),r=Object(u.a)((s=o,(i=function(t){function e(e){var n=t.call(this,e)||this;return n._getComponentInstance=function(t){n._instance=t},n._throttleCalcProps=function(){requestAnimationFrame(function(){return n._calcProps(n.props)})},n.state={bottom:n.props.bottom,left:n.props.left,right:n.props.right,top:"number"==typeof n.props.top?n.props.top:-1e4,width:n.props.inheritWidthFromTarget?n.props.target&&n.props.target.getBoundingClientRect().width:n.props.width},n}return a.__extends(e,t),e.prototype.componentDidMount=function(){this._instanceElem=h.findDOMNode(this._instance),this.props.attachOnce||this._subscribe(),this._calcProps(this.props)},e.prototype.componentWillReceiveProps=function(t){if(t.top!==this.props.top&&this.setState({top:t.top}),t.left!==this.props.left&&this.setState({left:t.left}),t.width!==this.props.width&&this.setState({width:t.width}),t.attachmentCommand!==this.props.attachmentCommand&&t.attachmentCommand)switch(t.attachmentCommand.name){case"update":this._calcProps(t)}},e.prototype.componentDidUpdate=function(t){t.children!==this.props.children&&this._calcProps(this.props)},e.prototype.render=function(){return c.createElement(s,a.__assign({},this.props,{ref:this._getComponentInstance,top:this.state.top,bottom:void 0!==this.state.bottom?this.state.bottom:"auto",right:void 0!==this.state.right?this.state.right:"auto",left:this.state.left,width:this.state.width}),this.props.children)},e.prototype.componentWillUnmount=function(){this._unsubsribe()},e.prototype._calcProps=function(t){var e,n,o,r,s;if(t.target&&t.attachment&&t.targetAttachment){switch(e=this._calcTargetProps(t.target,t.attachment,t.targetAttachment),o=(n=this.props).width,s={width:void 0===(r=n.inheritWidthFromTarget)||r?e.width:o},t.attachment.vertical){case"bottom":case"middle":s.top=e.y;break;default: +s[t.attachment.vertical]=e.y}switch(t.attachment.horizontal){case"right":case"center":s.left=e.x;break;default:s[t.attachment.horizontal]=e.x}this.setState(s)}},e.prototype._calcTargetProps=function(t,e,n){var o=t.getBoundingClientRect(),r=this._instanceElem.getBoundingClientRect(),s="parent"===this.props.root?this._getCoordsRelToParentEl(t,o):this._getCoordsRelToDocument(o),i=this._getDimensions(r),a=this._getDimensions(o),c=a.width,p=0,u=0;switch(e.vertical){case"top":u=s[n.vertical];break;case"bottom":u=s[n.vertical]-i.height;break;case"middle":u=s[n.vertical]-i.height/2}switch(e.horizontal){case"left":p=s[n.horizontal];break;case"right":p=s[n.horizontal]-i.width;break;case"center":p=s[n.horizontal]-i.width/2}return"number"==typeof this.props.attachmentOffsetY&&(u+=this.props.attachmentOffsetY),"number"==typeof this.props.attachmentOffsetX&&(p+=this.props.attachmentOffsetX),{x:p,y:u,width:c}},e.prototype._getCoordsRelToDocument=function(t){var e=pageYOffset,n=pageXOffset,o=t.top+e,r=t.bottom+e,s=t.left+n,i=t.right+n,a=(o+t.height)/2,c=s+t.width/2;return{top:o,bottom:r,left:s,right:i,middle:a,center:c}},e.prototype._getCoordsRelToParentEl=function(t,e){var n=t.offsetParent,o=n.scrollTop,r=n.scrollLeft,s=t.offsetTop+o,i=t.offsetLeft+r,a=e.width+i,c=e.height+s,p=(s+e.height)/2,u=(i+e.width)/2;return{top:s,bottom:c,left:i,right:a,middle:p,center:u}},e.prototype._getDimensions=function(t){return{height:t.height,width:t.width}},e.prototype._subscribe=function(){"document"===this.props.root&&(window.addEventListener("scroll",this._throttleCalcProps,!0),window.addEventListener("resize",this._throttleCalcProps))},e.prototype._unsubsribe=function(){window.removeEventListener("scroll",this._throttleCalcProps,!0),window.removeEventListener("resize",this._throttleCalcProps)},e}(c.PureComponent)).displayName="Attachable Component",i))},nPPD:function(t,e,n){"use strict";function o(t,e,n){var o,r,s,i,a;for(void 0===n&&(n={}),o=Object.assign({},e),r=0,s=Object.keys(e);r");i.appendTo(t),i.css("padding-left","0px"),i.css("padding-right","0px"),(o=$("")).attr("type","text"),o.addClass("ticker"),o.css("width","40px"),o.attr("id",e),o.appendTo(i)},s=function(t,e,o){var i,n=$("");n.css("padding-left",o),n.css("padding-right",o),n.appendTo(t),(i=$("
")).appendTo(n),i.append(e),i.css("font-size","150%")},(r=$("")).appendTo(t),(a=$("")).appendTo(r),l=["start_hours","start_minutes","end_hours","end_minutes"],n.call(this,a,l[0]),s.call(this,a,":",0),n.call(this,a,l[1]),s.call(this,a,"-",4),n.call(this,a,l[2]),s.call(this,a,":",0),n.call(this,a,l[3]),d=!1,this.bindControl(new p(a,l,e,d,this.model(),i))):w.logError("Session editor adding FAILED: wrong input type.")},i.prototype.prepareControl=function(e,o,i){var n,s,r,a,p,l,d,u,h,c,f,y,m,v,_,C,x,T,S,k,I,O=this,P=null,E=null,L=null;if("resolution"===e.type)P=$('");else if("symbol"===e.type)P=$(''),g().bindToInput(P,{onPopupOpen:function(t){this._$symbolSearchPopup=t,this._symbolSearchZindex&&t.css("z-index",this._symbolSearchZindex)}.bind(this),onPopupClose:function(){this._$symbolSearchPopup=null}.bind(this),callback:function(t){e.value=t}}),o.attr("colspan",5);else if("session"===e.type)this._addSessionEditor(o,this._property.inputs[e.id],e,i);else if("source"===e.type){for(n={},s={open:window.t("open"),high:window.t("high"),low:window.t("low"),close:window.t("close"),hl2:window.t("hl2"),hlc3:window.t("hlc3"),ohlc4:window.t("ohlc4")},r=Object.keys(s),a=0;a").attr("value",S).text(k).appendTo(P);o.addClass("js-value-cell")}else e.options?(P=$(""),"bool"===e.type?P.attr("type","checkbox"):P.attr("type","text"));return P&&(P.appendTo(o),P.is(":checkbox")||"symbol"===e.type||P.css("width","100px")),{valueEditor:P,valueSetter:E,propertyChangedHook:L}},i.prototype._symbolInfoBySymbolProperty=function(t){return this._study.resolvedSymbolInfoBySymbol(t.value())},i.prototype._sortInputs=function(t){return t},i.prototype.prepareLayoutImpl=function(t,e){function o(t){return(new _).format(t)}var i,n,p,l,b,w,g,C,x,T,S,k,I,O,P,E,L,B,V=this._sortInputs(t.inputs);for(i=0;i")).appendTo(e),(g=$("
")).appendTo(w),g.addClass("propertypage-name-label"),g.text(window.t(l,{context:"input"})),(C=$("")).appendTo(w),x=this.prepareControl(n,C,b),T=x.valueEditor,S=x.valueSetter,k=x.propertyChangedHook,n.options?this.bindControl(new y(T,this._property.inputs[p],null,!0,this.model(),b,S,k)):"bar_time"===n.type?(I=10,this.bindControl(new a(T,this._property.inputs[p],!0,this.model(),b,this.model().mainSeries(),I)), +T.addClass("ticker")):"integer"===n.type?(O=[h(n.defval)],(0===n.min||n.min)&&O.push(d(n.min)),(0===n.max||n.max)&&O.push(u(n.max)),this.bindControl(new v(T,this._property.inputs[p],O,!1,this.model(),b)),T.addClass("ticker"),isFinite(n.step)&&n.step>0&&T.attr("data-step",n.step)):"float"===n.type?(O=[c(n.defval)],(0===n.min||n.min)&&O.push(d(n.min)),(0===n.max||n.max)&&O.push(u(n.max)),(P=new v(T,this._property.inputs[p],O,!1,this.model(),b)).addFormatter(o),this.bindControl(P),T.addClass("ticker"),isFinite(n.step)&&n.step>0&&T.attr("data-step",n.step)):"text"===n.type?this.bindControl(new v(T,this._property.inputs[p],null,!1,this.model(),b)):"bool"===n.type?this.bindControl(new m(T,this._property.inputs[p],!0,this.model(),b)):"resolution"===n.type?this.bindControl(new y(T,this._property.inputs[p],s,!0,this.model(),"Change Interval")):"symbol"===n.type&&(E=this._symbolInfoBySymbolProperty.bind(this,this._property.inputs[p]),L=f(E,this._property.inputs[p]),B=new r(T,this._property.inputs[p],!0,this.model(),"Change Symbol",L,this._study.symbolsResolved()),this.bindControl(B))));this._property.offset&&(l=this._property.offset.title?this._property.offset.title.value():window.t("Offset"),T=this.addOffsetEditorRow(e,l),(O=[h(this._property.offset.val)]).push(d(this._property.offset.min)),O.push(u(this._property.offset.max)),this.bindControl(new v(T,this._property.offset.val,O,!1,this.model(),"Undo "+l))),this._property.offsets&&$.each(t.plots,function(t,o){var i,n,s;this._property.offsets[o.id]&&(void 0!==(i=this._property.offsets[o.id]).isHidden&&i.isHidden.value()||(n=i.title.value(),T=this.addOffsetEditorRow(e,n),(s=[h(i.val)]).push(d(i.min)),s.push(u(i.max)),this.bindControl(new v(T,i.val,s,!1,this.model(),"Undo "+n))))}.bind(this))},i.prototype.prepareLayout=function(){this._table=$(""),this._table.addClass("property-page"),this._table.attr("cellspacing","0"),this._table.attr("cellpadding","2");var t=this._study.metaInfo();this.prepareLayoutImpl(t,this._table),this.loadData()},i.prototype.symbolSearchPopup=function(){return this._$symbolSearchPopup},i.prototype.widget=function(){return this._table},e.StudyInputsPropertyPage=i}).call(this,o("Kxc7"))},PVgW:function(t,e,o){"use strict";function i(t){return t=Math.abs(t),!Object(l.isInteger)(t)&&t>1&&(t=parseFloat(t.toString().replace(/^.+\./,"0."))),0').appendTo(a.parent()),o=$('
').html(d).appendTo(e),i=$('
').html(d).appendTo(e),e.on("mousedown",function(t){t.preventDefault(),a.focus()}),o.click(function(){a.is(":disabled")||s(a)}),i.click(function(){a.is(":disabled")||r(a)}),a.keydown(function(t){a.is(":disabled")||(38===t.keyCode?o.addClass("i-active"):40===t.keyCode&&i.addClass("i-active"))}),a.keyup(function(t){a.is(":disabled")||(38===t.keyCode?(s(a),o.removeClass("i-active")):40===t.keyCode&&(r(a),i.removeClass("i-active")))}),a.mousewheel(function(t){t.deltaY*(t.deltaFactor/100)>0?o.click():i.click()}))})}},"R4+T":function(t,e){t.exports=''},"y1L/":function(t,e,o){}}]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/3.f41fdd1a128935b63e5b.js b/public/charting_library/static/bundles/3.f41fdd1a128935b63e5b.js new file mode 100644 index 0000000..40b5ed0 --- /dev/null +++ b/public/charting_library/static/bundles/3.f41fdd1a128935b63e5b.js @@ -0,0 +1,3 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{"+EG+":function(e,t,n){"use strict";var o,i,r,s;n.d(t,"a",function(){return r}),n.d(t,"b",function(){return s}),o=n("mrSG"),i=n("q1tI"),r=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o.__extends(t,e),t.prototype.shouldComponentUpdate=function(){return!1},t.prototype.render=function(){return i.createElement("div",{style:{position:"fixed",zIndex:150,left:0,top:0},ref:this.props.reference})},t}(i.Component),s=i.createContext(null)},"6uNr":function(e,t,n){e.exports={menuWrap:"menuWrap-1gEtmoET-",isMeasuring:"isMeasuring-FZ0EJCM2-",scrollWrap:"scrollWrap-1B5MfTJt-",momentumBased:"momentumBased-1Jq4gQt2-",menuBox:"menuBox-20sJGjtG-",isHidden:"isHidden-2vLQpR1t-"}},DTHj:function(e,t,n){"use strict";var o,i,r,s,a,u,d,l,c,p,h;n.d(t,"a",function(){return h}),o=n("mrSG"),i=n("q1tI"),r=n("TSYQ"),s=n("Eyy1"),a=n("Hr11"),u=n("XAms"),d=n("+EG+"),l=n("tWVy"),c=n("jAh7"),p=n("6uNr"),h=function(e){function t(t){var n=e.call(this,t)||this;return n._containerRef=null,n._scrollWrapRef=null,n._raf=null,n._manager=new c.OverlapManager,n._handleContainerRef=function(e){return n._containerRef=e},n._handleScrollWrapRef=function(e){return n._scrollWrapRef=e},n._handleMeasure=function(){var e,t,o,i,r,u,d,l,c,p,h,m,f,_,v,g;n.state.isMeasureValid||(e=n.props.position,o=(t=Object(s.ensureNotNull)(n._containerRef)).getBoundingClientRect(),i=document.documentElement.clientHeight,r=document.documentElement.clientWidth,u=i-10,(d=o.height>u)&&(Object(s.ensureNotNull)(n._scrollWrapRef).style.overflowY="scroll",o=t.getBoundingClientRect()),l=o.width,c=o.height,p="function"==typeof e?e(l,c):e,h=5,m=r-l-5,f=Object(a.clamp)(p.x,h,Math.max(h,m)),_=5,v=i-(p.overrideHeight||c)-5,g=Object(a.clamp)(p.y,_,Math.max(_,v)),n.setState({appearingMenuHeight:p.overrideHeight||(d?u:void 0),appearingMenuWidth:p.overrideWidth,appearingPosition:{x:f,y:g},isMeasureValid:!0},n._scrollToFocusedElement))},n._scrollToFocusedElement=function(){var e=document.activeElement,t=Object(s.ensureNotNull)(n._containerRef);null!==e&&t.contains(e)&&e.scrollIntoView()},n._resize=function(){null===n._raf&&(n._raf=requestAnimationFrame(function(){n.setState({appearingMenuHeight:void 0,appearingMenuWidth:void 0,appearingPosition:void 0,isMeasureValid:void 0}),n._raf=null}))},n._handleGlobalClose=function(){n.props.onClose()},n._handleSlot=function(e){n._manager.setContainer(e)},n.state={},n}return o.__extends(t,e),t.prototype.componentWillReceiveProps=function(e){this.props.isOpened&&!e.isOpened&&this.setState({isMeasureValid:void 0})},t.prototype.componentDidMount=function(){this._handleMeasure();var e=this.props.customCloseDelegate;(void 0===e?l.a:e).subscribe(this,this._handleGlobalClose),window.addEventListener("resize",this._resize)},t.prototype.componentDidUpdate=function(){this._handleMeasure()},t.prototype.componentWillUnmount=function(){var e=this.props.customCloseDelegate;(void 0===e?l.a:e).unsubscribe(this,this._handleGlobalClose),window.removeEventListener("resize",this._resize), +null!==this._raf&&(cancelAnimationFrame(this._raf),this._raf=null)},t.prototype.render=function(){var e=this.props,t=e.children,n=e.minWidth,o=e.theme,s=void 0===o?p:o,a=e.className,l=this.state,c=l.appearingMenuHeight,h=l.appearingMenuWidth,m=l.appearingPosition,f=l.isMeasureValid;return i.createElement(i.Fragment,null,i.createElement(d.b.Provider,{value:this._manager},i.createElement("div",{className:r(a,s.menuWrap,!f&&s.isMeasuring),style:{height:c,left:m&&m.x,minWidth:n,position:"fixed",top:m&&m.y,width:h},ref:this._handleContainerRef,onScroll:this.props.onScroll,onContextMenu:u.b},i.createElement("div",{className:r(s.scrollWrap,!this.props.noMomentumBasedScroll&&s.momentumBased),style:{overflowY:void 0!==c?"scroll":"auto"},ref:this._handleScrollWrapRef},i.createElement("div",{className:s.menuBox},t)))),i.createElement(d.a,{reference:this._handleSlot}))},t}(i.PureComponent)},RgaO:function(e,t,n){"use strict";var o,i,r;n.d(t,"a",function(){return r}),o=n("mrSG"),i=n("q1tI"),r=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._scope=null,t._handleScopeRef=function(e){return t._scope=e},t._handleOutsideEvent=function(e){void 0!==t.props.handler&&null!==t._scope&&e.target instanceof Node&&(t._scope.contains(e.target)||t.props.handler(e))},t}return o.__extends(t,e),t.prototype.componentDidMount=function(){this.props.click&&document.addEventListener("click",this._handleOutsideEvent,!1),this.props.mouseDown&&document.addEventListener("mousedown",this._handleOutsideEvent,!1),this.props.touchEnd&&document.addEventListener("touchend",this._handleOutsideEvent,!1),this.props.touchStart&&document.addEventListener("touchstart",this._handleOutsideEvent,!1)},t.prototype.componentWillUnmount=function(){document.removeEventListener("click",this._handleOutsideEvent,!1),document.removeEventListener("mousedown",this._handleOutsideEvent,!1),document.removeEventListener("touchend",this._handleOutsideEvent,!1),document.removeEventListener("touchstart",this._handleOutsideEvent,!1)},t.prototype.render=function(){var e=this.props,t=(e.click,e.handler,e.mouseDown,e.touchEnd,e.touchStart,e.ctor),n=void 0===t?"span":t,r=o.__rest(e,["click","handler","mouseDown","touchEnd","touchStart","ctor"]);return i.createElement(n,o.__assign({},r,{ref:this._handleScopeRef}))},t}(i.PureComponent)},jAh7:function(e,t,n){"use strict";function o(e){var t,n,o;return void 0===e&&(e=document),null!==(t=e.getElementById("overlap-manager-root"))?Object(i.ensureDefined)(a.get(t)):(n=new s(e),o=function(e){var t=e.createElement("div");return t.style.position="absolute",t.style.zIndex=150..toString(),t.style.top="0px",t.style.left="0px",t.id="overlap-manager-root",t}(e),a.set(o,n),n.setContainer(o),e.body.appendChild(o),n)}var i,r,s,a;n.r(t),n.d(t,"OverlapManager",function(){return s}),n.d(t,"getRootOverlapManager",function(){return o}),i=n("Eyy1"),r=function(){function e(){this._storage=[]}return e.prototype.add=function(e){this._storage.push(e)},e.prototype.remove=function(e){this._storage=this._storage.filter(function(t){return e!==t}) +},e.prototype.has=function(e){return this._storage.includes(e)},e.prototype.getItems=function(){return this._storage},e}(),s=function(){function e(e){void 0===e&&(e=document),this._storage=new r,this._windows=new Map,this._index=0,this._document=e,this._container=e.createDocumentFragment()}return e.prototype.setContainer=function(e){var t=this._container,n=null===e?this._document.createDocumentFragment():e;!function(e,t){Array.from(e.childNodes).forEach(function(e){e.nodeType===Node.ELEMENT_NODE&&t.appendChild(e)})}(t,n),this._container=n},e.prototype.registerWindow=function(e){this._storage.has(e)||this._storage.add(e)},e.prototype.ensureWindow=function(e,t){var n,o;return void 0===t&&(t={position:"fixed"}),void 0!==(n=this._windows.get(e))?n:(this.registerWindow(e),(o=this._document.createElement("div")).style.position=t.position,o.style.zIndex=this._index.toString(),o.dataset.id=e,this._container.appendChild(o),this._windows.set(e,o),++this._index,o)},e.prototype.unregisterWindow=function(e){this._storage.remove(e);var t=this._windows.get(e);void 0!==t&&(null!==t.parentElement&&t.parentElement.removeChild(t),this._windows.delete(e))},e.prototype.getZindex=function(e){var t=this.ensureWindow(e);return parseInt(t.style.zIndex||"0")},e.prototype.moveToTop=function(e){this.getZindex(e)!==this._index&&(this.ensureWindow(e).style.zIndex=(++this._index).toString())},e.prototype.removeWindow=function(e){this.unregisterWindow(e)},e}(),a=new WeakMap}}]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/30.c3cc90c5fbe9a2b87ffb.js b/public/charting_library/static/bundles/30.c3cc90c5fbe9a2b87ffb.js new file mode 100644 index 0000000..21d6678 --- /dev/null +++ b/public/charting_library/static/bundles/30.c3cc90c5fbe9a2b87ffb.js @@ -0,0 +1,2 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[30],{"4Cm8":function(t,e,i){"use strict";function s(t){var e;return c.createElement("div",{className:h(b.fadeLeft,(e={},e[b.isVisible]=t.isVisible,e))})}function r(t){var e;return c.createElement("div",{className:h(b.fadeRight,(e={},e[b.isVisible]=t.isVisible,e))})}function n(t){return c.createElement(l,a.__assign({},t,{className:b.scrollLeft}))}function o(t){return c.createElement(l,a.__assign({},t,{className:b.scrollRight}))}function l(t){var e;return c.createElement("div",{className:h(t.className,(e={},e[b.isVisible]=t.isVisible,e)),onClick:t.onClick},c.createElement("div",{className:b.iconWrap},c.createElement(p.a,{icon:m,className:b.icon})))}var a,c,h,u,p,d,f,w,m,b,_,R,S,V,v,g;i.d(e,"a",function(){return _}),a=i("mrSG"),c=i("q1tI"),h=i("TSYQ"),u=i("XmVn"),p=i("jjrI"),d=i("beCu"),f=i("j1f4"),w=i("Ialn"),m=i("Vike"),b=i("ji/R"),S=o,V=s,v=r,void 0===(R=n)&&(R=n),void 0===S&&(S=o),void 0===V&&(V=s),void 0===v&&(v=r),(g=function(t){function e(e){var i=t.call(this,e)||this;return i._scroll=c.createRef(),i._wrapMeasureRef=c.createRef(),i._contentMeasureRef=c.createRef(),i._handleScrollLeft=function(){i.props.onScrollButtonClick?i.props.onScrollButtonClick("left"):i.animateTo(Math.max(0,i.currentPosition()-(i.state.widthWrap-50)))},i._handleScrollRight=function(){i.props.onScrollButtonClick?i.props.onScrollButtonClick("right"):i.animateTo(Math.min((i.state.widthContent||0)-(i.state.widthWrap||0),i.currentPosition()+(i.state.widthWrap-50)))},i._handleResizeWrap=function(t){i.props.onMeasureWrap&&i.props.onMeasureWrap(t),i.setState({widthWrap:t.width}),i._checkButtonsVisibility()},i._handleResizeContent=function(t){i.props.onMeasureContent&&i.props.onMeasureContent(t);var e=i.props,s=e.shouldDecreaseWidthContent,r=e.buttonsWidthIfDecreasedWidthContent;s&&r?i.setState({widthContent:t.width+2*r}):i.setState({widthContent:t.width})},i._handleScroll=function(){var t=i.props.onScroll;t&&t(i.currentPosition(),i.isAtLeft(),i.isAtRight()),i._checkButtonsVisibility()},i._checkButtonsVisibility=function(){var t,e,s,r,n;(i.props.isVisibleButtons||i.props.isVisibleFade)&&(e=(t=i.state).isVisibleLeftButton,s=t.isVisibleRightButton,r=i.isAtLeft(),n=i.isAtRight(),r||e?r&&e&&i.setState({isVisibleLeftButton:!1}):i.setState({isVisibleLeftButton:!0}),n||s?n&&s&&i.setState({isVisibleRightButton:!1}):i.setState({isVisibleRightButton:!0}))},i.state={widthContent:0,widthWrap:0,isVisibleRightButton:!1,isVisibleLeftButton:!1},i}return a.__extends(e,t),e.prototype.componentDidMount=function(){this._checkButtonsVisibility()},e.prototype.componentDidUpdate=function(t,e){e.widthWrap===this.state.widthWrap&&e.widthContent===this.state.widthContent||this._handleScroll(),this.props.shouldMeasure&&this._wrapMeasureRef.current&&this._contentMeasureRef.current&&(this._wrapMeasureRef.current.measure(),this._contentMeasureRef.current.measure())},e.prototype.currentPosition=function(){return this._scroll.current?w.IS_RTL?Object(w.getLTRScrollLeft)(this._scroll.current):this._scroll.current.scrollLeft:0}, +e.prototype.isAtLeft=function(){return!this._isOverflowed()||this.currentPosition()<=this.props.hideButtonsFrom},e.prototype.isAtRight=function(){return!this._isOverflowed()||this.currentPosition()+this.state.widthWrap>=this.state.widthContent-this.props.hideButtonsFrom},e.prototype.animateTo=function(t,e){void 0===e&&(e=f.dur);var i=this._scroll.current;i&&(w.IS_RTL&&(t=Object(w.getLTRScrollLeftOffset)(i,t)),e<=0?i.scrollLeft=Math.round(t):Object(d.doAnimate)({onStep:function(t,e){i.scrollLeft=Math.round(e)},from:i.scrollLeft,to:Math.round(t),easing:f.easingFunc.easeInOutCubic,duration:e}))},e.prototype.render=function(){var t,e=this.props,i=e.children,s=e.isVisibleScrollbar,r=e.isVisibleFade,n=e.isVisibleButtons,o=e.shouldMeasure,l=e.shouldDecreaseWidthContent,a=e.buttonsWidthIfDecreasedWidthContent,p=this.state,d=p.isVisibleRightButton,f=p.isVisibleLeftButton,w=l&&a;return c.createElement(u,{whitelist:["width"],onMeasure:this._handleResizeWrap,shouldMeasure:o,ref:this._wrapMeasureRef},c.createElement("div",{className:b.wrapOverflow},c.createElement("div",{className:h(b.wrap,w?b.wrapWithArrowsOuting:"")},c.createElement("div",{className:h(b.scrollWrap,(t={},t[b.noScrollBar]=!s,t)),onScroll:this._handleScroll,ref:this._scroll},c.createElement(u,{onMeasure:this._handleResizeContent,whitelist:["width"],shouldMeasure:o,ref:this._contentMeasureRef},i)),r&&c.createElement(V,{isVisible:f}),r&&c.createElement(v,{isVisible:d}),n&&c.createElement(R,{onClick:this._handleScrollLeft,isVisible:f}),n&&c.createElement(S,{onClick:this._handleScrollRight,isVisible:d}))))},e.prototype._isOverflowed=function(){var t=this.state;return t.widthContent>t.widthWrap},e}(c.PureComponent)).defaultProps={isVisibleScrollbar:!0,shouldMeasure:!0,hideButtonsFrom:1},_=g},Vike:function(t,e){t.exports=''},"ji/R":function(t,e,i){t.exports={wrap:"wrap-5DN0XnS4-",wrapWithArrowsOuting:"wrapWithArrowsOuting-1OPNi0IP-",wrapOverflow:"wrapOverflow-2FHnhKaN-",scrollWrap:"scrollWrap-nAnkzkWd-",noScrollBar:"noScrollBar-34JzryqI-",icon:"icon-1nfNqIRh-",scrollLeft:"scrollLeft-2cl_k1e7-",scrollRight:"scrollRight-2SEqCpTf-",isVisible:"isVisible-Stm3XOHb-",iconWrap:"iconWrap-1E4GEP7h-",fadeLeft:"fadeLeft-244lj3pA-",fadeRight:"fadeRight-1JnS42hI-"}}}]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/31.5c895c4f655400b0b4e2.css b/public/charting_library/static/bundles/31.5c895c4f655400b0b4e2.css new file mode 100644 index 0000000..84adb0d --- /dev/null +++ b/public/charting_library/static/bundles/31.5c895c4f655400b0b4e2.css @@ -0,0 +1 @@ +.icon-3yfDkFjY-{display:flex;flex-direction:row;align-items:center;transition:transform .35s cubic-bezier(.175,.885,.32,1.275)}.icon-3yfDkFjY- svg{display:block;fill:currentColor;width:8px;height:4px}.icon-3yfDkFjY-.dropped-50rfOQ8V-{transform:rotate(180deg)}.button-13wlLwhJ-{display:flex;flex:1 0 auto;align-items:center;height:100%;cursor:default;color:#131722;position:relative;z-index:0;transition:background-color .35s ease,color 60ms ease}html.theme-dark .button-13wlLwhJ-{color:#787b86}.button-13wlLwhJ-:active{color:#000}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.button-13wlLwhJ-:hover{color:#000}}html.theme-dark .button-13wlLwhJ-:active{color:#868993}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .button-13wlLwhJ-:hover{color:#868993}}.button-13wlLwhJ-.hover-3L87f6Kw-:before,.button-13wlLwhJ-:active:before{content:"";display:block;position:absolute;z-index:-1;top:2px;right:2px;bottom:2px;left:2px;background-color:#f0f3fa;border-radius:2px}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.button-13wlLwhJ-:hover:before{content:"";display:block;position:absolute;z-index:-1;top:2px;right:2px;bottom:2px;left:2px;background-color:#f0f3fa;border-radius:2px}}html.theme-dark .button-13wlLwhJ-.hover-3L87f6Kw-:before,html.theme-dark .button-13wlLwhJ-:active:before{background-color:#2a2e39}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .button-13wlLwhJ-:hover:before{background-color:#2a2e39}}.button-13wlLwhJ- svg{display:block;fill:currentColor}.button-13wlLwhJ- .arrow-2pXEy7ej-{display:flex;contain:content;align-items:center;height:100%}.button-13wlLwhJ- .arrowWrap-r5l5nQXU-{margin:0 6px;transition:transform .35s ease}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.button-13wlLwhJ-:hover .arrowWrap-r5l5nQXU-{transform:translateY(2px)}}.button-13wlLwhJ-.isOpened-1939ai3F-.hover-3L87f6Kw-:before,.button-13wlLwhJ-.isOpened-1939ai3F-:active:before,.button-13wlLwhJ-.isOpened-1939ai3F-:before{content:"";display:block;position:absolute;z-index:-1;top:0;right:0;bottom:0;left:0;border-radius:0;background-color:#f0f3fa}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.button-13wlLwhJ-.isOpened-1939ai3F-:hover:before{content:"";display:block;position:absolute;z-index:-1;top:0;right:0;bottom:0;left:0;border-radius:0;background-color:#f0f3fa}}html.theme-dark .button-13wlLwhJ-.isOpened-1939ai3F-.hover-3L87f6Kw-:before,html.theme-dark .button-13wlLwhJ-.isOpened-1939ai3F-:active:before,html.theme-dark .button-13wlLwhJ-.isOpened-1939ai3F-:before{background-color:#2a2e39}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .button-13wlLwhJ-.isOpened-1939ai3F-:hover:before{background-color:#2a2e39}}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.button-13wlLwhJ-.isOpened-1939ai3F-:hover .arrowWrap-r5l5nQXU-{transform:none}} \ No newline at end of file diff --git a/public/charting_library/static/bundles/31.5c895c4f655400b0b4e2.rtl.css b/public/charting_library/static/bundles/31.5c895c4f655400b0b4e2.rtl.css new file mode 100644 index 0000000..d0c0441 --- /dev/null +++ b/public/charting_library/static/bundles/31.5c895c4f655400b0b4e2.rtl.css @@ -0,0 +1 @@ +.icon-3yfDkFjY-{display:flex;flex-direction:row;align-items:center;transition:transform .35s cubic-bezier(.175,.885,.32,1.275)}.icon-3yfDkFjY- svg{display:block;fill:currentColor;width:8px;height:4px}.icon-3yfDkFjY-.dropped-50rfOQ8V-{transform:rotate(-180deg)}.button-13wlLwhJ-{display:flex;flex:1 0 auto;align-items:center;height:100%;cursor:default;color:#131722;position:relative;z-index:0;transition:background-color .35s ease,color 60ms ease}html.theme-dark .button-13wlLwhJ-{color:#787b86}.button-13wlLwhJ-:active{color:#000}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.button-13wlLwhJ-:hover{color:#000}}html.theme-dark .button-13wlLwhJ-:active{color:#868993}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .button-13wlLwhJ-:hover{color:#868993}}.button-13wlLwhJ-.hover-3L87f6Kw-:before,.button-13wlLwhJ-:active:before{content:"";display:block;position:absolute;z-index:-1;top:2px;left:2px;bottom:2px;right:2px;background-color:#f0f3fa;border-radius:2px}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.button-13wlLwhJ-:hover:before{content:"";display:block;position:absolute;z-index:-1;top:2px;left:2px;bottom:2px;right:2px;background-color:#f0f3fa;border-radius:2px}}html.theme-dark .button-13wlLwhJ-.hover-3L87f6Kw-:before,html.theme-dark .button-13wlLwhJ-:active:before{background-color:#2a2e39}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .button-13wlLwhJ-:hover:before{background-color:#2a2e39}}.button-13wlLwhJ- svg{display:block;fill:currentColor}.button-13wlLwhJ- .arrow-2pXEy7ej-{display:flex;contain:content;align-items:center;height:100%}.button-13wlLwhJ- .arrowWrap-r5l5nQXU-{margin:0 6px;transition:transform .35s ease}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.button-13wlLwhJ-:hover .arrowWrap-r5l5nQXU-{transform:translateY(2px)}}.button-13wlLwhJ-.isOpened-1939ai3F-.hover-3L87f6Kw-:before,.button-13wlLwhJ-.isOpened-1939ai3F-:active:before,.button-13wlLwhJ-.isOpened-1939ai3F-:before{content:"";display:block;position:absolute;z-index:-1;top:0;left:0;bottom:0;right:0;border-radius:0;background-color:#f0f3fa}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.button-13wlLwhJ-.isOpened-1939ai3F-:hover:before{content:"";display:block;position:absolute;z-index:-1;top:0;left:0;bottom:0;right:0;border-radius:0;background-color:#f0f3fa}}html.theme-dark .button-13wlLwhJ-.isOpened-1939ai3F-.hover-3L87f6Kw-:before,html.theme-dark .button-13wlLwhJ-.isOpened-1939ai3F-:active:before,html.theme-dark .button-13wlLwhJ-.isOpened-1939ai3F-:before{background-color:#2a2e39}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .button-13wlLwhJ-.isOpened-1939ai3F-:hover:before{background-color:#2a2e39}}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.button-13wlLwhJ-.isOpened-1939ai3F-:hover .arrowWrap-r5l5nQXU-{transform:none}} \ No newline at end of file diff --git a/public/charting_library/static/bundles/31.d081df3316799b489847.js b/public/charting_library/static/bundles/31.d081df3316799b489847.js new file mode 100644 index 0000000..9b84033 --- /dev/null +++ b/public/charting_library/static/bundles/31.d081df3316799b489847.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[31],[]]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/32.48df7a8cdc38d60b308b.js b/public/charting_library/static/bundles/32.48df7a8cdc38d60b308b.js new file mode 100644 index 0000000..bae5831 --- /dev/null +++ b/public/charting_library/static/bundles/32.48df7a8cdc38d60b308b.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[32],[]]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/32.b92773bfff0363a69bb9.css b/public/charting_library/static/bundles/32.b92773bfff0363a69bb9.css new file mode 100644 index 0000000..c941075 --- /dev/null +++ b/public/charting_library/static/bundles/32.b92773bfff0363a69bb9.css @@ -0,0 +1 @@ +.errors-C3KBJakt-{position:absolute;z-index:2;margin-bottom:1px;padding:10px 15px;color:#fff;opacity:0;text-align:center;border-radius:3px;background-color:#2a2e39;pointer-events:none;transform:translateY(-3px);box-sizing:border-box}html.theme-dark .errors-C3KBJakt-{background-color:#363c4e}.errors-C3KBJakt-:empty{display:none}.errors-C3KBJakt-.show-2G4PY7Uu-{opacity:1}.errors-C3KBJakt- .error-3G4k6KUC-{font-size:12px;line-height:1.4;text-transform:none}.clock-3pqBsiNm-{display:flex;flex-direction:column;border-radius:3px;background-color:#fff;box-shadow:0 2px 4px 0 rgba(107,121,136,.4)}html.theme-dark .clock-3pqBsiNm-{background-color:#1e222d;box-shadow:0 2px 4px 0 #000}.header-pTWMGSpm-{flex:0 0 50px;height:50px;box-sizing:border-box;font-size:24px;line-height:1;text-align:center;padding:10px 0;border-bottom:1px solid;border-bottom-color:#eceff2;color:#262b3e}html.theme-dark .header-pTWMGSpm-{color:#c5cbce;border-bottom-color:#363c4e}.header-pTWMGSpm- .number-9PC9lvyt-{padding:0 3px;cursor:pointer}.header-pTWMGSpm- .number-9PC9lvyt-.active-1sonmMLV-{color:#2196f3}.body-2Q-g3GDd-{padding:10px;background:#f7f8fa;flex:1 1 auto;display:flex;flex-direction:column;justify-content:center}html.theme-dark .body-2Q-g3GDd-{background:#1c2030}.clockFace-eHYbqh-S-{position:relative;width:200px;height:200px;border-radius:50%;box-sizing:border-box;margin:0 auto;background:#fff}html.theme-dark .clockFace-eHYbqh-S-{background:#262b3e}.clockFace-eHYbqh-S- div{position:absolute;width:100%;height:100%}.clockFace-eHYbqh-S- .face-2iCoBAOV-{position:absolute;top:0;left:0;border-radius:50%;font-size:15px;pointer-events:none}.clockFace-eHYbqh-S- .face-2iCoBAOV- .number-9PC9lvyt-{position:absolute;width:28px;height:28px;margin-top:-14px;margin-left:-14px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;border-radius:50%;display:flex;align-items:center;text-align:center;pointer-events:all;color:#262b3e;transition:background-color 60ms ease}html.theme-dark .clockFace-eHYbqh-S- .face-2iCoBAOV- .number-9PC9lvyt-{color:#c5cbce}.clockFace-eHYbqh-S- .face-2iCoBAOV- .number-9PC9lvyt->span{flex:1 1 auto}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.clockFace-eHYbqh-S- .face-2iCoBAOV- .number-9PC9lvyt-:hover{background-color:rgba(247,248,250,.5)}}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .clockFace-eHYbqh-S- .face-2iCoBAOV- .number-9PC9lvyt-:hover{background-color:rgba(28,32,48,.5)}}.clockFace-eHYbqh-S- .face-2iCoBAOV- .number-9PC9lvyt-:active{background-color:#f7f8fa}html.theme-dark .clockFace-eHYbqh-S- .face-2iCoBAOV- .number-9PC9lvyt-:active{background-color:#1c2030}.clockFace-eHYbqh-S- .face-2iCoBAOV- .number-9PC9lvyt-.inner-1mVlhYbe-{font-size:120%}.clockFace-eHYbqh-S- .hand-2ZG8pJQb-{position:absolute;display:block;pointer-events:none;bottom:50%;left:50%;width:1px;margin-left:-.5px;transform-origin:50% 100%;background:#2196f3}.clockFace-eHYbqh-S- .hand-2ZG8pJQb- .knob-31dEppHa-{position:absolute;top:-26px;left:50%;width:26px;height:26px;margin-left:-13px;box-sizing:border-box;border-radius:50%;border:2px solid;border-color:#2196f3}html.theme-dark .clockFace-eHYbqh-S- .hand-2ZG8pJQb- .knob-31dEppHa-{border-color:#1976d2}.clockFace-eHYbqh-S- .centerDot-210Fo0oV-{position:absolute;top:50%;left:50%;width:4px;height:4px;margin-top:-2px;margin-left:-2px;content:"";border-radius:50%;background:#2196f3} \ No newline at end of file diff --git a/public/charting_library/static/bundles/32.b92773bfff0363a69bb9.rtl.css b/public/charting_library/static/bundles/32.b92773bfff0363a69bb9.rtl.css new file mode 100644 index 0000000..435de72 --- /dev/null +++ b/public/charting_library/static/bundles/32.b92773bfff0363a69bb9.rtl.css @@ -0,0 +1 @@ +.errors-C3KBJakt-{position:absolute;z-index:2;margin-bottom:1px;padding:10px 15px;color:#fff;opacity:0;text-align:center;border-radius:3px;background-color:#2a2e39;pointer-events:none;transform:translateY(-3px);box-sizing:border-box}html.theme-dark .errors-C3KBJakt-{background-color:#363c4e}.errors-C3KBJakt-:empty{display:none}.errors-C3KBJakt-.show-2G4PY7Uu-{opacity:1}.errors-C3KBJakt- .error-3G4k6KUC-{font-size:12px;line-height:1.4;text-transform:none}.clock-3pqBsiNm-{display:flex;flex-direction:column;border-radius:3px;background-color:#fff;box-shadow:0 2px 4px 0 rgba(107,121,136,.4)}html.theme-dark .clock-3pqBsiNm-{background-color:#1e222d;box-shadow:0 2px 4px 0 #000}.header-pTWMGSpm-{flex:0 0 50px;height:50px;box-sizing:border-box;font-size:24px;line-height:1;text-align:center;padding:10px 0;border-bottom:1px solid;border-bottom-color:#eceff2;color:#262b3e}html.theme-dark .header-pTWMGSpm-{color:#c5cbce;border-bottom-color:#363c4e}.header-pTWMGSpm- .number-9PC9lvyt-{padding:0 3px;cursor:pointer}.header-pTWMGSpm- .number-9PC9lvyt-.active-1sonmMLV-{color:#2196f3}.body-2Q-g3GDd-{padding:10px;background:#f7f8fa;flex:1 1 auto;display:flex;flex-direction:column;justify-content:center}html.theme-dark .body-2Q-g3GDd-{background:#1c2030}.clockFace-eHYbqh-S-{position:relative;width:200px;height:200px;border-radius:50%;box-sizing:border-box;margin:0 auto;background:#fff}html.theme-dark .clockFace-eHYbqh-S-{background:#262b3e}.clockFace-eHYbqh-S- div{position:absolute;width:100%;height:100%}.clockFace-eHYbqh-S- .face-2iCoBAOV-{position:absolute;top:0;right:0;border-radius:50%;font-size:15px;pointer-events:none}.clockFace-eHYbqh-S- .face-2iCoBAOV- .number-9PC9lvyt-{position:absolute;width:28px;height:28px;margin-top:-14px;margin-left:-14px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;border-radius:50%;display:flex;align-items:center;text-align:center;pointer-events:all;color:#262b3e;transition:background-color 60ms ease}html.theme-dark .clockFace-eHYbqh-S- .face-2iCoBAOV- .number-9PC9lvyt-{color:#c5cbce}.clockFace-eHYbqh-S- .face-2iCoBAOV- .number-9PC9lvyt->span{flex:1 1 auto}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.clockFace-eHYbqh-S- .face-2iCoBAOV- .number-9PC9lvyt-:hover{background-color:rgba(247,248,250,.5)}}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .clockFace-eHYbqh-S- .face-2iCoBAOV- .number-9PC9lvyt-:hover{background-color:rgba(28,32,48,.5)}}.clockFace-eHYbqh-S- .face-2iCoBAOV- .number-9PC9lvyt-:active{background-color:#f7f8fa}html.theme-dark .clockFace-eHYbqh-S- .face-2iCoBAOV- .number-9PC9lvyt-:active{background-color:#1c2030}.clockFace-eHYbqh-S- .face-2iCoBAOV- .number-9PC9lvyt-.inner-1mVlhYbe-{font-size:120%}.clockFace-eHYbqh-S- .hand-2ZG8pJQb-{position:absolute;display:block;pointer-events:none;bottom:50%;right:50%;width:1px;margin-right:-.5px;transform-origin:50% 100%;background:#2196f3}.clockFace-eHYbqh-S- .hand-2ZG8pJQb- .knob-31dEppHa-{position:absolute;top:-26px;right:50%;width:26px;height:26px;margin-right:-13px;box-sizing:border-box;border-radius:50%;border:2px solid;border-color:#2196f3}html.theme-dark .clockFace-eHYbqh-S- .hand-2ZG8pJQb- .knob-31dEppHa-{border-color:#1976d2}.clockFace-eHYbqh-S- .centerDot-210Fo0oV-{position:absolute;top:50%;right:50%;width:4px;height:4px;margin-top:-2px;margin-right:-2px;content:"";border-radius:50%;background:#2196f3} \ No newline at end of file diff --git a/public/charting_library/static/bundles/33.4a74c62095be3045c87e.js b/public/charting_library/static/bundles/33.4a74c62095be3045c87e.js new file mode 100644 index 0000000..28ac26b --- /dev/null +++ b/public/charting_library/static/bundles/33.4a74c62095be3045c87e.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[33],[]]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/33.ac320c107772f8e72252.css b/public/charting_library/static/bundles/33.ac320c107772f8e72252.css new file mode 100644 index 0000000..d66f779 --- /dev/null +++ b/public/charting_library/static/bundles/33.ac320c107772f8e72252.css @@ -0,0 +1 @@ +.ghost-3yO24wIn-.primary-1rSzOFdX-{color:#2196f3;border:1px solid #2196f3;background-color:transparent}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.ghost-3yO24wIn-.primary-1rSzOFdX-:hover{color:#fff;transition-duration:.06s}}.ghost-3yO24wIn-.success-1qQ3_tEI-{color:#3cbc98;border:1px solid #3cbc98;background-color:transparent}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.ghost-3yO24wIn-.success-1qQ3_tEI-:hover{color:#fff;transition-duration:.06s}}.ghost-3yO24wIn-.danger-jKTO4wDd-{color:#ff4a68;border:1px solid #ff4a68;background-color:transparent}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.ghost-3yO24wIn-.danger-jKTO4wDd-:hover{color:#fff;transition-duration:.06s}}.ghost-3yO24wIn-.warning-2uDfz7Zc-{color:#f89e30;border:1px solid #f89e30;background-color:transparent}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.ghost-3yO24wIn-.warning-2uDfz7Zc-:hover{color:#fff;transition-duration:.06s}}.ghost-3yO24wIn-.secondary-3ll81brZ-{color:#757575;border:1px solid #e9eff2;background-color:transparent}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.ghost-3yO24wIn-.secondary-3ll81brZ-:hover{color:#757575;transition-duration:.06s}}.button-2O-nMUcz-{display:inline-flex;justify-content:center;align-items:center;padding:0;position:relative;min-width:35px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-align:center;white-space:nowrap;outline:0;cursor:pointer;overflow:hidden;box-sizing:border-box;line-height:32px;font-size:14px;transition:background-color .35s ease,border-color .35s ease,color .35s ease;border-radius:2px;border:1px solid transparent}.button-2O-nMUcz-.withPadding-_5CJoO5q-{padding:0 22px}.button-2O-nMUcz-+.button-2O-nMUcz-{margin-left:15px}.hiddenText-3qcN5Wif-{visibility:hidden;flex:1 1 auto}.text-2KOWx3rB-{position:absolute;left:0;right:0;bottom:0;top:0;text-align:center;display:inline-flex;justify-content:center;align-items:center;transition:opacity .175s ease,transform .175s ease}.loader-1CC-1F8J-{display:inline-block;transition:opacity .35s ease;opacity:1}.base-2d4XFcnI-{color:#757575;border-color:#adaeb0;background-color:transparent}html.theme-dark .base-2d4XFcnI-{border-color:#4f5966;color:#758696}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.base-2d4XFcnI-:hover{background-color:#f2f2f2;transition-duration:.06s}}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .base-2d4XFcnI-:hover{background-color:#1c2030}}.base-2d4XFcnI-:active{background-color:#ececec;transition-duration:.06s}html.theme-dark .base-2d4XFcnI-:active{background-color:#262b3e}.primary-1rSzOFdX-{color:#fff;border-color:#2196f3;background-color:#2196f3}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.primary-1rSzOFdX-:hover{background-color:#1e88e5;transition-duration:.06s}}.primary-1rSzOFdX-:active{background-color:#049ddc;transition-duration:.06s}.success-1qQ3_tEI-{color:#fff;border-color:#3cbc98;background-color:#3cbc98}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.success-1qQ3_tEI-:hover{background-color:#38b395;transition-duration:.06s}}.success-1qQ3_tEI-:active{background-color:#00a97f;transition-duration:.06s}.danger-jKTO4wDd-{color:#fff;border-color:#ff4a68;background-color:#ff4a68}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.danger-jKTO4wDd-:hover{background-color:#f24965;transition-duration:.06s}}.danger-jKTO4wDd-:active{background-color:#ff173e;transition-duration:.06s}.warning-2uDfz7Zc-{color:#fff;border-color:#f89e30;background-color:#f89e30}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.warning-2uDfz7Zc-:hover{background-color:#f79217;transition-duration:.06s}}.warning-2uDfz7Zc-:active{background-color:#d47807;transition-duration:.06s}.secondary-3ll81brZ-{color:#757575;border-color:#eceff2;background-color:#eceff2}html.theme-dark .secondary-3ll81brZ-{background-color:#363c4e;border-color:#363c4e;color:#c5cbce}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.secondary-3ll81brZ-:hover{background-color:#dce6ea;transition-duration:.06s}}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .secondary-3ll81brZ-:hover{background-color:#4f5966}}.secondary-3ll81brZ-:active{background-color:#cfdce3;transition-duration:.06s}html.theme-dark .secondary-3ll81brZ-:active{background-color:#4f5966}.secondaryScript-2iIeFIWW-{color:#fff;border-color:#9db2bd;background-color:#9db2bd}html.theme-dark .secondaryScript-2iIeFIWW-{background-color:#363c4e;border-color:#363c4e}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.secondaryScript-2iIeFIWW-:hover{background-color:#9db2bd;transition-duration:.06s}}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .secondaryScript-2iIeFIWW-:hover{background-color:#363c4e}}.secondaryScript-2iIeFIWW-:active{background-color:#cfdce3;transition-duration:.06s}html.theme-dark .secondaryScript-2iIeFIWW-:active{background-color:#363c4e}.link-2sR0CShp-{color:#2196f3;transition:color .35s ease;background-color:transparent}html.theme-dark .link-2sR0CShp-{color:#1976d2}.link-2sR0CShp-:visited{color:#2196f3;fill:#2196f3}html.theme-dark .link-2sR0CShp-:visited{fill:#1976d2;color:#1976d2}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.link-2sR0CShp-:hover{color:#1e88e5;fill:#1e88e5;transition-duration:.06s}}.link-2sR0CShp-:active{color:#1e88e5;fill:#1e88e5;transition-duration:.06s}.xsmall-1aiWe3Hs-{line-height:17px;border-radius:1px;font-size:11px;font-weight:400}.xsmall-1aiWe3Hs-.withPadding-_5CJoO5q-{padding:0 7px}.xsmall-1aiWe3Hs-+.xsmall-1aiWe3Hs-{margin-left:10px}.xsmall-1aiWe3Hs-.rounded-3qEdyiAz-{border-radius:10px}.small-2-nQtW8O-{line-height:25px;font-size:13px}.small-2-nQtW8O-.withPadding-_5CJoO5q-{padding:0 12px}.small-2-nQtW8O-+.small-2-nQtW8O-{margin-left:10px}.small-2-nQtW8O-.rounded-3qEdyiAz-{border-radius:14px}.large-33HYhX8D-{line-height:46px;font-size:17px;letter-spacing:1px}.large-33HYhX8D-.withPadding-_5CJoO5q-{padding:0 30px}.large-33HYhX8D-.rounded-3qEdyiAz-{border-radius:24px}.grouped-1WsMjajI-:not(:first-child):not(:last-child){border-radius:0}.grouped-1WsMjajI-+.grouped-1WsMjajI-{margin-left:-1px}.grouped-1WsMjajI-:first-child{margin-left:0}.grouped-1WsMjajI-:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.grouped-1WsMjajI-:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.growable-F6tv8R_j-{flex:1}.growable-F6tv8R_j-.withPadding-_5CJoO5q-{padding:0}.active-2UxWxOgk-:active{transform:translateY(1px)}.disabled-3u0ULovv-{color:#adaeb0;border-color:#f1f3f6;background-color:#f1f3f6;cursor:default}html.theme-dark .disabled-3u0ULovv-{background-color:#262b3e;border-color:#262b3e;color:#363c4e}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.disabled-3u0ULovv-:hover{background-color:#f1f3f6;transition-duration:.06s}}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .disabled-3u0ULovv-:hover{background-color:#262b3e}}.disabled-3u0ULovv-:active{background-color:#f1f3f6;transition-duration:.06s}html.theme-dark .disabled-3u0ULovv-:active{background-color:#262b3e}.disabled-3u0ULovv-:active{transform:none}.rounded-3qEdyiAz-{border-radius:17px} \ No newline at end of file diff --git a/public/charting_library/static/bundles/33.ac320c107772f8e72252.rtl.css b/public/charting_library/static/bundles/33.ac320c107772f8e72252.rtl.css new file mode 100644 index 0000000..7a6d8ad --- /dev/null +++ b/public/charting_library/static/bundles/33.ac320c107772f8e72252.rtl.css @@ -0,0 +1 @@ +.ghost-3yO24wIn-.primary-1rSzOFdX-{color:#2196f3;border:1px solid #2196f3;background-color:transparent}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.ghost-3yO24wIn-.primary-1rSzOFdX-:hover{color:#fff;transition-duration:.06s}}.ghost-3yO24wIn-.success-1qQ3_tEI-{color:#3cbc98;border:1px solid #3cbc98;background-color:transparent}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.ghost-3yO24wIn-.success-1qQ3_tEI-:hover{color:#fff;transition-duration:.06s}}.ghost-3yO24wIn-.danger-jKTO4wDd-{color:#ff4a68;border:1px solid #ff4a68;background-color:transparent}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.ghost-3yO24wIn-.danger-jKTO4wDd-:hover{color:#fff;transition-duration:.06s}}.ghost-3yO24wIn-.warning-2uDfz7Zc-{color:#f89e30;border:1px solid #f89e30;background-color:transparent}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.ghost-3yO24wIn-.warning-2uDfz7Zc-:hover{color:#fff;transition-duration:.06s}}.ghost-3yO24wIn-.secondary-3ll81brZ-{color:#757575;border:1px solid #e9eff2;background-color:transparent}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.ghost-3yO24wIn-.secondary-3ll81brZ-:hover{color:#757575;transition-duration:.06s}}.button-2O-nMUcz-{display:inline-flex;justify-content:center;align-items:center;padding:0;position:relative;min-width:35px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-align:center;white-space:nowrap;outline:0;cursor:pointer;overflow:hidden;box-sizing:border-box;line-height:32px;font-size:14px;transition:background-color .35s ease,border-color .35s ease,color .35s ease;border-radius:2px;border:1px solid transparent}.button-2O-nMUcz-.withPadding-_5CJoO5q-{padding:0 22px}.button-2O-nMUcz-+.button-2O-nMUcz-{margin-right:15px}.hiddenText-3qcN5Wif-{visibility:hidden;flex:1 1 auto}.text-2KOWx3rB-{position:absolute;right:0;left:0;bottom:0;top:0;text-align:center;display:inline-flex;justify-content:center;align-items:center;transition:opacity .175s ease,transform .175s ease}.loader-1CC-1F8J-{display:inline-block;transition:opacity .35s ease;opacity:1}.base-2d4XFcnI-{color:#757575;border-color:#adaeb0;background-color:transparent}html.theme-dark .base-2d4XFcnI-{border-color:#4f5966;color:#758696}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.base-2d4XFcnI-:hover{background-color:#f2f2f2;transition-duration:.06s}}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .base-2d4XFcnI-:hover{background-color:#1c2030}}.base-2d4XFcnI-:active{background-color:#ececec;transition-duration:.06s}html.theme-dark .base-2d4XFcnI-:active{background-color:#262b3e}.primary-1rSzOFdX-{color:#fff;border-color:#2196f3;background-color:#2196f3}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.primary-1rSzOFdX-:hover{background-color:#1e88e5;transition-duration:.06s}}.primary-1rSzOFdX-:active{background-color:#049ddc;transition-duration:.06s}.success-1qQ3_tEI-{color:#fff;border-color:#3cbc98;background-color:#3cbc98}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.success-1qQ3_tEI-:hover{background-color:#38b395;transition-duration:.06s}}.success-1qQ3_tEI-:active{background-color:#00a97f;transition-duration:.06s}.danger-jKTO4wDd-{color:#fff;border-color:#ff4a68;background-color:#ff4a68}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.danger-jKTO4wDd-:hover{background-color:#f24965;transition-duration:.06s}}.danger-jKTO4wDd-:active{background-color:#ff173e;transition-duration:.06s}.warning-2uDfz7Zc-{color:#fff;border-color:#f89e30;background-color:#f89e30}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.warning-2uDfz7Zc-:hover{background-color:#f79217;transition-duration:.06s}}.warning-2uDfz7Zc-:active{background-color:#d47807;transition-duration:.06s}.secondary-3ll81brZ-{color:#757575;border-color:#eceff2;background-color:#eceff2}html.theme-dark .secondary-3ll81brZ-{background-color:#363c4e;border-color:#363c4e;color:#c5cbce}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.secondary-3ll81brZ-:hover{background-color:#dce6ea;transition-duration:.06s}}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .secondary-3ll81brZ-:hover{background-color:#4f5966}}.secondary-3ll81brZ-:active{background-color:#cfdce3;transition-duration:.06s}html.theme-dark .secondary-3ll81brZ-:active{background-color:#4f5966}.secondaryScript-2iIeFIWW-{color:#fff;border-color:#9db2bd;background-color:#9db2bd}html.theme-dark .secondaryScript-2iIeFIWW-{background-color:#363c4e;border-color:#363c4e}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.secondaryScript-2iIeFIWW-:hover{background-color:#9db2bd;transition-duration:.06s}}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .secondaryScript-2iIeFIWW-:hover{background-color:#363c4e}}.secondaryScript-2iIeFIWW-:active{background-color:#cfdce3;transition-duration:.06s}html.theme-dark .secondaryScript-2iIeFIWW-:active{background-color:#363c4e}.link-2sR0CShp-{color:#2196f3;transition:color .35s ease;background-color:transparent}html.theme-dark .link-2sR0CShp-{color:#1976d2}.link-2sR0CShp-:visited{color:#2196f3;fill:#2196f3}html.theme-dark .link-2sR0CShp-:visited{fill:#1976d2;color:#1976d2}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.link-2sR0CShp-:hover{color:#1e88e5;fill:#1e88e5;transition-duration:.06s}}.link-2sR0CShp-:active{color:#1e88e5;fill:#1e88e5;transition-duration:.06s}.xsmall-1aiWe3Hs-{line-height:17px;border-radius:1px;font-size:11px;font-weight:400}.xsmall-1aiWe3Hs-.withPadding-_5CJoO5q-{padding:0 7px}.xsmall-1aiWe3Hs-+.xsmall-1aiWe3Hs-{margin-right:10px}.xsmall-1aiWe3Hs-.rounded-3qEdyiAz-{border-radius:10px}.small-2-nQtW8O-{line-height:25px;font-size:13px}.small-2-nQtW8O-.withPadding-_5CJoO5q-{padding:0 12px}.small-2-nQtW8O-+.small-2-nQtW8O-{margin-right:10px}.small-2-nQtW8O-.rounded-3qEdyiAz-{border-radius:14px}.large-33HYhX8D-{line-height:46px;font-size:17px;letter-spacing:1px}.large-33HYhX8D-.withPadding-_5CJoO5q-{padding:0 30px}.large-33HYhX8D-.rounded-3qEdyiAz-{border-radius:24px}.grouped-1WsMjajI-:not(:first-child):not(:last-child){border-radius:0}.grouped-1WsMjajI-+.grouped-1WsMjajI-{margin-right:-1px}.grouped-1WsMjajI-:first-child{margin-right:0}.grouped-1WsMjajI-:not(:last-child){border-bottom-left-radius:0;border-top-left-radius:0}.grouped-1WsMjajI-:not(:first-child){border-bottom-right-radius:0;border-top-right-radius:0}.growable-F6tv8R_j-{flex:1}.growable-F6tv8R_j-.withPadding-_5CJoO5q-{padding:0}.active-2UxWxOgk-:active{transform:translateY(1px)}.disabled-3u0ULovv-{color:#adaeb0;border-color:#f1f3f6;background-color:#f1f3f6;cursor:default}html.theme-dark .disabled-3u0ULovv-{background-color:#262b3e;border-color:#262b3e;color:#363c4e}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.disabled-3u0ULovv-:hover{background-color:#f1f3f6;transition-duration:.06s}}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){html.theme-dark .disabled-3u0ULovv-:hover{background-color:#262b3e}}.disabled-3u0ULovv-:active{background-color:#f1f3f6;transition-duration:.06s}html.theme-dark .disabled-3u0ULovv-:active{background-color:#262b3e}.disabled-3u0ULovv-:active{transform:none}.rounded-3qEdyiAz-{border-radius:17px} \ No newline at end of file diff --git a/public/charting_library/static/bundles/34.17e0ce399a577f17ba55.js b/public/charting_library/static/bundles/34.17e0ce399a577f17ba55.js new file mode 100644 index 0000000..34f0a44 --- /dev/null +++ b/public/charting_library/static/bundles/34.17e0ce399a577f17ba55.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[34],[]]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/34.dd27b311326fd1fc6fde.css b/public/charting_library/static/bundles/34.dd27b311326fd1fc6fde.css new file mode 100644 index 0000000..d723cd8 --- /dev/null +++ b/public/charting_library/static/bundles/34.dd27b311326fd1fc6fde.css @@ -0,0 +1 @@ +.tv-search-row{width:100%;position:relative;cursor:default;display:flex;border-bottom:1px solid;border-bottom-color:#dadde0}html.theme-dark .tv-search-row{border-bottom-color:#363c4e}.tv-search-row__input{background-color:#fff;box-sizing:border-box;width:100%;padding:9px 50px 9px 60px;min-height:50px;height:50px;margin:0;border:none}html.theme-dark .tv-search-row__input{background-color:#1e222d}@media screen and (max-width:767px){.tv-search-row__input{min-height:34px;height:34px;padding-left:50px;padding-right:40px}.feature-mobiletouch .tv-search-row__input{min-height:50px;height:50px}}.tv-search-row--without-controls .tv-search-row__input{padding-right:30px;padding-left:30px}@media screen and (max-width:767px){.tv-search-row--without-controls .tv-search-row__input{padding-left:20px;padding-right:20px}}.tv-search-row__input-reset{top:0;right:16px;bottom:0;width:36px;position:absolute;text-align:center;opacity:.5;cursor:pointer;transition:opacity .35s ease}.tv-search-row__input-reset:after{content:"";display:inline-block;vertical-align:middle;height:100%}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-search-row__input-reset:hover{opacity:1;transition-duration:.06s}}.tv-search-row__input-reset svg{display:inline-block;fill:#4a4a4a;width:9px;height:9px;vertical-align:middle}html.theme-dark .tv-search-row__input-reset svg{fill:#c5cbce}@media screen and (max-width:767px){.tv-search-row__input-reset{right:10px}}.tv-search-row__search-icon{position:absolute;display:block;top:50%;left:30px;margin-top:-9px;opacity:.8;pointer-events:none;transition:opacity .35s ease}@media screen and (max-width:767px){.tv-search-row__search-icon{left:20px}}.tv-search-row__search-icon svg{display:block;fill:#adaeb0;width:18px;height:18px;overflow:visible}html.theme-dark .tv-search-row__search-icon svg{fill:#4f5966}.tv-search-row--without-controls .tv-search-row__input-reset,.tv-search-row--without-controls .tv-search-row__search-icon{display:none} \ No newline at end of file diff --git a/public/charting_library/static/bundles/34.dd27b311326fd1fc6fde.rtl.css b/public/charting_library/static/bundles/34.dd27b311326fd1fc6fde.rtl.css new file mode 100644 index 0000000..136b0ca --- /dev/null +++ b/public/charting_library/static/bundles/34.dd27b311326fd1fc6fde.rtl.css @@ -0,0 +1 @@ +.tv-search-row{width:100%;position:relative;cursor:default;display:flex;border-bottom:1px solid;border-bottom-color:#dadde0}html.theme-dark .tv-search-row{border-bottom-color:#363c4e}.tv-search-row__input{background-color:#fff;box-sizing:border-box;width:100%;padding:9px 60px 9px 50px;min-height:50px;height:50px;margin:0;border:none}html.theme-dark .tv-search-row__input{background-color:#1e222d}@media screen and (max-width:767px){.tv-search-row__input{min-height:34px;height:34px;padding-right:50px;padding-left:40px}.feature-mobiletouch .tv-search-row__input{min-height:50px;height:50px}}.tv-search-row--without-controls .tv-search-row__input{padding-left:30px;padding-right:30px}@media screen and (max-width:767px){.tv-search-row--without-controls .tv-search-row__input{padding-right:20px;padding-left:20px}}.tv-search-row__input-reset{top:0;left:16px;bottom:0;width:36px;position:absolute;text-align:center;opacity:.5;cursor:pointer;transition:opacity .35s ease}.tv-search-row__input-reset:after{content:"";display:inline-block;vertical-align:middle;height:100%}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.tv-search-row__input-reset:hover{opacity:1;transition-duration:.06s}}.tv-search-row__input-reset svg{display:inline-block;fill:#4a4a4a;width:9px;height:9px;vertical-align:middle}html.theme-dark .tv-search-row__input-reset svg{fill:#c5cbce}@media screen and (max-width:767px){.tv-search-row__input-reset{left:10px}}.tv-search-row__search-icon{position:absolute;display:block;top:50%;right:30px;margin-top:-9px;opacity:.8;pointer-events:none;transition:opacity .35s ease}@media screen and (max-width:767px){.tv-search-row__search-icon{right:20px}}.tv-search-row__search-icon svg{display:block;fill:#adaeb0;width:18px;height:18px;overflow:visible}html.theme-dark .tv-search-row__search-icon svg{fill:#4f5966}.tv-search-row--without-controls .tv-search-row__input-reset,.tv-search-row--without-controls .tv-search-row__search-icon{display:none} \ No newline at end of file diff --git a/public/charting_library/static/bundles/35.47b9d16b3fa10b495a11.css b/public/charting_library/static/bundles/35.47b9d16b3fa10b495a11.css new file mode 100644 index 0000000..343e562 --- /dev/null +++ b/public/charting_library/static/bundles/35.47b9d16b3fa10b495a11.css @@ -0,0 +1 @@ +.tv-tabbed-dialog{background-color:#fff;color:#4a4a4a}html.theme-dark .tv-tabbed-dialog{color:#c5cbce;background-color:#1e222d}.tv-tabbed-dialog__header{display:flex;position:relative;padding-top:0;padding-left:0;padding-bottom:0;border-bottom:none!important;margin-bottom:-1px;z-index:6}.tv-tabbed-dialog__bottom-border{position:absolute;left:0;right:0;bottom:0;height:1px;background-color:#dadde0;z-index:-1}html.theme-dark .tv-tabbed-dialog__bottom-border{background-color:#363c4e}.tv-tabbed-dialog__tab-page{height:100%;display:none}.tv-tabbed-dialog__tab-page.active{overflow-y:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar;display:block}.tv-tabbed-dialog__close{z-index:6;top:5px}.tv-tabbed-dialog__tabs{width:100%;flex-shrink:1;height:53px}.tv-tabbed-dialog__custom-controls{margin-left:10px;flex-shrink:0}.tv-tabbed-dialog__tabs-arrow-left:before,.tv-tabbed-dialog__tabs-arrow-right:before{content:"";position:absolute;bottom:1px;left:0;right:0;height:1px}.tv-tabbed-dialog__tabs-arrow-left:before{background:linear-gradient(90deg,#dadde0 0,#dadde0 85%,hsla(0,0%,100%,0))}.tv-tabbed-dialog__tabs-arrow-right:before{background:linear-gradient(270deg,#dadde0 0,#dadde0 85%,hsla(0,0%,100%,0))} \ No newline at end of file diff --git a/public/charting_library/static/bundles/35.47b9d16b3fa10b495a11.rtl.css b/public/charting_library/static/bundles/35.47b9d16b3fa10b495a11.rtl.css new file mode 100644 index 0000000..04972da --- /dev/null +++ b/public/charting_library/static/bundles/35.47b9d16b3fa10b495a11.rtl.css @@ -0,0 +1 @@ +.tv-tabbed-dialog{background-color:#fff;color:#4a4a4a}html.theme-dark .tv-tabbed-dialog{color:#c5cbce;background-color:#1e222d}.tv-tabbed-dialog__header{display:flex;position:relative;padding-top:0;padding-right:0;padding-bottom:0;border-bottom:none!important;margin-bottom:-1px;z-index:6}.tv-tabbed-dialog__bottom-border{position:absolute;right:0;left:0;bottom:0;height:1px;background-color:#dadde0;z-index:-1}html.theme-dark .tv-tabbed-dialog__bottom-border{background-color:#363c4e}.tv-tabbed-dialog__tab-page{height:100%;display:none}.tv-tabbed-dialog__tab-page.active{overflow-y:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar;display:block}.tv-tabbed-dialog__close{z-index:6;top:5px}.tv-tabbed-dialog__tabs{width:100%;flex-shrink:1;height:53px}.tv-tabbed-dialog__custom-controls{margin-right:10px;flex-shrink:0}.tv-tabbed-dialog__tabs-arrow-left:before,.tv-tabbed-dialog__tabs-arrow-right:before{content:"";position:absolute;bottom:1px;right:0;left:0;height:1px}.tv-tabbed-dialog__tabs-arrow-left:before{background:linear-gradient(270deg,#dadde0 0,#dadde0 85%,hsla(0,0%,100%,0))}.tv-tabbed-dialog__tabs-arrow-right:before{background:linear-gradient(90deg,#dadde0 0,#dadde0 85%,hsla(0,0%,100%,0))} \ No newline at end of file diff --git a/public/charting_library/static/bundles/35.58433cec10095e3c1b7e.js b/public/charting_library/static/bundles/35.58433cec10095e3c1b7e.js new file mode 100644 index 0000000..8cc7499 --- /dev/null +++ b/public/charting_library/static/bundles/35.58433cec10095e3c1b7e.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[35],[]]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/36.2ee80b40751fcc88a65c.js b/public/charting_library/static/bundles/36.2ee80b40751fcc88a65c.js new file mode 100644 index 0000000..5222a3a --- /dev/null +++ b/public/charting_library/static/bundles/36.2ee80b40751fcc88a65c.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[36],[]]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/36.e9a6bec06ee11d2c2d4a.css b/public/charting_library/static/bundles/36.e9a6bec06ee11d2c2d4a.css new file mode 100644 index 0000000..78806e4 --- /dev/null +++ b/public/charting_library/static/bundles/36.e9a6bec06ee11d2c2d4a.css @@ -0,0 +1 @@ +.tv-text-input{color:#4a4a4a;margin:0;border:1px solid;border-color:#dadde0;display:inline-block;overflow:hidden;width:100px;height:26px;vertical-align:top;padding:0 5px}html.theme-dark .tv-text-input{border-color:#363c4e;color:#c5cbce}.tv-text-input:focus{border-color:#2196f3}html.theme-dark .tv-text-input:focus{border-color:#1976d2}.tv-text-input.inset{background:#fff}html.theme-dark .tv-text-input.inset{background:#131722}.tv-text-input.ticker{height:25px;width:60px}.tv-text-input.ticker--longer-sign_8{width:72px}.tv-text-input.ticker--evenlonger{width:90px} \ No newline at end of file diff --git a/public/charting_library/static/bundles/36.e9a6bec06ee11d2c2d4a.rtl.css b/public/charting_library/static/bundles/36.e9a6bec06ee11d2c2d4a.rtl.css new file mode 100644 index 0000000..72a7a5e --- /dev/null +++ b/public/charting_library/static/bundles/36.e9a6bec06ee11d2c2d4a.rtl.css @@ -0,0 +1 @@ +.tv-text-input{color:#4a4a4a;margin:0;border:1px solid;border-color:#dadde0;display:inline-block;overflow:hidden;width:100px;height:26px;vertical-align:top;padding:0 5px;direction:ltr;text-align:right}html.theme-dark .tv-text-input{border-color:#363c4e;color:#c5cbce}.tv-text-input:focus{border-color:#2196f3}html.theme-dark .tv-text-input:focus{border-color:#1976d2}.tv-text-input.inset{background:#fff}html.theme-dark .tv-text-input.inset{background:#131722}.tv-text-input.ticker{height:25px;width:60px}.tv-text-input.ticker--longer-sign_8{width:72px}.tv-text-input.ticker--evenlonger{width:90px} \ No newline at end of file diff --git a/public/charting_library/static/bundles/37.065a5f2249aafcfe50ec.css b/public/charting_library/static/bundles/37.065a5f2249aafcfe50ec.css new file mode 100644 index 0000000..d500f6c --- /dev/null +++ b/public/charting_library/static/bundles/37.065a5f2249aafcfe50ec.css @@ -0,0 +1 @@ +.star-uhAI7sV4-{display:block;opacity:.7;box-sizing:border-box;transition:opacity .35s ease;padding:4px;margin:-4px}.star-uhAI7sV4- svg{display:block;fill:currentColor;pointer-events:none}.star-uhAI7sV4-.checked-2bhy04CF- svg{fill:#ffca3b}.star-uhAI7sV4-:active{opacity:1;transition-duration:60ms}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.star-uhAI7sV4-:hover{opacity:1;transition-duration:60ms}} \ No newline at end of file diff --git a/public/charting_library/static/bundles/37.065a5f2249aafcfe50ec.rtl.css b/public/charting_library/static/bundles/37.065a5f2249aafcfe50ec.rtl.css new file mode 100644 index 0000000..d500f6c --- /dev/null +++ b/public/charting_library/static/bundles/37.065a5f2249aafcfe50ec.rtl.css @@ -0,0 +1 @@ +.star-uhAI7sV4-{display:block;opacity:.7;box-sizing:border-box;transition:opacity .35s ease;padding:4px;margin:-4px}.star-uhAI7sV4- svg{display:block;fill:currentColor;pointer-events:none}.star-uhAI7sV4-.checked-2bhy04CF- svg{fill:#ffca3b}.star-uhAI7sV4-:active{opacity:1;transition-duration:60ms}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.star-uhAI7sV4-:hover{opacity:1;transition-duration:60ms}} \ No newline at end of file diff --git a/public/charting_library/static/bundles/37.1735365b01406a8d696d.js b/public/charting_library/static/bundles/37.1735365b01406a8d696d.js new file mode 100644 index 0000000..7f6fcf6 --- /dev/null +++ b/public/charting_library/static/bundles/37.1735365b01406a8d696d.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[37],[]]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/38.4073381c29c4e2bc2209.css b/public/charting_library/static/bundles/38.4073381c29c4e2bc2209.css new file mode 100644 index 0000000..b6244f2 --- /dev/null +++ b/public/charting_library/static/bundles/38.4073381c29c4e2bc2209.css @@ -0,0 +1 @@ +.wrap-5DN0XnS4-{position:relative;direction:ltr;width:100%;height:100%;overflow:hidden}.wrap-5DN0XnS4- svg{display:block}.wrapWithArrowsOuting-1OPNi0IP-{width:calc(100% - 40px);margin-left:auto;margin-right:auto;overflow:visible}.wrapOverflow-2FHnhKaN-{overflow:hidden;width:100%}.scrollWrap-nAnkzkWd-{position:relative;width:100%;height:100%;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}.scrollWrap-nAnkzkWd-::-webkit-scrollbar{width:5px;height:5px}.scrollWrap-nAnkzkWd-::-webkit-scrollbar-thumb{border:1px solid;border-color:#f1f3f6;border-radius:3px;background-color:#9db2bd}html.theme-dark .scrollWrap-nAnkzkWd-::-webkit-scrollbar-thumb{background-color:#363c4e;border-color:#1c2030}.scrollWrap-nAnkzkWd-::-webkit-scrollbar-track{background-color:transparent;border-radius:3px}.scrollWrap-nAnkzkWd-.noScrollBar-34JzryqI-{padding-bottom:100px;margin-bottom:-100px;-ms-overflow-style:none}.scrollWrap-nAnkzkWd-.noScrollBar-34JzryqI-.sb-scrollbar-wrap{display:none}.scrollWrap-nAnkzkWd-.noScrollBar-34JzryqI-::-webkit-scrollbar{display:none;width:0;height:0}.scrollWrap-nAnkzkWd-.noScrollBar-34JzryqI-::-webkit-scrollbar-thumb,.scrollWrap-nAnkzkWd-.noScrollBar-34JzryqI-::-webkit-scrollbar-track{display:none}.icon-1nfNqIRh-{display:block;transition:transform 60ms ease}.scrollLeft-2cl_k1e7-,.scrollRight-2SEqCpTf-{display:flex;position:absolute;top:0;height:100%;width:24px;background-color:rgba(38,43,62,.7);color:#fff;transition:background-color .35s ease,transform .11666667s cubic-bezier(.55,.055,.675,.19);flex-direction:column;justify-content:center;align-items:center}.scrollLeft-2cl_k1e7-:active,.scrollRight-2SEqCpTf-:active{transition:background-color 58.33333ms ease,transform .11666667s cubic-bezier(.215,.61,.355,1)}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.scrollLeft-2cl_k1e7-:hover,.scrollRight-2SEqCpTf-:hover{transition:background-color 58.33333ms ease,transform .11666667s cubic-bezier(.215,.61,.355,1)}}.scrollLeft-2cl_k1e7-:active .icon-1nfNqIRh-,.scrollRight-2SEqCpTf-:active .icon-1nfNqIRh-{transform:translateY(1px)}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.scrollLeft-2cl_k1e7-:hover .icon-1nfNqIRh-,.scrollRight-2SEqCpTf-:hover .icon-1nfNqIRh-{transform:translateY(1px)}}.scrollLeft-2cl_k1e7-.isVisible-Stm3XOHb-,.scrollRight-2SEqCpTf-.isVisible-Stm3XOHb-{transform:translateX(0);transition-timing-function:cubic-bezier(.215,.61,.355,1)}.scrollLeft-2cl_k1e7-{left:0;transform:translateX(-100%)}.scrollLeft-2cl_k1e7- .iconWrap-1E4GEP7h-{transform:rotate(90deg)}.scrollRight-2SEqCpTf-{right:0;transform:translateX(100%)}.scrollRight-2SEqCpTf- .iconWrap-1E4GEP7h-{transform:rotate(-90deg)}.fadeLeft-244lj3pA-,.fadeRight-1JnS42hI-{position:absolute;pointer-events:none;width:50px;height:100%;top:0}.fadeLeft-244lj3pA-.isVisible-Stm3XOHb-,.fadeRight-1JnS42hI-.isVisible-Stm3XOHb-{transform:translateX(0);transition-timing-function:cubic-bezier(.215,.61,.355,1)}.fadeLeft-244lj3pA-{left:0;background-image:linear-gradient(270deg,hsla(0,0%,100%,0),#fff);transform:translateX(-100%)}html.theme-dark .fadeLeft-244lj3pA-{background-image:linear-gradient(270deg,rgba(19,23,34,0),#131722)}.fadeRight-1JnS42hI-{right:0;background-image:linear-gradient(90deg,hsla(0,0%,100%,0),#fff);transform:translateX(100%)}html.theme-dark .fadeRight-1JnS42hI-{background-image:linear-gradient(90deg,rgba(19,23,34,0),#131722)} \ No newline at end of file diff --git a/public/charting_library/static/bundles/38.4073381c29c4e2bc2209.rtl.css b/public/charting_library/static/bundles/38.4073381c29c4e2bc2209.rtl.css new file mode 100644 index 0000000..43d285f --- /dev/null +++ b/public/charting_library/static/bundles/38.4073381c29c4e2bc2209.rtl.css @@ -0,0 +1 @@ +.wrap-5DN0XnS4-{position:relative;direction:rtl;width:100%;height:100%;overflow:hidden}.wrap-5DN0XnS4- svg{display:block}.wrapWithArrowsOuting-1OPNi0IP-{width:calc(100% - 40px);margin-right:auto;margin-left:auto;overflow:visible}.wrapOverflow-2FHnhKaN-{overflow:hidden;width:100%}.scrollWrap-nAnkzkWd-{position:relative;width:100%;height:100%;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}.scrollWrap-nAnkzkWd-::-webkit-scrollbar{width:5px;height:5px}.scrollWrap-nAnkzkWd-::-webkit-scrollbar-thumb{border:1px solid;border-color:#f1f3f6;border-radius:3px;background-color:#9db2bd}html.theme-dark .scrollWrap-nAnkzkWd-::-webkit-scrollbar-thumb{background-color:#363c4e;border-color:#1c2030}.scrollWrap-nAnkzkWd-::-webkit-scrollbar-track{background-color:transparent;border-radius:3px}.scrollWrap-nAnkzkWd-.noScrollBar-34JzryqI-{padding-bottom:100px;margin-bottom:-100px;-ms-overflow-style:none}.scrollWrap-nAnkzkWd-.noScrollBar-34JzryqI-.sb-scrollbar-wrap{display:none}.scrollWrap-nAnkzkWd-.noScrollBar-34JzryqI-::-webkit-scrollbar{display:none;width:0;height:0}.scrollWrap-nAnkzkWd-.noScrollBar-34JzryqI-::-webkit-scrollbar-thumb,.scrollWrap-nAnkzkWd-.noScrollBar-34JzryqI-::-webkit-scrollbar-track{display:none}.icon-1nfNqIRh-{display:block;transition:transform 60ms ease}.scrollLeft-2cl_k1e7-,.scrollRight-2SEqCpTf-{display:flex;position:absolute;top:0;height:100%;width:24px;background-color:rgba(38,43,62,.7);color:#fff;transition:background-color .35s ease,transform .11666667s cubic-bezier(.55,.055,.675,.19);flex-direction:column;justify-content:center;align-items:center}.scrollLeft-2cl_k1e7-:active,.scrollRight-2SEqCpTf-:active{transition:background-color 58.33333ms ease,transform .11666667s cubic-bezier(.215,.61,.355,1)}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.scrollLeft-2cl_k1e7-:hover,.scrollRight-2SEqCpTf-:hover{transition:background-color 58.33333ms ease,transform .11666667s cubic-bezier(.215,.61,.355,1)}}.scrollLeft-2cl_k1e7-:active .icon-1nfNqIRh-,.scrollRight-2SEqCpTf-:active .icon-1nfNqIRh-{transform:translateY(1px)}@media (any-hover:hover),(min--moz-device-pixel-ratio:0),(min-width:0\0){.scrollLeft-2cl_k1e7-:hover .icon-1nfNqIRh-,.scrollRight-2SEqCpTf-:hover .icon-1nfNqIRh-{transform:translateY(1px)}}.scrollLeft-2cl_k1e7-.isVisible-Stm3XOHb-,.scrollRight-2SEqCpTf-.isVisible-Stm3XOHb-{transform:translateX(0);transition-timing-function:cubic-bezier(.215,.61,.355,1)}.scrollLeft-2cl_k1e7-{left:0;transform:translateX(-100%)}.scrollLeft-2cl_k1e7- .iconWrap-1E4GEP7h-{transform:rotate(90deg)}.scrollRight-2SEqCpTf-{right:0;transform:translateX(100%)}.scrollRight-2SEqCpTf- .iconWrap-1E4GEP7h-{transform:rotate(-90deg)}.fadeLeft-244lj3pA-,.fadeRight-1JnS42hI-{position:absolute;pointer-events:none;width:50px;height:100%;top:0}.fadeLeft-244lj3pA-.isVisible-Stm3XOHb-,.fadeRight-1JnS42hI-.isVisible-Stm3XOHb-{transform:translateX(0);transition-timing-function:cubic-bezier(.215,.61,.355,1)}.fadeLeft-244lj3pA-{right:0;background-image:linear-gradient(90deg,hsla(0,0%,100%,0),#fff);transform:translateX(100%)}html.theme-dark .fadeLeft-244lj3pA-{background-image:linear-gradient(90deg,rgba(19,23,34,0),#131722)}.fadeRight-1JnS42hI-{left:0;background-image:linear-gradient(270deg,hsla(0,0%,100%,0),#fff);transform:translateX(-100%)}html.theme-dark .fadeRight-1JnS42hI-{background-image:linear-gradient(270deg,rgba(19,23,34,0),#131722)} \ No newline at end of file diff --git a/public/charting_library/static/bundles/38.9ae2eea9402c30aa3046.js b/public/charting_library/static/bundles/38.9ae2eea9402c30aa3046.js new file mode 100644 index 0000000..2bf9df0 --- /dev/null +++ b/public/charting_library/static/bundles/38.9ae2eea9402c30aa3046.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[38],[]]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/39.5f64b4bc2e263edfbf6e.css b/public/charting_library/static/bundles/39.5f64b4bc2e263edfbf6e.css new file mode 100644 index 0000000..3efdd28 --- /dev/null +++ b/public/charting_library/static/bundles/39.5f64b4bc2e263edfbf6e.css @@ -0,0 +1 @@ +.tabs-1LGqoVz6-{display:flex;position:relative;width:100%}.tab-1Yr0rq0J-{flex:1 1;padding:13px 0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-align:center;border-bottom:1px solid;border-color:#e1ecf2;transition:color .35s ease;color:#131722}html.theme-dark .tab-1Yr0rq0J-{color:#b2b5be;border-color:#363c4e}.tab-1Yr0rq0J-.noBorder-oc3HwerO-{border-bottom:0}.tab-1Yr0rq0J-.disabled-s8cEYElA-{color:#eceff2}.tab-1Yr0rq0J-.active-37sipdzm-{color:#2196f3}html.theme-dark .tab-1Yr0rq0J-.active-37sipdzm-{color:#1976d2}.defaultCursor-Np9BHjTg-{cursor:default}.slider-1-X4lOmE-{position:absolute;bottom:0;left:0;height:3px;background-color:#2196f3;transition-timing-function:cubic-bezier(.215,.61,.355,1)}html.theme-dark .slider-1-X4lOmE-{background-color:#1976d2}.content-2asssfGq-{width:100%} \ No newline at end of file diff --git a/public/charting_library/static/bundles/39.5f64b4bc2e263edfbf6e.rtl.css b/public/charting_library/static/bundles/39.5f64b4bc2e263edfbf6e.rtl.css new file mode 100644 index 0000000..3efdd28 --- /dev/null +++ b/public/charting_library/static/bundles/39.5f64b4bc2e263edfbf6e.rtl.css @@ -0,0 +1 @@ +.tabs-1LGqoVz6-{display:flex;position:relative;width:100%}.tab-1Yr0rq0J-{flex:1 1;padding:13px 0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-align:center;border-bottom:1px solid;border-color:#e1ecf2;transition:color .35s ease;color:#131722}html.theme-dark .tab-1Yr0rq0J-{color:#b2b5be;border-color:#363c4e}.tab-1Yr0rq0J-.noBorder-oc3HwerO-{border-bottom:0}.tab-1Yr0rq0J-.disabled-s8cEYElA-{color:#eceff2}.tab-1Yr0rq0J-.active-37sipdzm-{color:#2196f3}html.theme-dark .tab-1Yr0rq0J-.active-37sipdzm-{color:#1976d2}.defaultCursor-Np9BHjTg-{cursor:default}.slider-1-X4lOmE-{position:absolute;bottom:0;left:0;height:3px;background-color:#2196f3;transition-timing-function:cubic-bezier(.215,.61,.355,1)}html.theme-dark .slider-1-X4lOmE-{background-color:#1976d2}.content-2asssfGq-{width:100%} \ No newline at end of file diff --git a/public/charting_library/static/bundles/39.7e524b82ef9947f0f19f.js b/public/charting_library/static/bundles/39.7e524b82ef9947f0f19f.js new file mode 100644 index 0000000..bcd80d7 --- /dev/null +++ b/public/charting_library/static/bundles/39.7e524b82ef9947f0f19f.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[39],[]]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/4.80bf1a925965757be6d4.js b/public/charting_library/static/bundles/4.80bf1a925965757be6d4.js new file mode 100644 index 0000000..9261d87 --- /dev/null +++ b/public/charting_library/static/bundles/4.80bf1a925965757be6d4.js @@ -0,0 +1,4 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[4],{"56W2":function(e,t,s){(function(t){var s;s=void 0!==t?t:this,e.exports=function(e){if(e.CSS&&e.CSS.escape)return e.CSS.escape;var t=function(e){var t,s,n,i,o,l;if(0==arguments.length)throw new TypeError("`CSS.escape` requires an argument.");for(t=String(e),s=t.length,n=-1,o="",l=t.charCodeAt(0);++n=1&&i<=31||127==i||0==n&&i>=48&&i<=57||1==n&&i>=48&&i<=57&&45==l?"\\"+i.toString(16)+" ":0==n&&1==s&&45==i||!(i>=128||45==i||95==i||i>=48&&i<=57||i>=65&&i<=90||i>=97&&i<=122)?"\\"+t.charAt(n):t.charAt(n):o+="�";return o};return e.CSS||(e.CSS={}),e.CSS.escape=t,t}(s)}).call(this,s("yLpj"))},Gs9W:function(e,t,s){},jgM0:function(e,t,s){"use strict";var n=s("56W2");s("Gs9W"),function(e,t){function s(){this._state=[],this._defaults={classHolder:"sbHolder",classHolderDisabled:"sbHolderDisabled",classHolderOpen:"sbHolderOpen",classSelector:"sbSelector",classOptions:"sbOptions",classGroup:"sbGroup",classSub:"sbSub",classDisabled:"sbDisabled",classToggleOpen:"sbToggleOpen",classToggle:"sbToggle",classSeparator:"sbSeparator",useCustomPrependWithSelector:"",customPrependSelectorClass:"",speed:200,slidesUp:!1,effect:"slide",onChange:null,beforeOpen:null,onOpen:null,onClose:null}}function i(t,s,n,i){function o(){s.removeClass(t.settings.customPrependSelectorClass),t._lastSelectorPrepend&&(t._lastSelectorPrepend.remove(),delete t._lastSelectorPrepend),n.data("custom-option-prepend")&&(t.settings.customPrependSelectorClass&&s.addClass(t.settings.customPrependSelectorClass),t._lastSelectorPrepend=e(n.data("custom-option-prepend")).clone(),s[t.settings.useCustomPrependWithSelector](t._lastSelectorPrepend))}t.settings.useCustomPrependWithSelector&&(i?t._onAttachCallback=o:o())}e.extend(s.prototype,{_refreshSelectbox:function(e,t){if(!e)return!1;var s=this._getInst(e);return null!=s&&(this._fillList(e,s,t),!0)},_isOpenSelectbox:function(e){return!!e&&this._getInst(e).isOpen},_isDisabledSelectbox:function(e){return!!e&&this._getInst(e).isDisabled},_attachSelectbox:function(t,s){function i(){var t,s=this.attr("id").split("_")[1];for(t in a._state)t!==s&&a._state.hasOwnProperty(t)&&e(":input[sb='"+t+"']")[0]&&a._closeSelectbox(e(":input[sb='"+t+"']")[0])}function o(s){l.children().each(function(n){var i;if(e(this).is(":selected")){if(38==s&&n>0)return i=e(l.children()[n-1]),a._changeSelectbox(t,i.val(),i.text()),!1;if(40==s&&n",{id:"sbHolder_"+c.uid,class:c.settings.classHolder}),(b=l.data("selectbox-css"))&&d.css(b),r=e("",{id:"sbSelector_"+c.uid,href:"#",class:c.settings.classSelector,click:function(s){s.preventDefault(),s.stopPropagation(),i.apply(e(this),[]);var n=e(this).attr("id").split("_")[1] +;a._state[n]?a._closeSelectbox(t):(a._openSelectbox(t),p.focus())},keyup:function(e){o(e.keyCode)}}),p=e("",{id:"sbToggle_"+c.uid,href:"#",class:c.settings.classToggle,click:function(s){s.preventDefault(),s.stopPropagation(),i.apply(e(this),[]);var n=e(this).attr("id").split("_")[1];a._state[n]?a._closeSelectbox(t):(a._openSelectbox(t),p.focus())},keyup:function(e){o(e.keyCode)}}),e('
').appendTo(p),p.appendTo(d),u=e("
").appendTo(t),i=$("").appendTo(this._table),$('").appendTo(this._table),$('").appendTo(this._table),$("
"),$("
").appendTo(e);return $('').appendTo(i)},r.prototype._labelToId=function(t){return"control"+t.replace(/(^| )\w/g,function(t){return"-"+t.trim().toLowerCase()})+Math.floor(1e3*Math.random())},r.prototype.addRow=function(t){return $(document.createElement("tr")).appendTo(t)},r.prototype.addLabeledRow=function(t,e,i,r){var n,s=e&&e.length>0?$.t(e):"",a=$(document.createElement("tr")),l=$(document.createElement("td")).html(s);return r&&(r=parseInt(r),V(r)&&(r=2),l.attr("colspan",r)),i&&(n=this._labelToId(e),i.attr("id",n),l.html(o(s,n))),a.append(l).appendTo(t)},r.prototype.addEditorRow=function(t,e,i,o){var r=$(document.createElement("td"));return i.row=this.addLabeledRow(t,e,i,o),i.appendTo(r.appendTo(i.row)),i},r.prototype.addColorPickerRow=function(t,e){return this.addEditorRow(t,e,this.createColorPicker())},r.prototype.addOffsetEditorRow=function(t,e){var i=$("");return i.attr("type","text"),i.css("width","100px"),i.addClass("ticker"),this.addEditorRow(t,e,i)},r.prototype.addFontEditorRow=function(t,e){return this.addEditorRow(t,e,this.createFontEditor())},r.prototype.refreshStateControls=function(t,e,i){var o,r,n;for(o=0;o0&&(i=e[0],this._control.selectbox("change",i.value,i.text))}catch(t){}},f.prototype.propertyChanged=function(t){var e=t.value();"function"==typeof this._propertyChangedHook&&(e=this._propertyChangedHook(e)),this.setValue(e)},inherit(v,H),v.prototype.value=function(){return this._property.value()},v.prototype.setValue=function(t){return this._control.html(t) +},inherit(g,H),g.prototype.value=function(){return this.control().is(":checked")},g.prototype.setValue=function(t){var e,i,o,r;return this.control().is(".visibility-checker")&&(t?(this.control().closest("tr").find(".slider-range").slider("enable"),this.control().closest("tr").find('input[type="text"]').each(function(){$(this).prop("disabled",!1)})):(this.control().closest("tr").find(".slider-range").slider("disable"),this.control().closest("tr").find('input[type="text"]').each(function(){$(this).prop("disabled",!0)}))),this.control().is(".visibility-switch")&&(e={opacity:t?1:.5},i=t?"enable":"disable",(o=this.control().data("hides"))?o.closest("td").css(e):(r=this.control()).parent().parent().data("visible",t).find("td").filter(function(){var t=$(this);return!t.find("label").length&&t.find(":checkbox").attr("id")!==r.attr("id")}).each(function(){var o=$(this),r=o.children();r.each(function(){var r=$(this);r.is(".ui-slider")?r.slider(i):r.is("select")?(r.selectbox(i),o.css(e)):r.is(".custom-select")?(r.data(i)(),o.css(e)):r.is(".tvcolorpicker-container")?(r.find("input").prop("disabled",!t),o.css(e)):(r.prop("disabled",!t),o.css(e))})})),this.control().attr("checked",!!t)},g.prototype.destroy=function(){H.prototype.destroy.call(this),this._control.off("change")},inherit(_,H),_.prototype.value=function(){return this.control().is(":disabled")},_.prototype.setValue=function(t){return t=Boolean(t),this._inverted&&(t=!t),this.control().parents("label").toggleClass("disabled",t),this.control().attr("disabled",t)},inherit(m,H),m.prototype.value=function(){return this.control().hasClass("active")},m.prototype.setValue=function(t){return this.control().toggleClass("active",!!t)},inherit(b,H),b.prototype.applyOldTransparency=function(){var t,e,i;this.transparencyProperty()&&(R.isHexColor(this.property().value())?(t=this.transparencyProperty().value?this.transparencyProperty().value():this.transparencyProperty(),e=O(this.property().value()),i=(100-t)/100,this.control().val(P(E(e,i)))):this.control().val(this.property().value()),this.control().change())},b.prototype.transparencyProperty=function(){return this._transparencyProperty},b.prototype.value=function(){return this._control.val()},b.prototype.setValue=function(t){this._control.val(t),this._control.change(),this._control.color&&this._control.color.fromString(t)},inherit(y,H),y.prototype.value=function(){return this._control.slider("option","value")},y.prototype.setValue=function(t){this._control.slider("option","value",t)},C.prototype._attachToControl=function(t){var e=this;this._wv.subscribe(this._setValueBinded,{callWithLast:!0}),$(this._control).on("change",function(){e.setValueToProperty(e.value())})},C.prototype.control=function(){return this._control},C.prototype.value=function(){var t=$(this._control).val();return this._transformFunction&&(t=this._transformFunction(t)),t},C.prototype.setValue=function(t){$(this._control).val(t)},C.prototype.setValueToProperty=function(t){this._undoModel.undoHistory.setWatchedValue(this._wv,t,this._undoText)}, +C.prototype.watchedValue=function(){return this._wv},C.prototype.destroy=function(){this._wv.unsubscribe(this._setValueBinded)},inherit(T,C),T.prototype._attachToControl=function(t){var e=this;this._wv.subscribe(this.setValue.bind(this),{callWithLast:!0}),$(this._control).on("click",function(){e.setValueToProperty(e.value())})},T.prototype.value=function(){var t=$(this._control).attr("checked");return this._not&&(t=!t),this._transformFunction&&(t=this._transformFunction(t)),t},T.prototype.setValue=function(t){this._not&&(t=!t),$(this._control).attr("checked",!!t)},k.prototype.properties=function(){return this._properties},k.prototype.value=function(t){return this._control.slider("values",t)},k.prototype.setValue=function(t,e){void 0===e&&(t===this._propFrom&&(e=0),t===this._propTo&&(e=1)),this._control.slider("values",e,t.value()),this._inputsText&&$(this._inputsText[e]).val(t.value())},k.prototype.propertyChanged=function(t){this.setValue(t)},k.prototype.setValueToProperty=function(t,e){($(e).hasClass("from")||"from"===e)&&(this._undoModel.beginUndoMacro(this._undoText[0]),this._undoModel.setProperty(this._propFrom,t[0],this._undoText[0]),this._propFrom.setValue(t[0],0),this._undoModel.endUndoMacro()),($(e).hasClass("to")||"to"===e)&&(this._undoModel.beginUndoMacro(this._undoText[1]),this._undoModel.setProperty(this._propTo,t[1],this._undoText[1]),this._propTo.setValue(t[1],1),this._undoModel.endUndoMacro())},k.prototype.destroy=function(){this._propFrom&&this._propTo&&(this._propFrom.listeners().unsubscribe(this,H.prototype.propertyChanged),this._propTo.listeners().unsubscribe(this,H.prototype.propertyChanged))},inherit(w,H),w.prototype.value=function(){var t=[];return this._control.each(function(){var e=$(this);e.is(":checked")&&t.push(e.attr("value"))}),t.join(this._separator)},w.prototype.setValue=function(t){var e=t.split(this._separator).filter(Boolean);this._control.each(function(){var t=$(this),i=-1!==e.indexOf(t.attr("value"));t.attr("checked",i),t.parents("label").toggleClass("active",i)})},e.PropertyPage=r,e.UppercaseTransformer=function(t){return t.toUpperCase()},e.GreateTransformer=n,e.LessTransformer=s,e.ToIntTransformer=a,e.ToFloatTransformer=l,e.ToFloatTransformerWithDynamicDefaultValue=function(t){var e=new I;return function(i){var o=e.parse(i);return V(o)?t():o}},e.ToFloatLimitedPrecisionTransformer=function(t,e){var i=new D(e);return function(e){var o=i.format(e);return V(o)?t:o}},e.ToAsciiTransformer=function(){return function(t){for(var e=t,i=t.replace(/[^\u0000-\u007F]/,"");i.length!==e.length;)i=(e=i).replace(/[^\u0000-\u007F]/,"");return i}},e.ReplaceEmptyTransformer=function(t){return function(e){return 0===e.length?t:e}},e.SymbolInfoSymbolTransformer=function(t,e){return function(i){var o=t();return i===e.value()&&o&&(o.ticker||o.full_name)?o.ticker||o.full_name:i}},e.SimpleStringBinder=c,e.FloatBinder=u,e.SessionBinder=h,e.BarTimeBinder=p,e.SymbolBinder=d,e.SimpleComboBinder=f,e.StaticContentBinder=v,e.BooleanBinder=g,e.DisabledBinder=_,e.ColorBinding=b,e.SliderBinder=y, +e.CheckboxWVBinding=T,e.RangeBinder=k,e.generateLabelElementStr=o}).call(this,i("tc+8"))},QBwY:function(t,e,i){var o,r,n;r=[i("P5fv"),i("iGnl"),i("vBzC"),i("Qwlt"),i("MIQu")],void 0===(n="function"==typeof(o=function(t){return t.widget("ui.slider",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"slide",options:{animate:!1,classes:{"ui-slider":"ui-corner-all","ui-slider-handle":"ui-corner-all","ui-slider-range":"ui-corner-all ui-widget-header"},distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this._addClass("ui-slider ui-slider-"+this.orientation,"ui-widget ui-widget-content"),this._refresh(),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var e,i,o=this.options,r=this.element.find(".ui-slider-handle"),n=[];for(i=o.values&&o.values.length||1,r.length>i&&(r.slice(i).remove(),r=r.slice(0,i)),e=r.length;e");this.handles=r.add(t(n.join("")).appendTo(this.element)),this._addClass(this.handles,"ui-slider-handle","ui-state-default"),this.handle=this.handles.eq(0),this.handles.each(function(e){t(this).data("ui-slider-handle-index",e).attr("tabIndex",0)})},_createRange:function(){var e=this.options;e.range?(!0===e.range&&(e.values?e.values.length&&2!==e.values.length?e.values=[e.values[0],e.values[0]]:t.isArray(e.values)&&(e.values=e.values.slice(0)):e.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?(this._removeClass(this.range,"ui-slider-range-min ui-slider-range-max"),this.range.css({left:"",bottom:""})):(this.range=t("
").appendTo(this.element),this._addClass(this.range,"ui-slider-range")),"min"!==e.range&&"max"!==e.range||this._addClass(this.range,"ui-slider-range-"+e.range)):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this._mouseDestroy()},_mouseCapture:function(e){var i,o,r,n,s,a,l,c=this,u=this.options;return!u.disabled&&(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),i={x:e.pageX,y:e.pageY},o=this._normValueFromMouse(i),r=this._valueMax()-this._valueMin()+1,this.handles.each(function(e){var i=Math.abs(o-c.values(e));(r>i||r===i&&(e===c._lastChangedValue||c.values(e)===u.min))&&(r=i,n=t(this),s=e)}),!1!==this._start(e,s)&&(this._mouseSliding=!0,this._handleIndex=s,this._addClass(n,null,"ui-state-active"),n.trigger("focus"),a=n.offset(),l=!t(e.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=l?{left:0,top:0}:{left:e.pageX-a.left-n.width()/2, +top:e.pageY-a.top-n.height()/2-(parseInt(n.css("borderTopWidth"),10)||0)-(parseInt(n.css("borderBottomWidth"),10)||0)+(parseInt(n.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(e,s,o),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(t){var e={x:t.pageX,y:t.pageY},i=this._normValueFromMouse(e);return this._slide(t,this._handleIndex,i),!1},_mouseStop:function(t){return this._removeClass(this.handles,null,"ui-state-active"),this._mouseSliding=!1,this._stop(t,this._handleIndex),this._change(t,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(t){var e,i,o,r,n;return"horizontal"===this.orientation?(e=this.elementSize.width,i=t.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(e=this.elementSize.height,i=t.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),(o=i/e)>1&&(o=1),o<0&&(o=0),"vertical"===this.orientation&&(o=1-o),r=this._valueMax()-this._valueMin(),n=this._valueMin()+o*r,this._trimAlignValue(n)},_uiHash:function(t,e,i){var o={handle:this.handles[t],handleIndex:t,value:void 0!==e?e:this.value()};return this._hasMultipleValues()&&(o.value=void 0!==e?e:this.values(t),o.values=i||this.values()),o},_hasMultipleValues:function(){return this.options.values&&this.options.values.length},_start:function(t,e){return this._trigger("start",t,this._uiHash(e))},_slide:function(t,e,i){var o,r=this.value(),n=this.values();this._hasMultipleValues()&&(o=this.values(e?0:1),r=this.values(e),2===this.options.values.length&&!0===this.options.range&&(i=0===e?Math.min(o,i):Math.max(o,i)),n[e]=i),i!==r&&!1!==this._trigger("slide",t,this._uiHash(e,i,n))&&(this._hasMultipleValues()?this.values(e,i):this.value(i))},_stop:function(t,e){this._trigger("stop",t,this._uiHash(e))},_change:function(t,e){this._keySliding||this._mouseSliding||(this._lastChangedValue=e,this._trigger("change",t,this._uiHash(e)))},value:function(t){return arguments.length?(this.options.value=this._trimAlignValue(t),this._refreshValue(),void this._change(null,0)):this._value()},values:function(e,i){var o,r,n;if(arguments.length>1)return this.options.values[e]=this._trimAlignValue(i),this._refreshValue(),void this._change(null,e);if(!arguments.length)return this._values();if(!t.isArray(arguments[0]))return this._hasMultipleValues()?this._values(e):this.value();for(o=this.options.values,r=arguments[0],n=0;n=0;o--)this._change(null,o);this._animateOff=!1;break;case"step":case"min":case"max":this._animateOff=!0,this._calculateNewMax(),this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_setOptionDisabled:function(t){this._super(t),this._toggleClass(null,"ui-state-disabled",!!t)},_value:function(){var t=this.options.value;return t=this._trimAlignValue(t)},_values:function(t){var e,i,o;if(arguments.length)return e=this.options.values[t],e=this._trimAlignValue(e);if(this._hasMultipleValues()){for(i=this.options.values.slice(),o=0;o=this._valueMax())return this._valueMax();var e=this.options.step>0?this.options.step:1,i=(t-this._valueMin())%e,o=t-i;return 2*Math.abs(i)>=e&&(o+=i>0?e:-e),parseFloat(o.toFixed(5))},_calculateNewMax:function(){var t=this.options.max,e=this._valueMin(),i=this.options.step,o=Math.round((t-e)/i)*i;(t=o+e)>this.options.max&&(t-=i),this.max=parseFloat(t.toFixed(this._precision()))},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=t.toString(),i=e.indexOf(".");return-1===i?0:e.length-i-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshRange:function(t){"vertical"===t&&this.range.css({width:"",left:""}),"horizontal"===t&&this.range.css({height:"",bottom:""})},_refreshValue:function(){var e,i,o,r,n,s=this.options.range,a=this.options,l=this,c=!this._animateOff&&a.animate,u={};this._hasMultipleValues()?this.handles.each(function(o){i=(l.values(o)-l._valueMin())/(l._valueMax()-l._valueMin())*100,u["horizontal"===l.orientation?"left":"bottom"]=i+"%",t(this).stop(1,1)[c?"animate":"css"](u,a.animate),!0===l.options.range&&("horizontal"===l.orientation?(0===o&&l.range.stop(1,1)[c?"animate":"css"]({left:i+"%"},a.animate),1===o&&l.range[c?"animate":"css"]({width:i-e+"%"},{queue:!1,duration:a.animate})):(0===o&&l.range.stop(1,1)[c?"animate":"css"]({bottom:i+"%"},a.animate),1===o&&l.range[c?"animate":"css"]({height:i-e+"%"},{queue:!1,duration:a.animate}))),e=i}):(o=this.value(),r=this._valueMin(),n=this._valueMax(),i=n!==r?(o-r)/(n-r)*100:0,u["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[c?"animate":"css"](u,a.animate),"min"===s&&"horizontal"===this.orientation&&this.range.stop(1,1)[c?"animate":"css"]({width:i+"%"},a.animate),"max"===s&&"horizontal"===this.orientation&&this.range.stop(1,1)[c?"animate":"css"]({ +width:100-i+"%"},a.animate),"min"===s&&"vertical"===this.orientation&&this.range.stop(1,1)[c?"animate":"css"]({height:i+"%"},a.animate),"max"===s&&"vertical"===this.orientation&&this.range.stop(1,1)[c?"animate":"css"]({height:100-i+"%"},a.animate))},_handleEvents:{keydown:function(e){var i,o,r,n=t(e.target).data("ui-slider-handle-index");switch(e.keyCode){case t.ui.keyCode.HOME:case t.ui.keyCode.END:case t.ui.keyCode.PAGE_UP:case t.ui.keyCode.PAGE_DOWN:case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(e.preventDefault(),!this._keySliding&&(this._keySliding=!0,this._addClass(t(e.target),null,"ui-state-active"),!1===this._start(e,n)))return}switch(r=this.options.step,i=o=this._hasMultipleValues()?this.values(n):this.value(),e.keyCode){case t.ui.keyCode.HOME:o=this._valueMin();break;case t.ui.keyCode.END:o=this._valueMax();break;case t.ui.keyCode.PAGE_UP:o=this._trimAlignValue(i+(this._valueMax()-this._valueMin())/this.numPages);break;case t.ui.keyCode.PAGE_DOWN:o=this._trimAlignValue(i-(this._valueMax()-this._valueMin())/this.numPages);break;case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:if(i===this._valueMax())return;o=this._trimAlignValue(i+r);break;case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(i===this._valueMin())return;o=this._trimAlignValue(i-r)}this._slide(e,n,o)},keyup:function(e){var i=t(e.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(e,i),this._change(e,i),this._removeClass(t(e.target),null,"ui-state-active"))}}})})?o.apply(e,r):o)||(t.exports=n)},"Y+MS":function(t,e,i){"use strict";var o=function(){function t(t,e){this.mouseFlag=!1,this.accuracy=2,this.value=1,this.colorInput=t,this.$el=$('
',t.prop("ownerDocument")),e&&this.$el.hide(),this.$gradient=$('
').appendTo(this.$el),this.$roller=$('').appendTo(this.$gradient)}return t.prototype.calculateRollerPosition=function(t){var e=t.pageX,i=this.$gradient.offset().left,o=e-i,r=this.$gradient.width();return o>r?100:o<0?0:~~(o/r*100)},t.prototype.toRgb=function(t){var e;return~t.indexOf("#")?t:(e=t.match(/[0-9.]+/g))?"rgb("+e.slice(0,3).join(", ")+")":"rgb(127, 127, 127)"},t.prototype.setValue=function(t){this.value=1!==t?t.toFixed(this.accuracy):t},t.prototype.updateRoller=function(){this.$roller.css("left",100-100*this.value+"%")},t.prototype.rollerMoveHandler=function(t){if(this.mouseFlag){var e=this.calculateRollerPosition(t);this.setValue((100-e)/100),$(this).trigger("change",[this.val()]),this.$roller.css("left",e+"%")}t.preventDefault()},t.prototype.mouseupHandler=function(t){this.mouseFlag&&(this.mouseFlag=!1,$(this).trigger("afterChange",[this.val()]))},t.prototype.initEvents=function(){var t=this.$el.prop("ownerDocument"),e=function(t){return this.rollerMoveHandler(t)}.bind(this),i=function(o){return $(t).off("mousemove mouseup",e), +$(t).off("mouseup",i),this.mouseupHandler(o)}.bind(this);this.$el.on("mousedown",function(o){this.mouseFlag=!0,$(t).on("mousemove mouseup",e),$(t).on("mouseup",i),o.preventDefault()}.bind(this)),this.colorInput.on("change",function(t){this.updateColor()}.bind(this))},t.prototype.removeEvents=function(){},t.prototype.updateColor=function(){var t=this.colorInput.val()||"black",e=this.toRgb(t),i=["-moz-linear-gradient(left, %COLOR 0%, transparent 100%)","-webkit-gradient(linear, left top, right top, color-stop(0%,%COLOR), color-stop(100%,transparent))","-webkit-linear-gradient(left, %COLOR 0%,transparent 100%)","-o-linear-gradient(left, %COLOR 0%,transparent 100%)","linear-gradient(to right, %COLOR 0%,transparent 100%)"];$.browser.msie?this.$gradient.css("filter",["progid:DXImageTransform.Microsoft.gradient(startColorstr='",e,"', EndColor=0, GradientType=1)"].join("")):i.forEach(function(t){this.$gradient.css("background-image",t.replace(/%COLOR/,e))}.bind(this))},t.prototype.val=function(t){return void 0!==t&&(this.setValue(+t),this.updateRoller()),this.value},function(e,i){return new t(e,i)}}();t.exports=o},"d2+F":function(t,e,i){"use strict";var o,r,n,s,a,l,c,u,h,p,d,f,v,g,_,m;i("zNST"),i("utoz"),o=i("eJTA"),r=o.rgba,n=o.areEqualRgb,s=o.areEqualRgba,a=o.normalizeHue,l=o.normalizeHsvSaturation,c=o.normalizeValue,u=o.hsv,h=o.rgbToHsv,p=o.hsvToRgb,d=o.rgbToString,f=o.rgbaToString,v=o.parseRgb,g=o.parseRgba,_=i("Y+MS"),m=i("wmOI").ESC,function(t){function e(t){return""===t?t:f(g(t))}function i(t){t&&(t.join||(t=t?(""+t).split(","):[]),C=t)}function o(k){function w(e,i,o){var n=t(this);e=f(r(v(e),i)),$.call(this,e),n.removeData("tvcolorpicker").removeData("tvcolorpicker-custom-color"),o&&(S.call(n),n.blur())}function $(e){var i=t(this);i.val(e),i.change(),e?i.trigger("pick-color",e):i.trigger("pick-transparent"),x.call(this,e)}function x(e){""!==e?(t(this).removeClass("tvcolorpicker-gradient-widget"),t(this).css({backgroundColor:e,color:e})):t(this).addClass("tvcolorpicker-gradient-widget")}function M(e,i){var o,r,s,a,l,c,u;return i=i||{},r=(o=this).prop("ownerDocument"),s=t(o).val().toLowerCase(),a=r.createElement("table"),l=r.createElement("tbody"),a.appendChild(l),u=0,t.each(e,function(e,r){var a,h;u++,e%y==0&&(c=t("
").appendTo(l)),a=t('').appendTo(c),h=t('
').appendTo(a).find(".tvcolorpicker-swatch").data("color",r),i.addClass&&h.addClass(i.addClass),r&&(r=r.toLowerCase(),s&&n(v(s),v(r))&&h.addClass("active"),h.css({backgroundColor:r}).data("color",r),h.bind("click",function(){w.call(o,r,P.val(),!0)}))}),t(a).addClass("tvcolorpicker-table"),u?a:t()}function V(e){function i(t){var e=t.originalEvent,i=t.offsetX||t.layerX||e&&(e.offsetX||e.layerX)||0,o=t.offsetY||t.layerY||e&&(e.offsetY||e.layerY)||0;V.css({left:i+"px",top:o+"px"}),z[0]=a(i/A),z[1]=l(1-o/R),F.css({backgroundColor:d(p(u(z[0],z[1],1)))}),b()}function o(e){1==e.which&&(H=!1,j.is(".opened")&&t(W).get(0).focus())}function n(e){ +var i=function(e){var i=e.pageY,o=t(D),r=i-o.offset().top;return r>o.height()?o.height():r<0?0:r}(e);I.css({top:i+"px"}),z[2]=c(1-Math.max(0,Math.min(i,R))/R),b()}function m(e){1==e.which&&(B=!1,t(U).unbind("mouseup",m),j.is(".opened")&&t(W).get(0).focus())}function b(){var t,e;L&&(L=!1,j.find(".tvcolorpicker-swatch.active").removeClass("active")),t=r(p(z),P.val()),s(g(W.val().toUpperCase()),t)||(e=f(t),W.data("tvcolorpicker-custom-color",e),$.call(W,e))}var y,k,x,V,S,O,F,I,D,R,A,H,B,L,z,N=!1,W=t(this),U=W.prop("ownerDocument"),j=t('
'),G=t('
').appendTo(j);return G.append(M.call(this,["rgb(0, 0, 0)","rgb(66, 66, 66)","rgb(101, 101, 101)","rgb(152, 152, 152)","rgb(182, 182, 182)","rgb(203, 203, 203)","rgb(216, 216, 216)","rgb(238, 238, 238)","rgb(242, 242, 242)","rgb(255, 255, 255)"])),G.append(M.call(this,["rgb(151, 0, 0)","rgb(255, 0, 0)","rgb(255, 152, 0)","rgb(255, 255, 0)","rgb(0, 255, 0)","rgb(0, 255, 255)","rgb(73, 133, 231)","rgb(0, 0, 255)","rgb(152, 0, 255)","rgb(255, 0, 255)"])),G.append(M.call(this,["rgb(230, 184, 175)","rgb(244, 204, 204)","rgb(252, 229, 205)","rgb(255, 242, 204)","rgb(217, 234, 211)","rgb(208, 224, 227)","rgb(201, 218, 248)","rgb(207, 226, 243)","rgb(217, 210, 233)","rgb(234, 209, 220)","rgb(221, 126, 107)","rgb(234, 153, 153)","rgb(249, 203, 156)","rgb(255, 229, 153)","rgb(182, 215, 168)","rgb(162, 196, 201)","rgb(164, 194, 244)","rgb(159, 197, 232)","rgb(180, 167, 214)","rgb(213, 166, 189)","rgb(204, 65, 37)","rgb(224, 102, 102)","rgb(246, 178, 107)","rgb(255, 217, 102)","rgb(147, 196, 125)","rgb(118, 165, 175)","rgb(109, 158, 235)","rgb(111, 168, 220)","rgb(142, 124, 195)","rgb(194, 123, 160)","rgb(166, 28, 0)","rgb(204, 0, 0)","rgb(230, 145, 56)","rgb(241, 194, 50)","rgb(106, 168, 79)","rgb(69, 129, 142)","rgb(60, 120, 216)","rgb(61, 133, 198)","rgb(103, 78, 167)","rgb(166, 77, 121)","rgb(133, 32, 12)","rgb(153, 0, 0)","rgb(180, 95, 6)","rgb(191, 144, 0)","rgb(56, 118, 29)","rgb(19, 79, 92)","rgb(17, 85, 204)","rgb(11, 83, 148)","rgb(53, 28, 117)","rgb(116, 27, 71)","rgb(91, 15, 0)","rgb(102, 0, 0)","rgb(120, 63, 4)","rgb(127, 96, 0)","rgb(39, 78, 19)","rgb(12, 52, 61)","rgb(28, 69, 135)","rgb(7, 55, 99)","rgb(32, 18, 77)","rgb(76, 17, 48)"])),y=t('
').css({display:"none"}).appendTo(j),k=t('
').appendTo(y),x=t('
').appendTo(k),V=t('
').appendTo(x),S=t('
').appendTo(x),O=t('
').appendTo(k),F=t('
').appendTo(O),I=t('
').appendTo(F),D=t('
').appendTo(F),(P=_(t(this),e.hideTransparency)).initEvents(),P.updateColor(),P.$el.appendTo(j),P.val(g(W.val()||T)[3]),R=x.height(),A=x.width(),H=!1,B=!1,L=!0,z=[0,0,.5],S.bind("mousedown",function(e){1==e.which&&(H=!0, +t(U).bind("mouseup",o),i(e),e.preventDefault())}),S.bind("mousemove",function(t){H&&(i(t),t.preventDefault())}),t(P).on("change",function(){N?b():w.call(this,t(this).val()||T,P.val())}.bind(this)),t(P).on("afterChange",function(){t(this).focus()}.bind(this)),O.bind("mousedown",function(e){1==e.which&&(B=!0,t(U).bind("mouseup",m),n(e),e.preventDefault())}),t(U).bind("mousemove",function(t){B&&(n(t),t.preventDefault())}),t('
'+window.t("Custom color...")+"").appendTo(j).bind("click",function(){var e,i=t(this).is(".active");i||y.css({minWidth:G.width()+"px",minHeight:G.height()+"px"}),t(this)[i?"removeClass":"addClass"]("active"),N=t(this).is(".active"),y.css({display:i?"none":"block"}),G.css({display:i?"block":"none"}),i?W.removeData("tvcolorpicker-custom-color"):(R=x.height(),A=x.width(),e=v(W.val()||T),z=h(e),V.css({left:~~(z[0]*A)+"px",top:~~((1-z[1])*R)+"px"}),I.css({top:~~((1-z[2])*R)+"px"}),F.css({backgroundColor:d(p(u(z[0],z[1],1)))}))}),j.append(t(M.call(this,C,{addClass:"tvcolorpicker-user"})).addClass("tvcolorpicker-user-swatches")),t(U.body).append(j),function(e,i,o){var r,n=t(e).prop("ownerDocument"),s=n.defaultView,a=t(e).offset(),l=(t(n).scrollLeft(),t(n).scrollTop()),c=t(e).outerWidth(),u=t(e).outerHeight(),h=t(s).width(),p=t(s).height(),d=t(i).outerWidth(),f=t(i).outerHeight(),v="function"==typeof o.direction?o.direction():o.direction;switch(v){default:case"down":r={top:a.top+u+o.offset,left:a.left+o.drift};break;case"right":r={top:a.top+o.drift,left:a.left+c+o.offset}}r.top+f>p+l&&(r.top=p-f+l),a.left+d>h&&(r.left=h-d),r.left+="px",r.top+="px",i.css(r)}(W,j,e),U.addEventListener("keydown",E,!1),j}function S(){var e=t(this).prop("ownerDocument")||document;t(e).find(".tvcolorpicker-popup").removeClass("opened").remove(),t(P).off("change"),t(P).off("afterChange"),e.removeEventListener("keydown",E,!1),t(O).data("tvcolorpicker",null),t(O).each(function(){var e,i=t(this).data("tvcolorpicker-custom-color");i&&(function(e){var i=!1,o=v(e);return t.each(C,function(t,e){if(n(v(e),o))return i=!0,!1}),!i&&(C=[d(o)].concat(C.slice(0,b-1)),!0)}(i)&&t(this).trigger("customcolorchange",[C]),t(this).data("tvcolorpicker-custom-color",null)),(e=t(this).data("tvcolorpicker-previous-color"))&&e!=t(this).val()&&t(this).trigger("change"),t(this).removeData("tvcolorpicker-previous-color")})}function E(t){t.keyCode===m&&(S.call(O),O.blur())}var P,O;return k=t.extend({},o.options,k||{}),O=this,k&&"customColors"in k&&i(k.customColors),this.each(function(){function i(){var t=e(s.val());x.call(s,t)}var o,r,n,s=t(this);s.val(e(s.val())),o=null,r=!1,s.addClass("tvcolorpicker-widget").attr("autocomplete","off").attr("readonly",!0),n=function(){s.data("tvcolorpicker")||(S.call(s),o=V.call(s,k),s.data("tvcolorpicker-custom-color",null),s.data("tvcolorpicker",o),s.data("tvcolorpicker-previous-color",s.val()),o.bind("mousedown click",function(e){t(e.target).parents().andSelf().is(o)&&(s.focus(),r=!0,setTimeout(function(){r=!1},0))}))},s.on("touchstart",n),s.focus(n),S.call(s), +s.bind("blur",function(t){r?t.stopPropagation():S.call(s)}),s.change(function(t){i()}),i()})}var b,y,C,T;if(!t)throw new Error("This program cannot be run in DOS mode");o.setCustomColors=i,t.fn.tvcolorpicker=o,b=29,y=10,C=[],T="rgb(14, 15, 16)",o.options={direction:"down",offset:0,drift:0}}(window.jQuery)},jNEI:function(t,e,i){"use strict";function o(t,e){void 0===e&&(e={});var i=$('');return null!==t&&i.appendTo(t),void 0!==e.addClass&&i.addClass(e.addClass),$('
').appendTo(i),$('').tvcolorpicker({customColors:function(t){var e,i,o,r=[];for(e=0,i=t;e50?t-50:0}),Object(s.rgbToString)(i)))}).bind("customcolorchange",function(t,e){Object(a.setJSON)("pickerCustomColors",e)}).appendTo(i),i}var r,n,s,a,l;i.r(e),i.d(e,"addColorPicker",function(){return o}),r=i("P5fv"),n=i("d2+F"),s=i("eJTA"),a=i("Vdly"),l="#727272"},utoz:function(t,e,i){},vBzC:function(t,e,i){var o,r,n;r=[i("P5fv"),i("Qwlt")],void 0===(n="function"==typeof(o=function(t){return t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}})?o.apply(e,r):o)||(t.exports=n)},zNST:function(t,e,i){}}]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/add-compare-dialog.e9db1b14483f3e7358f4.js b/public/charting_library/static/bundles/add-compare-dialog.e9db1b14483f3e7358f4.js new file mode 100644 index 0000000..12f6e13 --- /dev/null +++ b/public/charting_library/static/bundles/add-compare-dialog.e9db1b14483f3e7358f4.js @@ -0,0 +1,3 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([["add-compare-dialog"],{UnpO:function(t,e,o){"use strict";var a,n,i,c;Object.defineProperty(e,"__esModule",{value:!0}),e.AddSymbolTab=void 0,a=function(){function t(t,e){var o,a;for(o=0;o\n\t\t\n\t\t
\n\t
',e.AddSymbolTab=function(){function t(e,o){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this._chartWidgetCollection=e,this._dialog=o,this._$popup=null,this.init()}return a(t,[{key:"init",value:function(){var t=this;this.$tab=$(c),this._$input=this.$tab.find(".js-add-symbol-tab-input"),this._checkbox=new n.AddSymbolCheckbox({labelRight:$.t("Overlay the main chart"),labelAddClass:"tv-add-symbol-tab__checkbox-label",boxAddClass:"tv-add-symbol-tab__checkbox-box"}),this.$tab.find(".js-add-symbol-tab-checkbox").append(this._checkbox.$el),(0,i.symbolSearchUIService)().bindToInput(this._$input,{callback:function(e){var o=t._chartWidgetCollection.activeChartWidget.value();o&&o.addOverlayStudy(e,t._checkbox.checked)},onPopupOpen:function(e){e.css("z-index",t._dialog.getZIndex()),t._$popup=e},onPopupClose:function(){t._$popup=null},keepFocus:!0,clearAfterAccept:!0})}},{key:"focus",value:function(){Modernizr.mobiletouch||this._$input.focus()}},{key:"isClickOnTab",value:function(t){return!!this._$popup&&!(this._$popup[0]!==t.target&&!this._$popup[0].contains(t.target))}}]),t}()},UxRG:function(t,e,o){},dKfe:function(t,e,o){"use strict";var a,n,i;Object.defineProperty(e,"__esModule",{value:!0}),e.AddSymbolCheckbox=void 0,a=o("QwKQ"),n=(i=a)&&i.__esModule?i:{default:i},e.AddSymbolCheckbox=function(t){function e(t){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),t.checked=TVSettings.getBool("showAddSymbolDialog.checkboxState",!0);var o=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,t));return o.$checkbox.change(function(){setTimeout(function(){TVSettings.setValue("showAddSymbolDialog.checkboxState",o.checked)})}),o}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,n.default),e}()},frtK:function(t,e,o){},jPTo:function(t,e,o){},k47Q:function(t,e,o){}, +ocUP:function(t,e,o){"use strict";(function(t,a){var n,i,c,l,r,s;Object.defineProperty(e,"__esModule",{value:!0}),e.CompareTab=void 0,n=function(){function t(t,e){var o,a;for(o=0;o\n\t\t\n\t
',r='
',s='\n\t
\n\t\t\n\t
',e.CompareTab=function(){function e(t,o){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),this._chartWidgetCollection=t,this._dialog=o,this._$popup=null,this._predefines={},this._symbolAlias={},this.init()}return n(e,[{key:"_addCompareSymbol",value:function(t,e,o){var a=this._chartWidgetCollection.activeChartWidget.value();if(a)return a.addCompareStudy(t).then(function(t){var e=null!==t;return e&&(0,c.trackEvent)("GUI","Add Compare"),e})}},{key:"removeCompareSymbol",value:function(t){var e,o=this,a=this._chartWidgetCollection.activeChartWidget.value();a&&(e=a.model())&&e.dataSources().forEach(function(a){if(a._metaInfo&&"Compare@tv-basicstudies"===a._metaInfo.id){var n=a.properties().inputs.symbol.value();(n===t||o._symbolAlias[n]&&o._symbolAlias[n]===t)&&e.removeSource(a)}})}},{key:"init",value:function(){var e,o,a,n=this,i=this._chartWidgetCollection.activeChartWidget.value();i&&(e=i.model())&&(o=e.dataSources(),this.$tab=$(l),this._initSymbolSearch(),t.enabled("charting_library_base")||(this._createPredefinesList(),(a=this.$tab.find(".js-compare-tab-predefines")).find(".js-predefine-checkbox").attr("checked",!1),Object.keys(this._predefines).forEach(function(t){var e=n._symbolToId(t),i=a.find("#"+e);o.forEach(function(e){if(e._metaInfo&&"Compare@tv-basicstudies"===e._metaInfo.id){var o=e.properties().inputs.symbol.value();(o===t||n._symbolAlias[o]&&n._symbolAlias[o]===t)&&i.attr("checked",!0)}})})))}},{key:"_initSymbolSearch",value:function(){var t=this;this._$input=this.$tab.find(".js-compare-tab-input"),(0,i.symbolSearchUIService)().bindToInput(this._$input,{callback:function(e){return t._addCompareSymbol(e)},onPopupOpen:function(e){e.css("z-index",t._dialog.getZIndex()),t._$popup=e},onPopupClose:function(){t._$popup=null},keepFocus:!0, +clearAfterAccept:!0})}},{key:"_createPredefinesList",value:function(){function t(t){var e=this;setTimeout(function(){$(e).is(":checked")?o._addCompareSymbol(t.data.symbol).then(function(t){t||$(e).attr("checked",!1)}):o.removeCompareSymbol(t.data.symbol)})}var e=this,o=this,n=$(r);Object.keys(this._predefines).forEach(function(o){var i=$(a.render(s,{symbolId:e._symbolToId(o),label:e._predefines[o],additionalClass:e._isBovespa?"tv-compare-tab__predefine-cell--wide":""})),c=i.find(".js-predefine-checkbox");c.change({symbol:o},t),i.appendTo(n)}),n.appendTo(this.$tab)}},{key:"_symbolToId",value:function(t){return t.replace(/[^a-z0-9]/gi,"_")}},{key:"focus",value:function(){Modernizr.mobiletouch||this._$input.focus()}},{key:"isClickOnTab",value:function(t){return!!this._$popup&&!(this._$popup[0]!==t.target&&!this._$popup[0].contains(t.target))}}]),e}()}).call(this,o("Kxc7"),o("OiQe"))},tkV1:function(t,e,o){"use strict";var a,n,i,c,l;Object.defineProperty(e,"__esModule",{value:!0}),e.AddCompareDialog=void 0,a=function(){function t(t,e){var o,a;for(o=0;o').html(" "),this._helpTooltipTrigger=$('').text("?").attr("title",$.t("Type the interval number for minute charts (i.e. 5 if it is going to be a five minute chart). Or number plus letter for H (Hourly), D (Daily), W (Weekly), M (Monthly) intervals (i.e. D or 2H)")),this._dialogTitle=$.t("Change Interval")}var n=e("PT1i").linking,o=e("h24c").parseIntervalValue,a=e("h24c").intervalIsSupported,p=e("h24c").sanitizeIntervalValue,l=e("Kxc7"),r=e("pPtI"),h=e("GAqT").TVOldDialogs;s.prototype._setInput=function(){this._input=$(''),this._input.on("keypress",this._handleInput.bind(this)).on("input",function(){this._validate(),this._updateCaption()}.bind(this)).on("blur",function(){setTimeout(this._submit.bind(this),0)}.bind(this))},s.prototype._validate=function(){var t,i=this._input.val();this._parsed=o(i),this._valid=!this._parsed.error,this._supported=!this._parsed.error&&a(i),t=this._parsed.unit,this._supported&&("R"===t&&this._parsed.qty>r.getMaxResolutionValue("R")?this._supported=!1:null!==t&&"H"!==t||this._parsed.qty*("H"===t?60:1)>1440&&(this._supported=!1))},s.prototype._updateCaption=function(){var t,i,e;this._valid&&this._supported?(i=this._parsed.qty||1,e=this._parsed.unit||"",t=r.getTranslatedResolutionModel(i+e).hint,this._input.add(this._caption).removeClass("error")):(t=this._parsed.error?" ":$.t("Not applicable"),this._input.add(this._caption).addClass("error")),this._caption.html(t)},s.prototype._handleInput=function(t){var i,e,s;13!==t.which?t.ctrlKey||t.metaKey||!t.charCode||!t.which||t.which<=32||(i=String.fromCharCode(t.charCode),e=/[\dhdwms]/i,s=/[\dhdwm]/i,(l.enabled("seconds_resolution")?e.test(i):s.test(i))||t.preventDefault()):this._submit()},s.prototype._submit=function(){var t,i;h.isOpen(this._dialogTitle)&&(this._valid&&this._supported&&(t=p(this._input.val()),i=n.interval.value(),t&&i!==t&&"function"==typeof this._options.callback&&this._options.callback(t)),h.destroy(this._dialogTitle))},s.prototype._setInitialValue=function(t){var i,e;i="",e=!1,(t=t||this._options.initialValue)&&","!==t?i=p(t)||"":(i=t=n.interval.value(),e=!0),this._input.val(i),e&&this._input.select()},s.prototype.isValid=function(){return Boolean(this._valid)},s.prototype.show=function(t){var i=h.createDialog(this._dialogTitle,{hideCloseCross:!0,addClass:"change-interval-dialog",ownerDocument:this._options.ownerDocument}),e=i.find("._tv-dialog-content");return i.css("min-width",0),e.css("min-width",0).mousedown(function(t){this._input.is(t.target)||t.preventDefault()}.bind(this)).append(this._input.add(this._caption).add(this._helpTooltipTrigger)),h.applyHandlers(i),h.positionDialog(i),this._setInitialValue(t),this._validate(),this._updateCaption(),i}, +t.exports.ChangeIntervalDialog=s}}]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/chart-bottom-toolbar.da7ac0cc35cc8a26f65a.js b/public/charting_library/static/bundles/chart-bottom-toolbar.da7ac0cc35cc8a26f65a.js new file mode 100644 index 0000000..d0938b2 --- /dev/null +++ b/public/charting_library/static/bundles/chart-bottom-toolbar.da7ac0cc35cc8a26f65a.js @@ -0,0 +1,10 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([["chart-bottom-toolbar"],{"+GaQ":function(e,t,n){"use strict";function i(e){return e.map?a.Children.toArray(e.children).map(e.map):e.children}var a;n.d(t,"a",function(){return i}),a=n("q1tI")},"2mG+":function(e,t,n){e.exports={button:"button-37qwTsBL-"}},"5o6O":function(e,t,n){e.exports={tabs:"tabs-1LGqoVz6-",tab:"tab-1Yr0rq0J-",noBorder:"noBorder-oc3HwerO-",disabled:"disabled-s8cEYElA-",active:"active-37sipdzm-",defaultCursor:"defaultCursor-Np9BHjTg-",slider:"slider-1-X4lOmE-",content:"content-2asssfGq-"}},ApAi:function(e,t){e.exports=''},J3OW:function(e,t,n){e.exports={button:"button-1VVj8kLG-"}},K3s3:function(e,t,n){"use strict";function i(e){var t,n=s(e.className,c.tab,((t={})[c.active]=e.isActive,t[c.disabled]=e.isDisabled,t[c.defaultCursor]=!!e.shouldUseDefaultCursor,t[c.noBorder]=!!e.noBorder,t));return r.createElement("div",{className:n,onClick:e.onClick,ref:e.reference},e.children)}function a(e){return function(t){function n(){var e=null!==t&&t.apply(this,arguments)||this;return e.activeTab={current:null},e}return o.__extends(n,t),n.prototype.componentDidUpdate=function(){var e=Object(l.ensureNotNull)(this._slider),t=e.style;t.transition="transform 350ms",this._componentDidUpdate()},n.prototype.componentDidMount=function(){this._componentDidUpdate()},n.prototype.render=function(){var t=this,n=this.props.className,i=this._generateTabs();return r.createElement("div",{className:s(n,c.tabs)},i,r.createElement(e,{reference:function(e){t._slider=e}}))},n.prototype._generateTabs=function(){var e=this;return this.activeTab.current=null,r.Children.map(this.props.children,function(t){var n=t,i=Boolean(n.props.isActive),a={reference:function(t){i&&(e.activeTab.current=t),n.props.reference&&n.props.reference(t)}};return r.cloneElement(n,a)})},n.prototype._componentDidUpdate=function(){var e,t,n=Object(l.ensureNotNull)(this._slider),i=n.style;this.activeTab.current?(e=this.activeTab.current.offsetWidth,t=this.activeTab.current.offsetLeft,i.transform="translateX("+t+"px)",i.width=e+"px",i.opacity="1"):i.opacity="0"},n}(r.PureComponent)}var o,r,s,l,c,u;n.d(t,"a",function(){return u}),n.d(t,"b",function(){return i}),n.d(t,"c",function(){return a}),o=n("mrSG"),r=n("q1tI"),s=n("TSYQ"),l=n("Eyy1"),c=n("5o6O"),u=c,a(function(e){return r.createElement("div",{className:c.slider,ref:e.reference})})},MfqI:function(e,t,n){"use strict";function i(e){var t;return(t=function(t){function n(e,n){var i,a=t.call(this,e,n)||this;return a._handleUpdate=function(e){a.setState(e)},a._handleSelectRange=function(e){a._binding.selectRange(e)},S.has(n.chartWidget)||S.set(n.chartWidget,new E(n)),i=a._binding=Object(v.ensureDefined)(S.get(n.chartWidget)),a.state=i.state(),a}return u.__extends(n,t),n.prototype.componentDidMount=function(){ +this._binding.onChange().subscribe(this,this._handleUpdate)},n.prototype.componentWillUnmount=function(){this._binding.onChange().unsubscribe(this,this._handleUpdate)},n.prototype.render=function(){return l.createElement(e,{goToDateButton:this.props.goToDateButton,className:this.props.className,ranges:this.state.ranges,activeRange:this.state.activeRange,onSelectRange:this._handleSelectRange})},n}(l.PureComponent)).contextTypes={availableTimeFrames:d.any.isRequired,chartWidget:d.any.isRequired},t}function a(e){var t,n=h(M.item,((t={})[M.isActive]=e.isActive,t[M.isFirst]=e.isFirst,t[M.isLast]=e.isLast,t));return l.createElement("div",{className:n,onClick:e.onClick,ref:e.reference},e.children)}function o(e){var t=e.reference,n=e.className,i=e.children,a=u.__rest(e,["reference","className","children"]);return l.createElement("button",u.__assign({},a,{className:h(n,H.button),ref:t}),l.createElement("span",{className:H.inner},i))}function r(e){return l.createElement("span",{className:h($.separator,e.className)})}function s(e){0}var l,c,u,d,h,p,m,g,f,_,b,v,C,y,S,E,x,R,W,w,N,A,T,M,k,B,D,z,F,P,j,I,L,O,q,U,H,G,V,Z,K,Q,Y,J,X,$,ee,te,ne,ie,ae,oe,re,se,le,ce,ue,de,he,pe,me,ge,fe,_e,be,ve,Ce,ye,Se,Ee,xe;n.r(t),l=n("q1tI"),c=n("i8i4"),u=n("mrSG"),d=n("17x9"),n("YFKU"),h=n("TSYQ"),p=n("XmVn"),m=n("Kxc7"),g=n("82wv"),f=n("Iksw"),_=n("N5tr"),b=n("dfhE"),v=n("Eyy1"),C=n("aIyQ"),y=n.n(C),S=new WeakMap,E=function(){function e(e){var t,n=this;this._state={ranges:[]},this._change=new y.a,(t=(this._context=e).chartWidget).withModel(null,function(){var e=t.model(),i=e.mainSeries();i.onStatusChanged().subscribe(n,n._updateAvailableRanges),m.enabled("update_timeframes_set_on_symbol_resolve")&&i.dataEvents().symbolResolved().subscribe(n,n._updateAvailableRanges),i.priceScale().properties().lockScale.subscribe(n,n._updateAvailableRanges),i.onIntervalChanged().subscribe(n,n._onRangeChanged),e.model().onResetScales().subscribe(n,n._resetActiveInterval),i.dataEvents().symbolResolved().subscribe(n,n._resetActiveInterval),i.properties().extendedHours.subscribe(n,n._resetActiveInterval),n._updateAvailableRanges()}),t.onScroll().subscribe(this,this._resetActiveInterval)}return e.prototype.state=function(){return this._state},e.prototype.onChange=function(){return this._change},e.prototype.selectRange=function(e){var t,n;this._setState({activeRange:e.value}),t=this._context.chartWidget,n={val:e.value,res:e.targetResolution},t.loadRange(n)},e.prototype.destroy=function(){var e=this,t=this._context.chartWidget;t.withModel(null,function(){var n=t.model(),i=n.mainSeries();i.onStatusChanged().unsubscribe(e,e._updateAvailableRanges),m.enabled("update_timeframes_set_on_symbol_resolve")&&i.dataEvents().symbolResolved().unsubscribe(e,e._updateAvailableRanges),i.priceScale().properties().lockScale.unsubscribe(e,e._updateAvailableRanges),i.onIntervalChanged().unsubscribe(e,e._onRangeChanged),n.model().onResetScales().unsubscribe(e,e._resetActiveInterval),i.dataEvents().symbolResolved().unsubscribe(e,e._resetActiveInterval), +i.properties().extendedHours.unsubscribe(e,e._resetActiveInterval)}),t.onScroll().unsubscribe(this,this._resetActiveInterval),this._change.destroy()},e.prototype._setState=function(e){this._state=Object.assign({},this._state,e),this._change.fire(this._state)},e.prototype._onRangeChanged=function(e,t){this._setState({activeRange:t.timeframe})},e.prototype._resetActiveInterval=function(){this._setState({activeRange:void 0})},e.prototype._updateAvailableRanges=function(){var e,t,n,i=this._context,a=i.availableTimeFrames,o=i.chartWidget;o.model()&&(t=(e=o.model().mainSeries()).status())!==b.STATUS_LOADING&&t!==b.STATUS_RESOLVING&&0!==(n=a(e.symbolInfo(),e.status())).length&&this._setState({ranges:n})},e}(),x=n("KKsp"),R=n("cdbK"),W=n("J3OW"),w={title:window.t("Date Range"),goToDate:window.t("Go to...")},N=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._handleGoToDateClick=function(){var e=t.context.chartWidget;Object(R.showGoToDateDialog)(e.model())},t._handleRangeSelect=function(e){e&&t.props.onSelectRange&&t.props.onSelectRange(e)},t}return u.__extends(t,e),t.prototype.render=function(){var e=this,t=this.props,n=t.ranges,i=t.activeRange,a=t.goToDateButton;return l.createElement(g.a,{className:W.button,content:w.title,arrow:!0,verticalAttachEdge:f.a.Top,verticalDropDirection:f.b.FromBottomToTop,horizontalMargin:4},n.map(function(t){return l.createElement(_.a,{key:t.value,label:t.description||t.text,isActive:i===t.value,onClick:e._handleRangeSelect,onClickArg:t})}),a&&l.createElement(x.a,null),a&&l.createElement(_.a,{label:w.goToDate,onClick:this._handleGoToDateClick}))},t.contextTypes={chartWidget:d.any.isRequired},t}(l.PureComponent),A=i(N),T=n("K3s3"),M=n("W9Y+"),k=n("nPPD"),B=n("RZ2Z"),D=Object(k.a)(T.a,B),z=n("qSb5"),F=Object(T.c)(function(e){return l.createElement("div",{className:D.slider,ref:e.reference},l.createElement("div",{className:D.inner}))}),P=i(function(e){var t=e.className,n=e.ranges,i=e.activeRange,o=e.onSelectRange;return l.createElement(F,{className:h(z.sliderRow,t)},n.map(function(e,t){return l.createElement(a,{key:e.value,isFirst:0===t,isLast:t===n.length-1,isActive:i===e.value,onClick:o&&o.bind(null,e)},l.createElement("div",{title:e.description||e.text,className:"apply-common-tooltip"},e.text))}))}),j=n("ei7k"),I=n("c7H2"),L={title:window.t("Go to...")},O=Object(j.b)({keys:["Alt","G"],text:"{0} + {1}"}),q=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._handleClick=function(){var e=t.context.chartWidget;Object(R.showGoToDateDialog)(e.model())},t}return u.__extends(t,e),t.prototype.render=function(){var e=this.props,t=e.className;return e.ranges.length>0&&l.createElement("div",{className:h("apply-common-tooltip",I.button,t),"data-tooltip-hotkey":O,onClick:this._handleClick},L.title)},t.contextTypes={chartWidget:d.any.isRequired},t}(l.PureComponent),U=i(q),H=n("URQ3"),G=n("U/gD"),V=n("4kQX"),Z=n("7KDR"),K=n("5VQP"),Q=function(e){function t(t){var n=e.call(this,t)||this;return n._element=null,n._menu=null,n._handleRef=function(e){ +n._element=e},n._showMenu=function(){var e,t,i,a;if(n._menu&&n._menu.isShown())return n._menu.hide(),void n._menu.destroy();t=(e=n.props).getActions,i=e.right,a=Object(v.ensureNotNull)(n._element),K.ContextMenuManager.createMenu(t()).then(function(e){n._menu=e,e.show(function(e,t){var n=a.getBoundingClientRect();return{clientX:i?n.right-e:n.left,clientY:n.top-Math.min(t,n.top),overrideHeight:n.top'},URQ3:function(e,t,n){e.exports={button:"button-88UE6omC-",hover:"hover-3_vVP91F-",inner:"inner-2FptJsfC-"}},"W9Y+":function(e,t,n){e.exports={item:"item-3cgIlGYO-",hover:"hover-2y46_KNk-",isActive:"isActive-2M6dwA7--",isFirst:"isFirst-2kfAV5tf-",isLast:"isLast-voJ1bqZh-"}},c7H2:function(e,t,n){e.exports={button:"button-2gir_Bbb-",hover:"hover-SrAyrKlT-"}},qSb5:function(e,t,n){e.exports={sliderRow:"sliderRow-Tv1W7hM5-"}},z6ID:function(e,t,n){e.exports={separator:"separator-3bp1jCsV-"}}}]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/chart-widget-gui.8005316cfc1f06be4bf0.js b/public/charting_library/static/bundles/chart-widget-gui.8005316cfc1f06be4bf0.js new file mode 100644 index 0000000..0e990bf --- /dev/null +++ b/public/charting_library/static/bundles/chart-widget-gui.8005316cfc1f06be4bf0.js @@ -0,0 +1,13 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([["chart-widget-gui"],{"/NcV":function(t,e){t.exports=''},"/vkn":function(t,e){t.exports=''},"1ANp":function(t,e,i){"use strict";function s(t){return"alwaysOn"===t||"alwaysOff"===t?t:"visibleOnMouseOver"}function n(){if(!u){(u=new h.a).setValue(s(d.getValue("NavigationButtons.visibility"))),u.subscribe(u,function(t){d.setValue("NavigationButtons.visibility",s(t.value()))})}return u}function o(){return[{value:"visibleOnMouseOver",title:window.t("Visible on Mouse Over")},{value:"alwaysOn",title:window.t("Always Visible")},{value:"alwaysOff",title:window.t("Always Invisible")}]}function r(){var t,e;return c||(c=new h.a,e=function(){var e=t.value();"alwaysOn"!==e&&"alwaysOff"!==e&&(e=Modernizr.mobiletouch?"alwaysOn":"visibleOnMouseOver"),c&&c.setValue(e)},(t=n()).subscribe(c,e),e()),c}var l,a,h,d,u,c;i.r(e),i.d(e,"property",function(){return n}),i.d(e,"availableValues",function(){return o}),i.d(e,"actualBehavior",function(){return r}),i("YFKU"),l=i("bf9a"),a=i("tc+8"),h=i.n(a),d=i("Vdly")},"3zM7":function(t,e){t.exports=''},"94TV":function(t,e){t.exports=''},"C+zC":function(t,e){t.exports=''},GBBr:function(t,e){t.exports=''},LxXZ:function(t,e,i){"use strict";(function(t){function s(t){t.classList.toggle("js-hidden",!0)}function n(t){t.classList.toggle("js-hidden",!1)}function o(t,e,i,s){var n;this._options=Object.assign({},u,s),this._model=e,this._paneWidget=t,this._chart=t._chart,this.$el=$(document.createElement("div")).addClass("pane-legend"),this._itemsBinding=[],this._mouseEventHandlers=[],this._chart.properties().paneProperties.legendProperties.showStudyTitles.listeners().subscribe(this,this.updateLayout), +this._chart.properties().paneProperties.legendProperties.showSeriesTitle.listeners().subscribe(this,this.updateLayout),this._chart.properties().paneProperties.legendProperties.showSeriesOHLC.listeners().subscribe(this,this.updateLayout),this._chart.properties().paneProperties.legendProperties.showBarChange.listeners().subscribe(this,this.updateLayout),this._chart.properties().paneProperties.legendProperties.showOnlyPriceSource.listeners().subscribe(this,this.updateLayout),this._chart.properties().paneProperties.legendProperties.showStudyValues.listeners().subscribe(this,this.updateLayout),this._model.mainSeries().properties().style.listeners().subscribe(this,this.updateLayout),this._model.mainSeries().properties().visible.listeners().subscribe(this,this.updateLayout),(n=this._chart.properties().scalesProperties.textColor).listeners().subscribe(this,function(t){this.$el.css("color",t.value())}),this.$el.css("color",n.value()),this._chart.properties().paneProperties.legendProperties.showLegend.subscribe(this,this.updateLayout),this._iconColor=null,this.updateLayout()}i("GVHu").Study;var r=i("tITk").trackEvent,l=(i("uOxu").getLogger("Chart.LegendWidget"),i("Tmoa")),a=i("Ialn").IS_RTL,h=(i("Vdly"),i("S8xo").MouseEventHandler),d=i("QloM").TabNames,u={contextMenuEnabled:!0,sourceSelectionEnabled:!0,symbolMarkerEnabled:!1,miniButtonsWidgetEnabled:!0,alertWidgetEnabled:!0};o.prototype.destroy=function(){this._removeMouseEventHandlers(),this._chart.properties().paneProperties.legendProperties.showLegend.unsubscribeAll(this),this._chart.properties().paneProperties.legendProperties.showStudyTitles.listeners().unsubscribe(this,this.updateLayout),this._chart.properties().paneProperties.legendProperties.showSeriesTitle.listeners().unsubscribe(this,this.updateLayout),this._chart.properties().paneProperties.legendProperties.showSeriesOHLC.listeners().unsubscribe(this,this.updateLayout),this._chart.properties().paneProperties.legendProperties.showBarChange.listeners().unsubscribe(this,this.updateLayout),this._chart.properties().paneProperties.legendProperties.showOnlyPriceSource.listeners().unsubscribe(this,this.updateLayout),this._chart.properties().paneProperties.legendProperties.showStudyValues.listeners().unsubscribe(this,this.updateLayout),this._model.mainSeries().properties().style.listeners().unsubscribe(this,this.updateLayout),this._model.mainSeries().properties().visible.listeners().unsubscribe(this,this.updateLayout)},o.prototype.updateThemedColors=function(t){this._iconColor=t,this._applyIconColors()},o.prototype._applyIconColors=function(){this.$el.find(".pane-legend-icon-container").css("color",this._iconColor||"")},o.prototype.contextMenuEvent=function(t,e){if(!this._model.chartModel().readOnly()&&this._options.contextMenuEnabled){this._chart.updateActions();var i=e.source;this._model.selectionMacro(function(t){t.clearSelection(),t.addSourceToSelection(i)}),this._paneWidget.showContextMenuForSelection(t)}},o.prototype._removeMouseEventHandlers=function(){this._mouseEventHandlers.forEach(function(t){t.destroy()}), +this._mouseEventHandlers=[]},o.prototype.updateLayout=function(){var e,s,n,o,r,l,a,d,u,c,p,_;if(this._removeMouseEventHandlers(),this._itemsBinding.length=0,this.$el.find(".apply-common-tooltip").trigger("mouseleave"),this.$el.empty(),this._indicatorRows=[],(e=this._paneWidget.state())&&this._model){for(s={showStudyTitles:this._model.model().properties().paneProperties.legendProperties.showStudyTitles.value(),showSeriesTitle:this._chart.properties().paneProperties.legendProperties.showSeriesTitle.value(),showSeriesOHLC:this._chart.properties().paneProperties.legendProperties.showSeriesOHLC.value(),showStudyValues:this._chart.properties().paneProperties.legendProperties.showStudyValues.value(),showLegend:this._model.model().properties().paneProperties.legendProperties.showLegend.value()},n=this._model.mainSeries(),(r=(o=e.orderedSources().slice()).indexOf(n))>-1&&(o.splice(r,1),o.push(n)),l=o.length-1;l>=0;l--)(d=(a=o[l]).statusView())&&(u=a===n,c=this._options.miniButtonsWidgetEnabled,(!u||s.showSeriesTitle||s.showSeriesOHLC||s.showStudyTitles||s.showStudyValues)&&(u&&t.enabled("fundamental_widget")||(!s.showLegend&&u&&c?this.$el.find(".expand-line").length||(p=$("
").addClass("pane-legend-line pane-legend-wrap main expand-line"),this._options.sourceSelectionEnabled||p.addClass("legend-selection-disabled"),p.appendTo(this.$el),this._chartHasStudies()?(_=$('').append($(i("/vkn")).attr({class:"expand closed"})),p.append(_.on("click touchend",this.toggleTitles.bind(this)))):p.addClass("pane-legend-line--without-child-studies"),p.source=a,a.properties().visible.value()||p.addClass("disabled"),s={showStudyTitles:!1,showSeriesTitle:s.showSeriesTitle,showSeriesOHLC:s.showSeriesOHLC,showStudyValues:!1},this._generateItemsForRow(p,d,s),this._mouseEventHandlers.push(new h(p,this,!0)),this.update()):(u||s.showStudyTitles||s.showStudyValues)&&s.showLegend&&(p=$("
").addClass("pane-legend-line pane-legend-wrap"),this._options.sourceSelectionEnabled||p.addClass("legend-selection-disabled"),p.appendTo(this.$el),u||this._indicatorRows.push(p[0]),p.source=a,u&&c?this._chartHasStudies()?(p.addClass("main"),_=$('').append($(i("scAS")).attr({class:"expand"})),p.append(_.on("click touchend",this.toggleTitles.bind(this)))):p.addClass("pane-legend-line--without-child-studies"):p.addClass("study"),a.properties().visible.value()||p.addClass("disabled"),this._generateItemsForRow(p,d,s),this._mouseEventHandlers.push(new h(p,this,!0))))));this.update()}},o.prototype._chartHasStudies=function(){return this._model.model().allStudies().some(function(t){return t.statusView()})},o.prototype._generateItemsForRow=function(e,s,n){var o,r,l,h,d,u,c,p,_,v,m,g=e.source,b=this,y=g===this._model.mainSeries(),w=g.properties().visible.value() +;if((y&&n.showSeriesTitle||!y&&n.showStudyTitles)&&((r=$("")).addClass("pane-legend-line__wrap-description apply-overflow-tooltip"),this._options.contextMenuEnabled&&!this._chart.readOnly()||r.addClass("no-context-menu"),this._options.sourceSelectionEnabled||r.addClass("legend-selection-disabled"),y&&r.addClass("main"),w||r.addClass("disabled"),r.css({"font-weight":s.bold()?"bold":"normal","font-size":s.size()}),this._options.contextMenuEnabled&&r.click(function(t){b.contextMenuEvent(t,e)}),$('').append($(i("3zM7"))).appendTo(r),r.appendTo(e),this._itemsBinding.push({value:s,cell:r,source:e.source}),!this._chart.readOnly()&&g.userEditEnabled()&&t.enabled("edit_buttons_in_legend")&&(o=$(''),a||o.appendTo(e),y&&w||!t.enabled("show_hide_button_in_legend")||$('').append($(i("cgDJ"))).appendTo(o).on("click touchend",this._generateItemsForRow._onShowhideClick.bind(this,g)),!y&&t.enabled("property_pages")&&t.enabled("format_button_in_legend")&&$('').append($(i("sGj7"))).appendTo(o).on("click touchend",this._generateItemsForRow._onFormatClick.bind(this,g)),!y&&t.enabled("delete_button_in_legend")&&$('').append($(i("VLql"))).appendTo(o).on("click touchend",this._generateItemsForRow._onDeleteClick.bind(this,g)))),l=g.legendView(),this.isDataWindowValuesVisible(l)&&l.isValuesVisible()&&(!y||w)){for(h=[],d=[],u=$('
').css({"font-size":s.size()}),this._options.contextMenuEnabled||u.addClass("no-context-menu"),this._options.sourceSelectionEnabled||u.addClass("legend-selection-disabled"),c=0;c").appendTo(u),_=y?$("").appendTo(p):null,v=$("").appendTo(p),y&&(_.addClass("pane-legend-item-value-title__main"),v.addClass("pane-legend-item-value__main")),g.properties().visible.value()||(v.addClass("disabled"),_&&_.addClass("disabled")),h.push(v),_&&d.push(_);m=$("").appendTo(u.appendTo(e)),this._itemsBinding.push({value:l,cell:h,titleCells:d.length?d:null,source:g,additional:m})}o&&a&&o.appendTo(e),this._applyIconColors()},o.prototype.isDataWindowValuesVisible=function(t){return this._chart.onWidget()?!!t&&!this._chart.isSmall():!!t},o.prototype._generateItemsForRow._onShowhideClick=function(t){this._model.setProperty(t.properties().visible,!t.properties().visible.value(),"Show/Hide "+t.title()),this._trackLegendEvent("Show/Hide")},o.prototype._generateItemsForRow._onFormatClick=function(t,e){t.userEditEnabled()&&this._chart.showChartPropertiesForSource(t,d.style),this._trackLegendEvent("Settings")},o.prototype._generateItemsForRow._onDeleteClick=function(t){ +t.isUserDeletable()&&(t.hasChildren()?showDeleteStudyTreeConfirm(this._model.removeSource.bind(this._model,t)):this._model.removeSource(t)),this._trackLegendEvent("Remove")},o.prototype._generateItemsForRow._onAddChildSourceClick=function(t){var e,i,s=this._chart.showIndicators(t);s&&(e=function(){r("SOS","Apply SOS","Apply by Plus SOS")},(i=this._model.model().studyInserted()).subscribe(this,e),s.visibilityChanged.subscribe(this,function(t){t||i.unsubscribe(this,e)},!0)),this._trackLegendEvent("Indicator on indicator")},o.prototype._generateItemsForRow._onViewSorceClick=function(t){var e=t.metaInfo();this._getPineSourceCode(e).done(function(t){TradingView.bottomWidgetBar&&TradingView.bottomWidgetBar.activateScriptEditorTab(t)}),this._trackLegendEvent("Source code")},o.prototype._getPineSourceCode=function(t){return $.Deferred()},o.prototype.setItemEnabled=function(t,e){var i=!t.hasClass("disabled"),s=t.closest(".pane-legend-wrap");e&&!i?(t.removeClass("disabled"),s.removeClass("disabled")):!e&&i&&(t.addClass("disabled"),s.addClass("disabled"))},o.prototype.valueChanged=function(t,e,i){return t[e]!==i&&(t[e]=i,!0)},o.prototype.firstTitle=function(){return this.$el.find(".pane-legend-wrap:first-child")},o.prototype.updateTitle=function(){var e,i,s,n,o,r,l,a,h,d,u,c,p;for(s=this._itemsBinding.length;s--;)i=this._itemsBinding[s],Array.isArray(i.cell)||(i.last||(i.last={}),n=i.last,e=(o=i.source).properties().visible.value(),this.valueChanged(n,"sourceVisible",e)&&this.setItemEnabled(i.cell,e),r=i.value.color(),l=o!==this._model.mainSeries()&&this._model.selection().isSelected(o)?"bold":"normal","function"==typeof i.value.getSplitTitle?(a=(u=i.value.getSplitTitle())[0].trim(),h=u[1].trim(),d=u[2].trim()):(a=i.value.text().trim(),h="",d=""),t.enabled("fundamental_widget")&&(a=((p=(c=this._model.mainSeries()).symbolInfo())?p.name:c.actualSymbol())+" "+a),i.isCellInited||(i.isCellInited=!0,d||h?(i.titleElement=document.createElement("div"),i.titleElement.classList.add("pane-legend-title__container"),i.cell[0].appendChild(i.titleElement),i.descriptionElement=document.createElement("div"),i.descriptionElement.classList.add("pane-legend-title__description"),i.titleElement.appendChild(i.descriptionElement),h&&(i.intervalElement=document.createElement("div"),i.intervalElement.classList.add("pane-legend-title__interval"),i.titleElement.appendChild(i.intervalElement)),d&&(i.detailsElement=document.createElement("div"),i.detailsElement.classList.add("pane-legend-title__details"),i.titleElement.appendChild(i.detailsElement)),i.titleElement.classList.add("apply-overflow-tooltip","apply-overflow-tooltip--allow-text","apply-overflow-tooltip--check-children")):(i.titleElement=document.createElement("div"),i.titleElement.classList.add("apply-overflow-tooltip","pane-legend-title__container"),i.cell[0].appendChild(i.titleElement),i.descriptionElement=document.createElement("div"),i.descriptionElement.classList.add("pane-legend-title__description"),i.titleElement.appendChild(i.descriptionElement))), +(this.valueChanged(n,"color",r)||this.valueChanged(n,"fontWeight",l))&&(i.titleElement.style.color=r,i.titleElement.style.borderColor=r,i.titleElement.style.fontWeight=l),a!==i.description&&(i.descriptionElement.textContent=TradingView.clean(a,!0),i.description=a),i.intervalElement&&h&&h!==i.interval&&(i.intervalElement.textContent=TradingView.clean(h,!0),i.interval=h),i.detailsElement&&d&&d!==i.details&&(i.detailsElement.textContent=TradingView.clean(d,!0),i.details=d));this._chart.resizeIndicator()},o.prototype.update=function(t){var e,i,o,r,a,h,d,u,c,p,_,v=!this._chart.isActive()&&!this._chart.crossHairSyncEnabled(),m=v?s:n;for(this._indicatorRows.forEach(m),this.updateTitle(),u=this._itemsBinding.length;u--;)if(e=(r=this._itemsBinding[u]).cell,i=r.titleCells,o=r.source.properties().visible.value(),Array.isArray(e))for(r.last||(r.last={},r.last.dwView||(r.last.dwView={})),c=r.last,a=r.value.items(),p=this.valueChanged(c,"sourceVisible",o),h=0;h'},MjtL:function(t,e){t.exports=''},TGRH:function(t,e,i){"use strict";var s,n,o,r,l,a,h,d,u,c,p,_,v,m,g,b,y,w,f,C,M,B,L,T;i.r(e),i.d(e,"ControlBarNavigation",function(){return T}),i("YFKU"),s=i("1ANp"),n=i("Ialn"),o=i("TzTt"),r=i("Tmoa"),l=i("ei7k"),a=i("qFKp"),i("tITk"),h=i("MjtL"),d=i("e8Rm"),u=i("e2QN"),c=i("vg09"),p=i("/NcV"),_=i("94TV"),v=i("qfuz"),m=i("MQEA"),g=i("jrhZ"),y=Object(l.b)({keys:["Alt","R"],text:"{0} + {1}"}),w=Object(l.b)({keys:[v], +text:"{0}"}),f=Object(l.b)({keys:[m],text:"{0}"}),C='
\n\t
\n\t\t
\n\t\t\t
\n\t\t\t\t'+d+'\n\t\t\t
\n\t\t\t
\n\t\t\t\t'+c+'\n\t\t\t
\n\t\t
\n\t\t
\n\t\t\t
\n\t\t\t\t'+h+'\n\t\t\t
\n\t\t\t
\n\t\t\t\t'+p+'\n\t\t\t
\n\t\t
\n\t\t
\n\t\t\t'+u+"\n\t\t
\n\t
\n
",M='
\n\t'+_+"\n
",(b={}).moving="wait_finishing",b.wait_finishing="stop",b.stop="moving",B=b,L="control-bar__btn--btn-hidden",T=function(){function t(t,e){this._back=null,this._backButtonVisible=!1,this._boundKeydownHandler=null,this._boundKeyupHandler=null,this._boundMouseHandler=null,this._chartBackgroundProperty=null,this._chartModel=null,this._checkIntervalId=0,this._controlBar=null,this._controlBarVisible=!1,this._currentDistance=0,this._deferredFinishTimeout=0,this._finishingTimeout=0,this._moveType="",this._movingTimeout=0,this._pressedKey=[],this._priceAxisChanged=null,this._resetAvailabilityChanged=null,this._priceAxisName="",this._rafId=0,this._startTime=0,this._state="stop",this._visibilityTypeProperty=null,this._widget=null,this._btnGroups=null,this._chart=t,this._parent=e,this._init(),this._initHandlers()}return t.prototype.destroy=function(){null!==this._visibilityTypeProperty&&(this._visibilityTypeProperty.unsubscribe(this,this._onVisibilityTypeChange),this._visibilityTypeProperty=null),null!==this._boundMouseHandler&&(this._parent.removeEventListener("mousemove",this._boundMouseHandler,!1),this._parent.removeEventListener("mouseleave",this._boundMouseHandler,!1),this._boundMouseHandler=null),null!==this._boundKeydownHandler&&(this._parent.ownerDocument.removeEventListener("keydown",this._boundKeydownHandler),this._boundKeydownHandler=null),null!==this._boundKeyupHandler&&(this._parent.ownerDocument.removeEventListener("keyup",this._boundKeyupHandler),this._boundKeyupHandler=null),clearTimeout(this._movingTimeout),null!==this._priceAxisChanged&&(this._priceAxisChanged.unsubscribe(this,this._updateBackBtnPosition),this._priceAxisChanged=null), +null!==this._chartBackgroundProperty&&(clearInterval(this._checkIntervalId),this._chartBackgroundProperty.unsubscribe(this,this._updateBgBarStyle),this._chartBackgroundProperty=null),null!==this._resetAvailabilityChanged&&(this._resetAvailabilityChanged.unsubscribe(this,this._updateResetScalesButtonVisibility),this._resetAvailabilityChanged=null),this._chart=null},t.prototype.updatePosition=function(t){var e,i;null!==this._widget&&null!==this._controlBar&&(e=this._chart.getPriceAxisMaxWidthByName("left"),i=this._chart.getPriceAxisMaxWidthByName("right"),this._updateBtnGroupVisibility(t,e,i))},t.prototype._init=function(){var t,e,i=this;if(this._widget=Object(o.a)(C).querySelector(".control-bar-wrapper"),this._back=Object(o.a)(M).querySelector(".control-bar__btn--back-present"),this._controlBar=this._widget.querySelector(".control-bar"),this._btnGroups=Array.from(this._controlBar.querySelectorAll(".js-btn-group")),a.CheckMobile.any())for(t=0,e=this._btnGroups;t=i.left-100&&t.clientX<=i.right+100&&t.clientY>=i.top-100&&t.clientY<=i.bottom+100),this._controlBarVisible!==e&&(this._controlBarVisible=e,null!==this._controlBar&&null===this._rafId&&(this._rafId=this._controlBar.ownerDocument.defaultView.requestAnimationFrame(this._updateControlBarVisibility.bind(this)))))},t.prototype._updateControlBarVisibility=function(){this._rafId=null,null!==this._controlBar&&this._controlBar.classList.toggle("control-bar--hidden",!this._controlBarVisible)},t.prototype._updateBackBtnPosition=function(){if("left"===this._priceAxisName||"right"===this._priceAxisName){var t=this._chart.getPriceAxisMaxWidthByName(this._priceAxisName)+14;t&&null!==this._back&&(this._back.style.marginRight=t+"px")}},t.prototype._updateBgBarStyle=function(){var t,e,i;if(null!==this._chartModel){for(t=Object(r.getLuminance)(this._chartModel.model().properties().paneProperties.background.value())<.5,e=0,i=Object.values(this._buttons);e(l=r[o]).leftPartWidth,d=s-i>l.rightPartWidth,u=!h||!d,void 0!==(c=this._getBtnGroup(l.className))&&u!==c.classList.contains("js-hidden")&&(c.classList.toggle("js-hidden",u),this._updateControlBarPosition())},t.prototype._getBtnGroup=function(t){if(null!==this._btnGroups)return this._btnGroups.find(function(e){return e.classList.contains(t)})},t.prototype._updateControlBarPosition=function(){var t,e;null!==this._widget&&null!==this._controlBar&&(t=0,t=(e=this._controlBar.querySelectorAll(".js-btn-group:not(.js-hidden)")).length>0?86*e.length:50,this._widget.style.left="calc(50% - "+Math.ceil(t/2)+"px)")},t.prototype._updateResetScalesButtonVisibility=function(){if(null!==this._chartModel){var t=this._chartModel.model().isScalesResetAvailable();this._buttons.turn.classList.toggle(L,!t)}},t.prototype._move=function(t){var e,i,s,n=this;null!==this._chartModel&&"stop"===this._state&&this._chartModel.beginUndoMacro(1===t?"Move Left":"Move Right"),this._state=B.stop,this._moveType="animated",this._deferredFinishTimeout&&(clearTimeout(this._deferredFinishTimeout),this._deferredFinishTimeout=0),this._finishingTimeout&&(clearTimeout(this._finishingTimeout),this._finishingTimeout=0),this._startTime=Date.now(),0===this._movingTimeout&&(e=this._startTime,i=10,s=function(){n._moveStep(e,0,50*t,1e3),n._movingTimeout=setTimeout(s,i)},this._movingTimeout=setTimeout(s,i))},t.prototype._moveStep=function(t,e,i,s){var n,o,r;return null===this._chartModel||this._chartModel.timeScale().isEmpty()?void 0:((n=Date.now())1||!isFinite(o))&&(o=1),r=1-Math.pow(1-o,3),this._currentDistance=(i-e)*r+e,this._chartModel.scrollChart(this._currentDistance),o)},t.prototype._finishMove=function(){var t,e,i,s=this;clearTimeout(this._movingTimeout),this._movingTimeout=0,this._deferredFinishTimeout=0,t=this._currentDistance,e=Date.now(),i=function(){var n=s._moveStep(e,t,0,700);n&&n<1?s._finishingTimeout=setTimeout(i,10):null!==s._chartModel&&(s._state=B.wait_finishing,s._moveType="",s._movingTimeout=0,s._currentDistance=0,s._chartModel.endUndoMacro())},this._finishingTimeout=setTimeout(i,10)},t.prototype._stopMove=function(){"moving"===this._state&&(this._state=B.moving,Date.now()-this._startTime<200?this._deferredFinishTimeout=setTimeout(this._finishMove.bind(this),200-(Date.now()-this._startTime)):this._finishMove())},t.prototype._moveByBar=function(t){var e,i,s,n,o,r,l=this;if(null!==this._chartModel){if((e=this._chartModel.timeScale()).isEmpty())return;"stop"===this._state&&this._chartModel.beginUndoMacro(1===t?"Move Left":"Move Right"), +null!==e.visibleBarsStrictRange()&&(i=e.indexToCoordinate(e.visibleBarsStrictRange().lastBar())+e.barSpacing()/2,Math.abs(e.width()-i)>e.barSpacing()/6&&this._chartModel.scrollChart(e.width()-i)),this._state=B.stop,this._moveType="by_bar",this._startTime=Date.now(),this._movingTimeout||(s=0,n=150,o=400,r=function(){l._moveByBarStep(t),s++,n>100&&(n-=s/5*20),l._movingTimeout=setTimeout(r,n)},this._movingTimeout=setTimeout(r,o),this._moveByBarStep(t))}},t.prototype._moveByBarStep=function(t){if(null!==this._chartModel){if(this._chartModel.timeScale().isEmpty())return;this._chartModel.scrollChartByBar(t)}},t.prototype._stopMoveByBar=function(){"moving"===this._state&&(clearTimeout(this._movingTimeout),this._movingTimeout=0,this._state=B.wait_finishing,this._moveType="",this._movingTimeout=0,this._currentDistance=0,null!==this._chartModel&&this._chartModel.endUndoMacro())},t.prototype._keydownHandler=function(t){var e,i;t.metaKey||37!==(e=t.which)&&39!==e||this._pressedKey[e]||(this._pressedKey[e]=!0,t.target.closest("input, textarea")||(i=37===e?1:-1,t.ctrlKey||t.altKey?this._move(i):this._moveByBar(i),t.preventDefault()))},t.prototype._keyupHandler=function(t){var e=t.which;37!==e&&39!==e||t.target.closest("input, textarea")||(this._pressedKey[t.which]=!1,"by_bar"===this._moveType?this._stopMoveByBar():this._stopMove())},t.prototype._trackEvent=function(t){0},t}()},VLql:function(t,e){t.exports=''},c44J:function(t,e){t.exports=''},cgDJ:function(t,e){t.exports=''},e2QN:function(t,e){t.exports=''},e8Rm:function(t,e){t.exports=''},jrhZ:function(t,e,i){},kGiK:function(t,e){t.exports=''},koft:function(t,e,i){"use strict";function s(t,e,i){this._model=e, +this._paneWidget=t,this._chart=t._chart,this._mainDiv=i,this.jqDiv=$('
'),this._initVisibility(),this.update(),this.jqDiv.appendTo(i)}var n=i("1ANp");s.prototype.updateThemedColors=function(t){t?this.jqDiv[0].style.color=t:this.jqDiv[0].style.removeProperty("color")},s.prototype.update=function(){var t,e,s,n,o,r,l,a=this._paneWidget.state();if(a)if(this._visible&&this._chart.isActive()){if(this.jqDiv[0].classList.remove("pane-controls--hidden"),e=(t=this)._model.panes().indexOf(a),s=Modernizr.mobiletouch,this.jqDiv.toggleClass("toppane",0===e||this._chart.isMaximizedPane()),n=!1,!a.containsMainSeries()&&!this._chart.isMaximizedPane()){for(o=0,l=(r=a.dataSources()).length;l--;)if(r[l]instanceof TradingView.Study&&++o>1){n=!0;break}r=null}e>0&&!this._chart.isMaximizedPane()&&!s?(this._$upButton||(this._$upButton=$(document.createElement("a")).addClass("pane-legend-icon up").append($(i("C+zC"))).attr("title",$.t("Move Up")).on("click",function(){t._model.rearrangePanes(t._chart,t._model.panes().indexOf(t._paneWidget.state()),"up")})),this._$upButton.appendTo(this.jqDiv)):this._$upButton&&this._$upButton.detach(),e1&&!this._chart.isMaximizedPane()&&!s?(this._$maximizeButton||(this._$maximizeButton=$(document.createElement("a")).addClass("pane-legend-icon maximize").append($(i("c44J"))).attr("title",$.t("Toggle Maximize Pane")).on("click",function(){t._chart.toggleMaximizePane(t._paneWidget)})),this._$maximizeButton.appendTo(this.jqDiv)):this._$maximizeButton&&this._$maximizeButton.detach(),this._model.panes().length>1&&this._chart.isMaximizedPane()?(this._$restoreButton||(this._$restoreButton=$(document.createElement("a")).addClass("pane-legend-icon restore").append($(i("kGiK"))).attr("title",$.t("Toggle Maximize Pane")).on("click",function(){t._chart.toggleMaximizePane(t._paneWidget)})),this._$restoreButton.appendTo(this.jqDiv)):this._$restoreButton&&this._$restoreButton.detach()}else this.jqDiv[0].classList.add("pane-controls--hidden")},s.prototype.destroy=function(){this._visibilityProperty&&(this._visibilityProperty.unsubscribe(this,this._onVisibilityPropertyChange),this._visibilityProperty=null),this._boundMouseHandler&&(this._mainDiv[0].removeEventListener("mouseenter",this._boundMouseHandler,!1), +this._mainDiv[0].removeEventListener("mouseleave",this._boundMouseHandler,!1),this._boundMouseHandler=null),this.jqDiv.remove()},s.prototype._initVisibility=function(){this._visible=!0,this._visibilityProperty=n.actualBehavior(),this._visibilityProperty.subscribe(this,this._onVisibilityPropertyChange),this._onVisibilityPropertyChange()},s.prototype._onVisibilityPropertyChange=function(){var t=this._visibilityProperty.value();"alwaysOn"===t||"alwaysOff"===t?(this._visible="alwaysOn"===t,this._boundMouseHandler&&(this._mainDiv[0].removeEventListener("mouseenter",this._boundMouseHandler),this._mainDiv[0].removeEventListener("mouseleave",this._boundMouseHandler),this._boundMouseHandler=null)):(this._boundMouseHandler||(this._boundMouseHandler=this._visibilityMouseHandler.bind(this),this._mainDiv[0].addEventListener("mouseenter",this._boundMouseHandler),this._mainDiv[0].addEventListener("mouseleave",this._boundMouseHandler)),this._visible=!1),this.update()},s.prototype._visibilityMouseHandler=function(t){this._visible="mouseenter"===t.type,this.update()},t.exports=s},qfuz:function(t,e){t.exports=''},sGj7:function(t,e){t.exports=''},scAS:function(t,e){t.exports=''},vg09:function(t,e){t.exports=''}}]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/clipboard.5403f9bd852af06addff.js b/public/charting_library/static/bundles/clipboard.5403f9bd852af06addff.js new file mode 100644 index 0000000..480d316 --- /dev/null +++ b/public/charting_library/static/bundles/clipboard.5403f9bd852af06addff.js @@ -0,0 +1,4 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([["clipboard"],{Ddwv:function(t,e,n){var o,i,r;i=[t,n("YDNs"),n("wOJ8"),n("TiCD")],void 0===(r="function"==typeof(o=function(t,e,n,o){"use strict";function i(t){return t&&t.__esModule?t:{default:t}}function r(t,e){var n="data-clipboard-"+t;if(e.hasAttribute(n))return e.getAttribute(n)}var a=i(e),c=i(n),l=i(o),u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},s=function(){function t(t,e){var n,o;for(n=0;n0&&void 0!==arguments[0]?arguments[0]:{};this.action="function"==typeof t.action?t.action:this.defaultAction,this.target="function"==typeof t.target?t.target:this.defaultTarget,this.text="function"==typeof t.text?t.text:this.defaultText,this.container="object"===u(t.container)?t.container:document.body}},{key:"listenClick",value:function(t){var e=this;this.listener=(0,l.default)(t,"click",function(t){return e.onClick(t)})}},{key:"onClick",value:function(t){var e=t.delegateTarget||t.currentTarget;this.clipboardAction&&(this.clipboardAction=null),this.clipboardAction=new a.default({action:this.action(e),target:this.target(e),text:this.text(e),container:this.container,trigger:e,emitter:this})}},{key:"defaultAction",value:function(t){return r("action",t)}},{key:"defaultTarget",value:function(t){var e=r("target",t);if(e)return document.querySelector(e)}},{key:"defaultText",value:function(t){return r("text",t)}},{key:"destroy",value:function(){this.listener.destroy(),this.clipboardAction&&(this.clipboardAction.destroy(),this.clipboardAction=null)}}],[{key:"isSupported",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["copy","cut"],e="string"==typeof t?[t]:t,n=!!document.queryCommandSupported;return e.forEach(function(t){n=n&&!!document.queryCommandSupported(t)}),n}}]),e}(c.default);t.exports=f})?o.apply(e,i):o)||(t.exports=r)},TiCD:function(t,e,n){var o=n("b+/x"),i=n("jFDo");t.exports=function(t,e,n){ +if(!t&&!e&&!n)throw new Error("Missing required arguments");if(!o.string(e))throw new TypeError("Second argument must be a String");if(!o.fn(n))throw new TypeError("Third argument must be a Function");if(o.node(t))return function(t,e,n){return t.addEventListener(e,n),{destroy:function(){t.removeEventListener(e,n)}}}(t,e,n);if(o.nodeList(t))return function(t,e,n){return Array.prototype.forEach.call(t,function(t){t.addEventListener(e,n)}),{destroy:function(){Array.prototype.forEach.call(t,function(t){t.removeEventListener(e,n)})}}}(t,e,n);if(o.string(t))return function(t,e,n){return i(document.body,t,e,n)}(t,e,n);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}},YDNs:function(t,e,n){var o,i,r;i=[t,n("gvr7")],void 0===(r="function"==typeof(o=function(t,e){"use strict";var n,o=(n=e)&&n.__esModule?n:{default:n},i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r=function(){function t(t,e){var n,o;for(n=0;n0&&void 0!==arguments[0]?arguments[0]:{};this.action=t.action,this.container=t.container,this.emitter=t.emitter,this.target=t.target,this.text=t.text,this.trigger=t.trigger,this.selectedText=""}},{key:"initSelection",value:function(){this.text?this.selectFake():this.target&&this.selectTarget()}},{key:"selectFake",value:function(){var t,e=this,n="rtl"==document.documentElement.getAttribute("dir");this.removeFake(),this.fakeHandlerCallback=function(){return e.removeFake()},this.fakeHandler=this.container.addEventListener("click",this.fakeHandlerCallback)||!0,this.fakeElem=document.createElement("textarea"),this.fakeElem.style.fontSize="12pt",this.fakeElem.style.border="0",this.fakeElem.style.padding="0",this.fakeElem.style.margin="0",this.fakeElem.style.position="absolute",this.fakeElem.style[n?"right":"left"]="-9999px",t=window.pageYOffset||document.documentElement.scrollTop,this.fakeElem.style.top=t+"px",this.fakeElem.setAttribute("readonly",""),this.fakeElem.value=this.text,this.container.appendChild(this.fakeElem),this.selectedText=(0,o.default)(this.fakeElem),this.copyText()}},{key:"removeFake",value:function(){this.fakeHandler&&(this.container.removeEventListener("click",this.fakeHandlerCallback),this.fakeHandler=null,this.fakeHandlerCallback=null),this.fakeElem&&(this.container.removeChild(this.fakeElem),this.fakeElem=null)}},{key:"selectTarget",value:function(){this.selectedText=(0,o.default)(this.target),this.copyText()}},{key:"copyText",value:function(){var t=void 0;try{ +t=document.execCommand(this.action)}catch(e){t=!1}this.handleResult(t)}},{key:"handleResult",value:function(t){this.emitter.emit(t?"success":"error",{action:this.action,text:this.selectedText,trigger:this.trigger,clearSelection:this.clearSelection.bind(this)})}},{key:"clearSelection",value:function(){this.trigger&&this.trigger.focus(),window.getSelection().removeAllRanges()}},{key:"destroy",value:function(){this.removeFake()}},{key:"action",set:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"copy";if(this._action=t,"copy"!==this._action&&"cut"!==this._action)throw new Error('Invalid "action" value, use either "copy" or "cut"')},get:function(){return this._action}},{key:"target",set:function(t){if(void 0!==t){if(!t||"object"!==(void 0===t?"undefined":i(t))||1!==t.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===this.action&&t.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===this.action&&(t.hasAttribute("readonly")||t.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');this._target=t}},get:function(){return this._target}}]),t}();t.exports=a})?o.apply(e,i):o)||(t.exports=r)},"b+/x":function(t,e){e.node=function(t){return void 0!==t&&t instanceof HTMLElement&&1===t.nodeType},e.nodeList=function(t){var n=Object.prototype.toString.call(t);return void 0!==t&&("[object NodeList]"===n||"[object HTMLCollection]"===n)&&"length"in t&&(0===t.length||e.node(t[0]))},e.string=function(t){return"string"==typeof t||t instanceof String},e.fn=function(t){return"[object Function]"===Object.prototype.toString.call(t)}},gvr7:function(t,e){t.exports=function(t){var e,n,o,i;return"SELECT"===t.nodeName?(t.focus(),e=t.value):"INPUT"===t.nodeName||"TEXTAREA"===t.nodeName?((n=t.hasAttribute("readonly"))||t.setAttribute("readonly",""),t.select(),t.setSelectionRange(0,t.value.length),n||t.removeAttribute("readonly"),e=t.value):(t.hasAttribute("contenteditable")&&t.focus(),o=window.getSelection(),(i=document.createRange()).selectNodeContents(t),o.removeAllRanges(),o.addRange(i),e=o.toString()),e}},jFDo:function(t,e,n){function o(t,e,n,o,r){var a=function(t,e,n,o){return function(n){n.delegateTarget=i(n.target,e),n.delegateTarget&&o.call(t,n)}}.apply(this,arguments);return t.addEventListener(n,a,r),{destroy:function(){t.removeEventListener(n,a,r)}}}var i=n("lNia");t.exports=function(t,e,n,i,r){return"function"==typeof t.addEventListener?o.apply(null,arguments):"function"==typeof n?o.bind(null,document).apply(null,arguments):("string"==typeof t&&(t=document.querySelectorAll(t)),Array.prototype.map.call(t,function(t){return o(t,e,n,i,r)}))}},lNia:function(t,e){var n,o=9;"undefined"==typeof Element||Element.prototype.matches||((n=Element.prototype).matches=n.matchesSelector||n.mozMatchesSelector||n.msMatchesSelector||n.oMatchesSelector||n.webkitMatchesSelector),t.exports=function(t,e){for(;t&&t.nodeType!==o;){ +if("function"==typeof t.matches&&t.matches(e))return t;t=t.parentNode}}},wOJ8:function(t,e){function n(){}n.prototype={on:function(t,e,n){var o=this.e||(this.e={});return(o[t]||(o[t]=[])).push({fn:e,ctx:n}),this},once:function(t,e,n){function o(){i.off(t,o),e.apply(n,arguments)}var i=this;return o._=e,this.on(t,o,n)},emit:function(t){for(var e=[].slice.call(arguments,1),n=((this.e||(this.e={}))[t]||[]).slice(),o=0,i=n.length;o2&&void 0!==arguments[2]?arguments[2]:{};for(w=$.extend({},{title:$.t("Confirm Inputs"),callback:function(t){}},w),n=null,a=(0,o.createDialog)({title:w.title,contentWrapTemplate:'
',width:c,closeOnClickAtOtherDialogs:!0,destroyOnClose:!0,actionsWrapTemplate:'
',isClickOutFn:function(t){var e=n.symbolSearchPopup();if(e)return e[0]!==t.target&&!e[0].contains(t.target)&&void 0},actions:[{name:"apply",type:"primary",text:$.t("Apply"),key:13}]}),r=a,d=(0,l.merge)({},e.defaults.inputs),u=0;uc&&a.$el.css("max-width",m),g.find("input,select").first().focus()},e.instance=function(){return r},o=n("YDhE"),i=n("L9lC"),l=n("ogJP"),a=n("tc+8"),s=(d=a)&&d.__esModule?d:{default:d},n("PVgW"),n("jgM0"),n("KFNk"),c=450,r=null}}]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/confirm-symbol-input-dialog.c72289c830292c73812f.js b/public/charting_library/static/bundles/confirm-symbol-input-dialog.c72289c830292c73812f.js new file mode 100644 index 0000000..be24ec1 --- /dev/null +++ b/public/charting_library/static/bundles/confirm-symbol-input-dialog.c72289c830292c73812f.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([["confirm-symbol-input-dialog"],{kzGG:function(n,o,t){"use strict";function e(n,o,t){var e,i,p,a=$('');a.css({float:"none","box-sizing":"border-box",width:"100%"}),e=null,i=Object(c.createDialog)({title:o||window.t("Add Symbol"),width:400,actions:[{name:"apply",text:window.t("Apply"),type:"primary"}],content:a,isClickOutFn:function(n){if(e&&(n.target===e[0]||e[0].contains(n.target)))return!1}}),p=Object(l.symbolSearchUIService)().bindToInput(a,{callback:function(o){n(o),i.close()},onPopupOpen:function(n){n.css("z-index",i.zIndex),e=n},onPopupClose:function(){e=null}}),i.on("action:apply",function(){p.then(function(n){n.acceptTypeIn()})}),t&&i.on("beforeClose",function(){t()}),i.open()}var i,c,l;t.r(o),t.d(o,"showConfirmSymbolInputDialog",function(){return e}),i=t("P5fv"),t("YFKU"),c=t("YDhE"),l=t("pZll")}}]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/context-menu-renderer.5eff9c34fa03e94b2c1b.js b/public/charting_library/static/bundles/context-menu-renderer.5eff9c34fa03e94b2c1b.js new file mode 100644 index 0000000..a525b8c --- /dev/null +++ b/public/charting_library/static/bundles/context-menu-renderer.5eff9c34fa03e94b2c1b.js @@ -0,0 +1,5 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([["context-menu-renderer"],{"G/dZ":function(e,t,n){e.exports={toolbox:"toolbox-1zer1221-"}},Gpmm:function(e,t,n){e.exports={row:"row-1Gn06tA2-",line:"line-c_e_alAN-",hint:"hint-18i4fysm-"}},K5ke:function(e,t,n){e.exports={loader:"loader-3Pj8ExOX-",item:"item-2n55_7om-","tv-button-loader":"tv-button-loader-SKpJjjYw-",black:"black-eFIQWyf4-",white:"white-2Ma0ajvT-",gray:"gray-24fvVR0S-"}},X64X:function(e,t,n){e.exports={loaderWrap:"loaderWrap-18NjkayD-",loader:"loader-Cgjcl0qz-"}},cbq4:function(e,t,n){"use strict";function o(e){return l.createElement("tr",{className:_.row},l.createElement("td",null,l.createElement("div",{className:_.line})),l.createElement("td",null,l.createElement("div",{className:_.line}),e.hint?l.createElement("div",{className:_.hint},e.hint):null))}function s(e){return l.createElement(C,{icon:w,onClick:e.onClick})}function r(e){return l.createElement(E,{label:l.createElement("div",{className:g.loaderWrap},l.createElement(O.a,{className:g.loader,color:"gray"})),noInteractive:!0,onMouseOver:e.onMouseOver})}function i(e){return l.createElement(E,{label:e.label,noInteractive:!0,disabled:!0,onMouseOver:e.onMouseOver})}var a,l,c,u,p,h,m,d,_,f,v,b,S,y,C,w,E,k,x,N,M,g,O,I,T,D,H,P,A,j;n.r(t),a=n("mrSG"),l=n("q1tI"),c=n("i8i4"),u=n("DTHj"),p=n("RgaO"),h=n("ycI/"),m=n("TSYQ"),d=n("zRdu"),_=n("Gpmm"),f=n("ycgn"),v=n("euMy"),b=n("hn2c"),n("bf9a"),S=n("L/Ed"),y=n("G/dZ"),C=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._handleClick=function(e){t.props.onClick(e.nativeEvent)},t}return a.__extends(t,e),t.prototype.render=function(){return l.createElement("span",{className:y.toolbox,dangerouslySetInnerHTML:{__html:this.props.icon},onClick:this._handleClick,"data-toolbox-icon":!0})},t}(l.PureComponent),w=n("PgQx"),E=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._handleMouseOver=function(e){var n,o,s;(n=e.nativeEvent,o=n.sourceCapabilities,void 0===(s=o&&o.firesTouchEvents)&&(s=Modernizr.touch),s)||t.props.onMouseOver&&t.props.onMouseOver()},t._handleClickToolbox=function(e){e.stopPropagation(),t.props.onClickToolbox&&t.props.onClickToolbox()},t}return a.__extends(t,e),t.prototype.render=function(){return l.createElement(l.Fragment,null,l.createElement("tr",{className:m(f.item,!this.props.noInteractive&&f.interactive,this.props.hovered&&f.hovered,this.props.disabled&&f.disabled,this.props.active&&f.active),onClick:this.props.onClick,onMouseOver:this._handleMouseOver,ref:this.props.reference,"data-action-name":this.props.actionName},l.createElement("td",{className:m(f.iconCell),"data-icon-cell":!0},this._icon()),l.createElement("td",null,l.createElement("div",{className:f.content},l.createElement("span",{className:m(f.label,this.props.checked&&f.checked),"data-label":!0},this.props.label),this._toolbox(),this.props.hasSubItems?l.createElement("span",{className:f.arrowIcon,dangerouslySetInnerHTML:{__html:b},"data-submenu-arrow":!0 +}):null,!this.props.hasSubItems&&this.props.shortcutHint?l.createElement("span",{className:f.shortcut},this.props.shortcutHint):null))),l.createElement("tr",{className:f.subMenu},l.createElement("td",null,this.props.children)))},t.prototype._icon=function(){var e,t;return this.props.checkable?this.props.checked?(e=!this.props.icon&&!this.props.iconChecked,t=this.props.iconChecked||this.props.icon||v,l.createElement("span",{className:m(f.icon,e&&f.checkmark),dangerouslySetInnerHTML:{__html:t},"data-icon-checkmark":e})):this.props.icon?l.createElement("span",{className:f.icon,dangerouslySetInnerHTML:{__html:this.props.icon}}):l.createElement("span",{className:f.icon}):this.props.icon?l.createElement("span",{className:f.icon,dangerouslySetInnerHTML:{__html:this.props.icon}}):null},t.prototype._toolbox=function(){return this.props.toolbox?l.createElement("span",{className:m(f.toolbox,this.props.showToolboxOnHover&&f.showToolboxOnHover),onClick:this._handleClickToolbox,"data-toolbox":!0},this._renderToolboxContent()):null},t.prototype._renderToolboxContent=function(){if(this.props.toolbox)switch(this.props.toolbox.type){case S.ToolboxType.Delete:return l.createElement(s,{onClick:this.props.toolbox.action})}return null},t}(l.PureComponent),k=n("tWVy"),x=n("tITk"),N=n("Ialn"),M=function(e){function t(t){var n=e.call(this,t)||this;return n._itemRef=null,n._handleClick=function(e){e.isDefaultPrevented()||n.state.disabled||(n._hasSubItems()?n._showSubMenu():(n.state.doNotCloseOnClick||Object(k.b)(),n.props.action.execute(),n._trackEvent()))},n._handleClickToolbox=function(){Object(k.b)()},n._showSubMenu=function(){n.props.onShowSubMenu(n.props.action)},n._calcSubMenuPos=function(e,t){var o,s,r,i,a,l,c;return n._itemRef?(s=(o=n._itemRef.getBoundingClientRect()).left,r=o.right,i=o.top,a=document.documentElement.clientWidth,l={x:s-e,y:i},c={x:r,y:i},N.IS_RTL?s<=e?c:l:a-r>=e?c:l):{x:0,y:10}},n._updateState=function(e){n.setState(e.getState())},n._setItemRef=function(e){n._itemRef=e},n.state=a.__assign({},n.props.action.getState()),n}return a.__extends(t,e),t.prototype.componentDidMount=function(){this.props.action.onUpdate().subscribe(this,this._updateState)},t.prototype.componentWillUnmount=function(){this.props.action.onUpdate().unsubscribe(this,this._updateState)},t.prototype.render=function(){return l.createElement(E,a.__assign({reference:this._setItemRef,onClick:this._handleClick,onClickToolbox:this._handleClickToolbox,onMouseOver:this._showSubMenu,hovered:this.props.isSubMenuOpened,hasSubItems:this._hasSubItems(),actionName:this.state.name},this.state),l.createElement(A,{isOpened:this.props.isSubMenuOpened,items:this.state.subItems,position:this._calcSubMenuPos,menuStatName:this.props.menuStatName,parentStatName:this._getStatName()}))},t.prototype._hasSubItems=function(){return this.state.subItems.length>0},t.prototype._trackEvent=function(){var e=this._getStatName();Object(x.trackEvent)("ContextMenuClick",this.props.menuStatName||"",e)},t.prototype._getStatName=function(){ +return[this.props.parentStatName,this.state.statName].filter(function(e){return Boolean(e)}).join(".")},t}(l.PureComponent),g=n("X64X"),O=n("ntfI"),I=n("4O8T"),T=n.n(I),D=function(e){function t(t){var n=e.call(this,t)||this;return n._loadEmitter=new T.a,n._onDone=function(){n.setState({loaded:!0,failed:!1})},n._onFail=function(e){n.setState({failed:!0,error:e})},n._handleMouseOver=function(){n.props.onShowSubMenu(n.props.action)},n.state={loaded:n.props.action.isLoaded(),failed:!1,error:""},n}return a.__extends(t,e),t.prototype.componentDidMount=function(){this._loadEmitter.on("done",this._onDone),this._loadEmitter.on("fail",this._onFail),this._load()},t.prototype.componentWillUnmount=function(){this._loadEmitter.removeEvent("done"),this._loadEmitter.removeEvent("fail")},t.prototype.render=function(){return this.state.failed?l.createElement(i,{label:this.state.error,onMouseOver:this._handleMouseOver}):this.state.loaded?l.createElement(M,a.__assign({},this.props)):l.createElement(r,{onMouseOver:this._handleMouseOver})},t.prototype._load=function(){var e=this;this.props.action.loadOptions().then(function(){e._loadEmitter.emit("done")}).catch(function(t){e._loadEmitter.emit("fail",t)})},t}(l.PureComponent),H=function(e){function t(t){var n=e.call(this,t)||this;return n._handleShowSubMenu=function(e){var t=e.getState();n.setState({showSubMenuOf:t.subItems.length?e:void 0})},n.state={},n}return a.__extends(t,e),t.prototype.render=function(){var e=this;return l.createElement("table",null,l.createElement("tbody",null,this.props.items.map(function(t){return e._item(t)})))},t.getDerivedStateFromProps=function(e,t){return!e.parentIsOpened&&t.showSubMenuOf?{showSubMenuOf:void 0}:null},t.prototype._item=function(e){switch(e.type){case d.a.Separator:return l.createElement(o,{key:e.id,hint:e.getHint()});case d.a.Action:return l.createElement(M,{key:e.id,action:e,onShowSubMenu:this._handleShowSubMenu,isSubMenuOpened:this.state.showSubMenuOf===e,menuStatName:this.props.menuStatName,parentStatName:this.props.parentStatName});case d.a.ActionAsync:return l.createElement(D,{key:e.id,action:e,onShowSubMenu:this._handleShowSubMenu,isSubMenuOpened:this.state.showSubMenuOf===e,menuStatName:this.props.menuStatName,parentStatName:this.props.parentStatName});default:return null}},t}(l.PureComponent),P=n("t3rk"),A=function(e){function t(t){var n=e.call(this,t)||this;return n._handleClose=function(){n.props.onClose&&n.props.onClose()},n._handleOutsideClickClose=function(e){var t=n.props,o=t.doNotCloseOn,s=t.onClose;!s||void 0!==o&&o.contains(e.target)||s()},n.state={},n}return a.__extends(t,e),t.prototype.render=function(){var e=this.props,t=e.isOpened,n=(e.onClose,e.items),o=(e.doNotCloseOn,e.menuStatName),s=e.parentStatName,r=a.__rest(e,["isOpened","onClose","items","doNotCloseOn","menuStatName","parentStatName"]);return t?l.createElement(p.a,{handler:this._handleOutsideClickClose,mouseDown:!0,touchStart:!0,ctor:"div"},l.createElement(h.a,{keyCode:27,eventType:"keyup",handler:this._handleClose}),l.createElement(u.a,a.__assign({},r,{ +isOpened:this.props.isOpened,className:m(P.menu,"context-menu"),onClose:this._handleClose,noMomentumBasedScroll:!0}),l.createElement(H,{items:n,menuStatName:o,parentStatName:s,parentIsOpened:t}))):null},t}(l.PureComponent),n.d(t,"ContextMenuRenderer",function(){return j}),j=function(){function e(e,t,n,o){this._root=null,this._isShown=!1,this._props={isOpened:!1,items:e,position:{x:0,y:0},menuStatName:t.statName},this._onDestroy=n,this._onShow=o}return e.prototype.show=function(e,t,n){var o=this;this._onShow&&this._onShow(),this._isShown=!0,this._render(a.__assign({},this._props,{position:function(t,o){return"function"==typeof e&&(e=e(t,o)),e.touches&&e.touches.length>0&&(e={clientX:e.touches[0].clientX,clientY:e.touches[0].clientY}),{x:!n&&N.IS_RTL?e.clientX-t:e.clientX,y:e.clientY,overrideHeight:e.overrideHeight}},isOpened:!0,onClose:function(){o.hide(),o.destroy()},doNotCloseOn:t}))},e.prototype.hide=function(){this._isShown=!1,this._render(a.__assign({},this._props,{isOpened:!1}))},e.prototype.isShown=function(){return this._isShown},e.prototype.destroy=function(){this._isShown=!1,this._root&&(c.unmountComponentAtNode(this._root),document.body.removeChild(this._root),this._root=null),this._onDestroy&&this._onDestroy()},e.prototype._render=function(e){this._root||(this._root=document.createElement("span"),this._root.className="context-menu-wrapper",document.body.appendChild(this._root)),c.render(l.createElement(A,e),this._root)},e}()},euMy:function(e,t){e.exports=''},hn2c:function(e,t){e.exports=''},ntfI:function(e,t,n){"use strict";var o,s,r,i,a,l,c;n.d(t,"a",function(){return c}),o=n("mrSG"),s=n("q1tI"),r=n("TSYQ"),i=n("j1f4"),a=n("K5ke"),function(e){e[e.Initial=0]="Initial",e[e.Appear=1]="Appear",e[e.Active=2]="Active"}(l||(l={})),c=function(e){function t(t){var n=e.call(this,t)||this;return n._stateChangeTimeout=null,n.state={state:l.Initial},n}return o.__extends(t,e),t.prototype.render=function(){var e,t=this.props,n=t.className,o=t.color,i=void 0===o?"black":o,l=r(a.item,((e={})[a[i]]=Boolean(i),e));return s.createElement("span",{className:r(a.loader,n,this._getStateClass())},s.createElement("span",{className:l}),s.createElement("span",{className:l}),s.createElement("span",{className:l}))},t.prototype.componentDidMount=function(){var e=this;this.setState({state:l.Appear}),this._stateChangeTimeout=setTimeout(function(){e.setState({state:l.Active})},2*i.dur)},t.prototype.componentWillUnmount=function(){this._stateChangeTimeout&&(clearTimeout(this._stateChangeTimeout),this._stateChangeTimeout=null)},t.prototype._getStateClass=function(){switch(this.state.state){case l.Initial:return"loader-initial";case l.Appear:return"loader-appear";default:return""}},t}(s.PureComponent)}, +t3rk:function(e,t,n){e.exports={menu:"menu-1y0eDKzl-"}},"ycI/":function(e,t,n){"use strict";var o,s,r;n.d(t,"a",function(){return r}),o=n("mrSG"),s=n("q1tI"),r=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._handleKeyDown=function(e){e.keyCode===t.props.keyCode&&t.props.handler(e)},t}return o.__extends(t,e),t.prototype.componentDidMount=function(){document.addEventListener(this.props.eventType||"keydown",this._handleKeyDown,!1)},t.prototype.componentWillUnmount=function(){document.removeEventListener(this.props.eventType||"keydown",this._handleKeyDown,!1)},t.prototype.render=function(){return null},t}(s.PureComponent)},ycgn:function(e,t,n){e.exports={item:"item-stVdeCwG-",interactive:"interactive-3E0jwVyG-",hovered:"hovered-2HCCgw6c-",disabled:"disabled-2K7FyUI3-",active:"active-muW4lycL-",shortcut:"shortcut-2P38AivB-",iconCell:"iconCell-OhwVvlgA-",icon:"icon-3DDcYD-t-",checkmark:"checkmark-2UE1siCn-",content:"content-1GXgstZ5-",label:"label-1If3beUH-",checked:"checked-5eQn8630-",toolbox:"toolbox-2XX2mSNw-",showToolboxOnHover:"showToolboxOnHover-iCrUIcOG-",arrowIcon:"arrowIcon-2FMesq_x-",subMenu:"subMenu-QM4GIDtY-"}}}]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/create-dialog.472fe015128398f27a86.js b/public/charting_library/static/bundles/create-dialog.472fe015128398f27a86.js new file mode 100644 index 0000000..7c94446 --- /dev/null +++ b/public/charting_library/static/bundles/create-dialog.472fe015128398f27a86.js @@ -0,0 +1,6 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([["create-dialog"],{"33OQ":function(t,e,i){"use strict";(function(o){function s(){d.width=window.innerWidth,d.height=p.height()}function n(t){var e=d.device;d.device=t,d.trigger("changeDevice",[t,e])}var r,h,a,l,p,c,d,u,_,g,f,v;for(Object.defineProperty(e,"__esModule",{value:!0}),r=i("4O8T"),h=(f=r)&&f.__esModule?f:{default:f},a=i("BI5g"),l=$("body"),p=$(window),c=0,d={width:null,height:null,device:null,isSafari:!!navigator.userAgent.match(/Version\/[\d\.]+.*Safari/)||!!navigator.userAgent.match("CriOS"),getScrollbarWidth:(v=void 0,function(){var t,e,i,o;return void 0===v&&((t=document.createElement("div")).style.visibility="hidden",t.style.width="100px",t.style.msOverflowStyle="scrollbar",document.body.appendChild(t),e=t.offsetWidth,t.style.overflow="scroll",(i=document.createElement("div")).style.width="100%",t.appendChild(i),o=i.offsetWidth,t.parentNode.removeChild(t),v=e-o),v}),hasScroll:function(t){return t.get(0).scrollHeight>t.height()},breakpoints:a.breakpoints,widgetbarBreakpoint:1064,setFixedBodyState:function(t){var e,i;t&&1==++c?("hidden"!==$(document.body).css("overflow").toLowerCase()&&document.body.scrollHeight>document.body.offsetHeight&&($(".widgetbar-wrap").css("right",d.getScrollbarWidth()),l.css("padding-right",parseInt(l.css("padding-right").replace("px",""))+d.getScrollbarWidth()+"px").data("wasScroll",!0)),l.addClass("i-no-scroll")):!t&&c>0&&0==--c&&(l.removeClass("i-no-scroll"),l.data("wasScroll")&&(e=l.get(0),$(".widgetbar-wrap").css("right",0),i=$(".widgetbar-wrap").width()||0,e.scrollHeight<=e.clientHeight&&(i-=d.getScrollbarWidth()),l.css("padding-right",(i<0?0:i)+"px").data("wasScroll",void 0)))}},u=Object.keys(d.breakpoints).sort(function(t,e){return d.breakpoints[t]-d.breakpoints[e]}),o.extend(d,h.default.prototype),s(),$(s),p.on("resize",s),_=function(t){var e,i,o=u[t],r=0===t?0:d.breakpoints[u[t-1]]+1,h=d.breakpoints[o],a=(e=r,(i=h)===1/0?window.matchMedia("(min-width: "+e+"px)"):window.matchMedia("(min-width: "+e+"px) and (max-width: "+i+"px)"));a.matches&&n(o),a.addListener(function(t){t.matches&&(s(),n(o))})},g=0;g').appendTo(this._$wrapper)),!1!==this._options.showBottomShadow&&(this._$shadowBottom=$('
').appendTo(this._$wrapper)),this._$shadowTop&&this._header_height&&this._$shadowTop.css("top",this._header_height-this._shadow_offset),n=this._options.additionalClass?" "+this._options.additionalClass:"",r=this._options.alwaysVisible?" active-always":"",this._$scrollBarWrapper=$('
').appendTo(this._$wrapper),this._$scrollBar=$('
').appendTo(this._$scrollBarWrapper),this._onScroll()}var s,n=i("5qpw").lazyJqueryUI;i("nzny"),s=i("pLUm"),o.prototype.isTouch=function(){return this._touch},o.prototype.getScrollBar=function(){return this._$scrollBar},o.prototype._defaultOptions={headerHeight:0,additionalClass:"",alwaysVisible:!1,showBottomShadow:!0,scrollMarginTop:1,bubbleScrollEvent:!1},o.prototype.initDraggable=function(){if(this._dragInitialized)return this;var t=this;return n(this._$scrollBar).draggable({axis:"y",containment:this._$scrollBarWrapper,start:function(){t._dragging=!0},stop:function(){t._dragging=!1},drag:function(e,i){t.updateScroll()}}),this._dragInitialized=!0,this},o.prototype.updateScroll=function(){var t,e,i,o,s;return this._touch?this:(t=1,e=Math.ceil(this._$scrollBar.position().top-this._scroll_margin_top-this._header_height),i=this.getContainerHeightWithoutHeader(),s=(o=this._$content.outerHeight())-i-t,i<=0?this:(this._scroll_target_top=s<=0?this._header_height:Math.min(-e*o/i+this._header_height,this._header_height),e+this._$scrollBar.height()+2>=i?this.scrollToEnd():(this._$content.css("top",this._scroll_target_top+"px"),this._onScroll()),this))},o.prototype.getContainerHeightWithoutHeader=function(){return this._$wrapper[0].getBoundingClientRect().height-this._header_height},o.prototype.getContainerHeight=function(){return this._$wrapper[0].getBoundingClientRect().height}, +o.prototype.getContentHeight=function(){return this._$content[0].getBoundingClientRect().height},o.prototype.updateScrollBar=function(){var t,e,i,o,s,n,r,h,a;return this._touch?this:(t=1,e=this._$content.position().top,i=this.getContentHeight(),o=this.getContainerHeight(),s=this.getContainerHeightWithoutHeader(),n=t+this._header_height,r=s-2*t,h=(Math.abs(e)-this._header_height)*r/i,a=o*o/i,this.isContentShort()?(this._$scrollBar.addClass("js-hidden"),this._$wrapper.removeClass("sb-scroll-active")):(this._$scrollBar.removeClass("js-hidden").height(a).css("top",n+h),this._$wrapper.addClass("sb-scroll-active"),this.initDraggable()),this)},o.prototype.scroll=function(t,e){var i=this._$content.position().top,o=this._$content.outerHeight(),s=this.getContainerHeightWithoutHeader(),n=o-s-1,r=e||this._scroll_speed;return n<=0||(this._scroll_target_top=Math.max(-n+this._header_height,Math.min(this._header_height,i+t*r)),this.setContentTop(this._scroll_target_top),this._onScroll())},o.prototype.animateTo=function(t){var e;return this._touch?this:(e=this._$content.outerHeight()-this.getContainerHeightWithoutHeader()-1)<=0||(this._scroll_target_top=Math.max(-e+this._header_height,Math.min(this._header_height,-t)),void this._$content.animate({top:this._scroll_target_top},500,function(){this._onScroll()}.bind(this)))},o.prototype.resize=function(){var t,e;this._bottomFixed||(t=this._$content.outerHeight(),e=this._$wrapper.outerHeight(),!this._options.vAlignBottom&&ts&&t+e.areaHeightn?n-t-e.areaHeight:s-t}else"top"===e.position&&(r=s-t);return this.scroll(r,1),this._onScroll(),!1},o.prototype.scrollToEnd=function(){var t=1,e=this._$content.position().top,i=this._$content.outerHeight(),o=this._$wrapper.outerHeight(),s=i+e,n=i>o?e+(o-s)+t:t;return this.setContentTop(n),this._onScroll(),this},o.prototype.scrollToStart=function(){return this.setContentTop(this._header_height),this._onScroll(),this},o.prototype.currentPosition=function(){return Math.round(this._$content.position().top)},o.prototype.atStart=function(){return Math.round(this._$content.position().top)>=this._header_height},o.prototype.atEnd=function(t){var e,i,o,s;return"number"==typeof t&&isFinite(t)||(t=0),e=1,i=Math.round(this._$content.position().top), +o=this._$content.outerHeight(),s=this._$wrapper.outerHeight(),o-Math.abs(i)-e<=s+t},o.prototype._onScroll=function(t){var e,i;return this._touch||this._$content.css("bottom","auto"),this.scrolled.fire(),this._dragging&&!0!==t||this.updateScrollBar(),e=this.atStart(),i=this.atEnd(),this._$shadowTop&&this._$shadowTop.toggleClass("i-invisible",!!e),this._$shadowBottom&&this._$shadowBottom.toggleClass("i-invisible",!!i),this._onContentVisible(),!this._atStart&&e?(this._atStart=!0,this.scrolltostart.fire()):this._atStart&&!e&&delete this._atStart,!this._atEnd&&i?(this._atEnd=!0,this.scrolltoend.fire()):this._atEnd&&!i&&delete this._atEnd,this._options.vAlignBottom&&(this._stickyBottom=this._$content.outerHeight()-Math.abs(this._$content.position().top)-this._$wrapper.outerHeight()),!(!this._atStart&&!this._atEnd||("function"==typeof this._options.bubbleScrollEvent?!this._options.bubbleScrollEvent():!this._options.bubbleScrollEvent))},o.prototype.checkContentVisibility=function(){this._onContentVisible()},o.prototype.subscribeToContentVisible=function(t,e,i){this.visibilityCallbacks.push({id:t,$el:e,callback:i})},o.prototype.triggerVisibilityCallbacks=function(t){this._onContentVisible(t)},o.prototype._contentIsVisible=function(t){return t.$el.position().top>-1*this.currentPosition()},o.prototype._onContentVisible=function(t){var e,i,o;this.visibilityCallbacks.length&&(e=t||this._contentIsVisible.bind(this),i=[],o=this.visibilityCallbacks.filter(function(t,o){if(!$.contains(this._$content,t.$el[0]))return!1;var s=e(t);return s&&i.push(o),!s},this),i.forEach(function(e){this.visibilityCallbacks[e].callback(!!t)},this),delete this.visibilityCallbacks,this.visibilityCallbacks=o)},o.prototype.save=function(){return this._saved={top:this._$content.position().top,height:this._$content.outerHeight()},this},o.prototype.restore=function(){if(this._saved){if(this._saved.top===this._$content.position().top&&this._saved.height===this._$content.outerHeight())return delete this._saved,this;this._options.vAlignBottom&&(this._saved.top-=this._$content.outerHeight()-this._saved.height,this._saved.top>this._header_height&&(this._saved.top=this._header_height)),this.setContentTop(this._saved.top),delete this._saved,this._onScroll(!0)}return this},o.prototype.fixBottom=function(){var t,e;return this._bottomFixed?this:(this._touch?(t=this._$content.outerHeight(),e=this._$wrapper.scrollTop(),this._tempIntervalID=setInterval(function(){this._$wrapper.scrollTop(e+(this._$content.outerHeight()-t))}.bind(this),0)):this._$content.css({top:"auto",bottom:this._$wrapper.outerHeight()-this._$content.position().top-this._$content.outerHeight()}),this._bottomFixed=!0,this)},o.prototype.releaseBottom=function(){return this._bottomFixed?(this._touch?clearInterval(this._tempIntervalID):this._$content.css({top:this._$content.position().top,bottom:"auto"}),delete this._bottomFixed,this._onScroll(),this):this},o.prototype.setContentTop=function(t){ +return this._touch?this._options.vAlignBottom&&this._$content.outerHeight()'}}]); \ No newline at end of file diff --git a/public/charting_library/static/bundles/crosshair.6c091f7d5427d0c5e6d9dc3a90eb2b20.cur b/public/charting_library/static/bundles/crosshair.6c091f7d5427d0c5e6d9dc3a90eb2b20.cur new file mode 100644 index 0000000000000000000000000000000000000000..10251fa7f7b13d7bb0cc13f41eb85775d2e53fbd GIT binary patch literal 4286 zcmeHHF%E+;5HliyL=m;+1Ns#3T^yJj!fE~EH`N*I z%is7KocDeA#vRS!th2{FkLqv5$8-N`f9a
',containerTemplate:'
',ajaxErrorTemplate:'
'+window.t("Error")+"
"},e.TVModal=function(e){function o(){var t,e,n,s,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,o),(t=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(o.__proto__||Object.getPrototypeOf(o)).call(this,i({},b,r)))).$overlay=$(t.options.overlayTemplate),t.$modalWrap=$(t.options.containerTemplate),t.$body=t.$modalWrap.find(".tv-dialog__modal-body").append(t.$el),t.options.closeOnOutsideClick&&t.$overlay.add(t.$modalWrap).click(function(e){t.isEventOut(e)&&t.close()}),t.on("change:zIndex",function(){t.$overlay.css("z-index",t.zIndex),t.$modalWrap.css("z-index",t.zIndex)}),t.on("destroy",function(){var e=function(){t.$overlay.remove(),t.$modalWrap.remove()};t.opened?(t.close(),setTimeout(e,t.options.closingDuration)):e()}),t.on("beforeOpen",function(){v.push(t)}),t.options.ajax.url&&(e=t.options.ajax.beforeSend||$.noop,n=t.options.ajax.success||!1,s=t.options.ajax.error||$.noop,$.extend(t.options.ajax,{beforeSend:function(){t.trigger("beforeLoading",[t]),t.startSpinner(),e(t)},success:function(e){t.trigger("afterLoading",[t]),t.renderContent(n?n(t,e):e).showContent(),t.trigger("afterLoadingShow",[t])},error:function(){t.renderContent(t.options.ajaxErrorTemplate),s(t),t.trigger("errorLoading",[t])}})),t.on("error",function(e,o){t.$modalWrap[0].getBoundingClientRect().height0&&v[v.length-1].focus(),e.options.destroyOnClose&&e.destroy()},this.options.closingDuration),this}},{key:"showContent",value:function(){var t=this;return this.$modalWrap.removeClass("i-hidden"),setTimeout(function(){t.$modalWrap.removeClass("i-closed")},20),setTimeout(function(){t.trigger("afterOpen",[t]),t.spinner&&t.stopSpinner()},.75*a.dur+20),this}},{key:"hideContent",value:function(){if(this.$el)return this.$modalWrap.addClass("i-closed"),this.unfocus(),this}},{key:"startSpinner",value:function(){return this.spinner=new d.Spinner("large"),this.spinner.spin(this.$overlay[0]),this}},{key:"stopSpinner",value:function(){if(this.spinner)return this.spinner.stop(),delete this.spinner,this}}]),o}()}).call(this,o("F/us"))},KHon:function(t,e,o){"use strict";var n;o.r(e),n=o("v2PZ"),o.d(e,"TVDialogAbstract",function(){return n.TVDialogAbstract}),o.d(e,"closeAllDialogs",function(){return n.closeAllDialogs})},nZrM:function(t,e,o){},nbyR:function(t,e,o){"use strict";var n,i,s,r,a,l,c,u,d,p,h,f,g,v;Object.defineProperty(e,"__esModule",{value:!0}),e.TVPopup=void 0,n=Object.assign||function(t){var e,o,n;for(e=1;e',scrollWrapInner:'
',withScroll:!0},g="js-dialog__scroll-wrap",e.TVPopup=function(t){function e(){var t,o,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),(t=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,n({},f,i)))).$scrollWrap=t.$content.hasClass(g)?t.$content:t.$content.find("."+g),t.$scrollWrap.length?t.$scrollWrapInner=t.$scrollWrap.children().first():(t.$scrollWrap=t.$content.wrap($(t.options.scrollWrap)).parent(),t.$scrollWrapInner=t.$content.wrap($(t.options.scrollWrapInner)).parent()),t.$actions&&t.$scrollWrap.addClass("i-with-actions"),t.options.withScroll&&(t.scroll=new u.SidebarCustomScroll(t.$scrollWrap,t.$scrollWrapInner),t.scroll.scrolled.subscribe(null,function(){return t.trigger("scroll")})),t.$scrollWrap.css("overflow",""),o=t.getDialogId(),t.$el.addClass("tv-dialog--popup i-closed i-hidden"),t.options.width&&t.$el.css({width:"calc(100% - 20px)","max-width":t.options.width}),t.$el.on("mousedown touchstart",t.toTop.bind(t)),t.options.closeOnOutsideClick&&(t._preventClick=!0,t.on("beforeOpen",function(){setTimeout(function(){t.opened&&($(document).on("mousedown touchstart",function(){t._preventClick=!1}),$(document).on("click.tv-popup-"+o,function(e){if(!t._preventClick){var o=$(e.target).closest(".js-dialog");(t.options.closeOnClickAtOtherDialogs||0===o.length)&&t.isEventOut(e)&&t.close()}}))},0)}),t.on("beforeClose",function(){return $(document).off("click.tv-popup-"+o)})),t.on("change:zIndex",function(){t.$el.css("z-index",t.zIndex)}),t.on("destroy",function(){var e=function(){t.$el.remove()};t.opened?(t.close(),setTimeout(e,r.dur/2)):e()}),t}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,c.TVDialogAbstract),i(e,[{key:"open",value:function(){var t,e,o,n,i,s=this;return this.opened?this:(this.opened=!0,this.trigger("beforeOpen",[this]),this.$el.appendTo(this.$wrap).removeClass("i-hidden").css((s.calcHeight(),t=h.height(),e=h.width(),o=s.$el.height(),n=s.$el.width(),(i=s.options.position)||(i={top:t/2-o/2,left:e/2-n/2}),i.top>t-o&&(i.top=t-o),i.left>e-n&&(i.left=e-n),i)),this.focus(),this.toTop(),this._doOpenAnimation().then(function(){ +s.opened&&(s.$el.removeClass("i-closed"),s.options.draggable&&((0,d.lazyJqueryUI)(s.$el).draggable({handle:".js-dialog__drag",cancel:"input, textarea, button, select, option, .js-dialog__no-drag, .js-dialog__close",containment:"window",cursor:"-webkit-grabbing"}),s.$el.find(".js-dialog__drag").addClass("tv-dialog__grab")),s.trigger("afterOpen",[s]))}),h.on("resize.tv-popup-"+this.getDialogId(),function(){s.calcHeight(),s.fixPos()}),this)}},{key:"close",value:function(){var t=this;if(this.opened)return this.trigger("beforeClose",[this]),this.$el.addClass("i-closed"),this.opened=!1,this._doCloseAnimation().then(function(){t.opened||((0,d.lazyJqueryUI)(t.$el).draggable("instance").then(function(t){t&&t.destroy()}),t.$el.addClass("i-hidden").detach(),p.css("cursor","auto"),t.trigger("afterClose",[t]),t.options.destroyOnClose&&t.destroy())}),h.off("resize.tv-popup-"+this.getDialogId()),this}},{key:"hide",value:function(){this.$el.addClass("i-hidden")}},{key:"show",value:function(){this.$el.removeClass("i-hidden")}},{key:"fixPos",value:function(){var t=this.$el[0].getBoundingClientRect(),e={};t.bottom>l.default.height-10&&(e.top=l.default.height-10-t.height,e.top<10&&(e.top=10)),t.right>l.default.width-10&&(e.left=l.default.width-10-t.width,e.left<10&&(e.left=10)),(e.top||e.left)&&this.$el.css(e)}},{key:"calcHeight",value:function(){var t,e,o=this.$el[0].getBoundingClientRect(),n=this.$scrollWrapInner[0].getBoundingClientRect(),i=this.$scrollWrap[0].getBoundingClientRect(),s=this.options.height&&this.options.heights)&&((s-=o.height-i.height)<60&&(s=60),this.$scrollWrap.css({height:s})),this.options.withScroll&&this.scroll.resize(),(e=s'+this.$btn.html()+''),this.loading=this.$btn.hasClass("i-loading")}return n(t,[{key:"_start",value:function(){var t=this;this.starting=!0,this.$btn.addClass("i-start-load"),this.$btn.trigger("tv-button-loader:start"),setTimeout(function(){t.loading=!0,t.starting=!1,t._startPromise=!1,t.$btn.addClass("i-loading"),t.$btn.removeClass("i-start-load"),t._stopPromise&&t._stop()},2*r.dur)}},{key:"start",value:function(){this.starting||(this.stopping?this._startPromise=!0:this._start())}},{key:"_stop",value:function(){var t=this;this.stopping=!0,this.$btn.addClass("i-stop-load"),this.$btn.trigger("tv-button-loader:stop"),setTimeout(function(){t.loading=!1,t.stopping=!1,t._stopPromise=!1,t.$btn.removeClass("i-loading i-start-load i-stop-load"),t._startPromise&&t._start()},r.dur)}},{key:"stop",value:function(){this.stopping||(this.starting?this._stopPromise=!0:this._stop())}},{key:"toggle",value:function(){this.loading?this.stop():this.start()}},{key:"contentHtml",value:function(t){return t?(this.$btn.find(".tv-button__text").html(t),t):this.$btn.find(".tv-button__text").html()}},{key:"contentNojQuery",value:function(){return this.$btn.get(0)}},{key:"disable",value:function(){this.stop(),this.$btn.addClass("i-disabled")}},{key:"enable",value:function(){this.$btn.removeClass("i-disabled")}}]),t}()},tKRU:function(t,e,o){"use strict";var n=o("nbyR");o.d(e,"a",function(){return n.TVPopup})},v2PZ:function(t,e,o){"use strict";(function(t,n){function i(t){return t&&t.__esModule?t:{default:t}}var s,r,a,l,c,u,d,p,h,f,g,v,b,y,_,m,w,k;Object.defineProperty(e,"__esModule",{value:!0}),e.TVDialogAbstract=void 0,s=function(){return function(t,e){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return function(t,e){var o,n,i=[],s=!0,r=!1,a=void 0;try{for(o=t[Symbol.iterator]();!(s=(n=o.next()).done)&&(i.push(n.value),!e||i.length!==e);s=!0);}catch(t){r=!0,a=t}finally{try{!s&&o.return&&o.return()}finally{if(r)throw a}}return i}(t,e);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),r=Object.assign||function(t){var e,o,n;for(e=1;e',errorTemplate:'
{{{ error }}}
',titleTemplate:'
{{{ title }}}
',contentWrapTemplate:'
',actionsWrapTemplate:'
',closeButtonTemplate:'
'+o("uo4K")+"
",helpButtonTemplate:'
',helpActionsMod:"tv-dialog__section--actions_with-help"},m={default:"tv-button tv-button--default",primary:"tv-button tv-button--primary",success:"tv-button tv-button--success",danger:"tv-button tv-button--danger",warning:"tv-button tv-button--warning",link:"tv-button tv-button--link",checkbox:"tv-control-checkbox tv-control-checkbox--in-actions","default-ghost":"tv-button tv-button--default_ghost","primary-ghost":"tv-button tv-button--primary_ghost","success-ghost":"tv-button tv-button--success_ghost","danger-ghost":"tv-button tv-button--danger_ghost","warning-ghost":"tv-button tv-button--warning_ghost"},w={_default:'
{{ text }}
',"submit-success":''},k=function(e){function o(){var e,n,i,a,l,c,u,p,v,k,C,O,T,j,x=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,o),(e=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}(this,(o.__proto__||Object.getPrototypeOf(o)).call(this))).manager=(0,h.getRootOverlapManager)(x.ownerDocument),e._id=f++,e.loadingActions=[],e.disabledActions=[],e.firstFocusControl=null,e.options=r({},_,x),e.$el=$(t.render(e.options.template,{title:e.options.title,closeButton:e.options.closeButton})),e.$el.addClass("js-dialog"),e.el=e.$el[0],e.options.dataset){n=!0,i=!1,a=void 0;try{for(l=Object.entries(e.options.dataset)[Symbol.iterator]();!(n=(c=l.next()).done);n=!0)u=c.value,v=(p=s(u,2))[0],"string"==typeof(k=p[1])&&e.el.setAttribute("data-"+v,k)}catch(t){i=!0,a=t}finally{try{!n&&l.return&&l.return()}finally{if(i)throw a}}}for(e.options.addClass&&e.$el.addClass(e.options.addClass),e.options.width&&e.$el.css({width:"100%","max-width":e.options.width}),e.on("beforeOpen",function(){ +e.$wrap=e.manager.ensureWindow(e._id)}),e.on("afterClose",function(){e.$wrap=null,e.manager.unregisterWindow(e._id)}),e.options.title&&(e.$title=$(t.render(e.options.titleTemplate,{title:e.options.title})).appendTo(e.$el)),e.$content=$(e.options.contentWrapTemplate).appendTo(e.$el),e.$contentIn=e.$content;e.$contentIn.length;)e.$contentIn=e.$contentIn.children();if(e.$contentIn=e.$contentIn.end(),e.options.content&&e.renderContent(e.options.content),(e.options.actions||e.options.help)&&(e.$content.hasClass("tv-dialog__section")&&e.$content.addClass("tv-dialog__section--no-padding_bottom"),e.$actions=$(e.options.actionsWrapTemplate).appendTo(e.$el)),e.options.actions)for(e.actions={},e.$el.on("click touchend",".js-dialog__action-click",function(t){t.preventDefault(),e.actionDispatcher($(t.currentTarget).data("name"))}),C=function(o){var n,i,s,r,a,l,c=e.options.actions[o];c.type||(c.type="default"),c.class||(c.class=m[c.type]?m[c.type]:m.default),"checkbox"===c.type?(n=new d.default({labelRight:c.text,name:c.name,checked:c.checked}),e.actions[c.name]=n.$el.appendTo(e.$actions),e.actions[c.name].on("change",function(){setTimeout(function(){return e.actionDispatcher(c.name,n.checked)})})):e.actions[c.name]=$(t.render(c.template?c.template:w[c.type]||w._default,c,c)).appendTo(e.$actions),c.method&&"function"==typeof e[c.method]&&e.on("action:"+c.name,e[c.method].bind(e)),c.addClass&&e.actions[c.name].addClass(c.addClass),c.key&&(i=void 0,"string"==typeof c.key&&c.key.split("+").length>1?(s=[],r=c.key.split("+"),i=function(t){s=[]},a=function(t){var o=""+t.keyCode;-1!==r.indexOf(o)&&s.indexOf(o)&&s.push(o),e._focused&&s.length===r.length&&(s=[],e.actionDispatcher(c.name))},e.on("afterOpen",function(){y.on("keydown",a),y.on("keyup",i)}),e.on("beforeClose",function(){y.off("keydown",a),y.off("keyup",i)})):(l=$.isArray(c.key)?c.key:[c.key],i=function(t){!t.isDefaultPrevented()&&e._focused&&-1!==l.indexOf(t.keyCode)&&e.actionDispatcher(c.name)},e.on("afterOpen",function(){return y.on("keyup",i)}),e.on("beforeClose",function(){return y.off("keyup",i)})))},O=e.options.actions.length-1;O>=0;O--)C(O);return e.options.help&&$(t.render(e.options.helpButtonTemplate,e.options.help)).prependTo(e.$actions.addClass(e.options.helpActionsMod)),e.options.closeButton&&((T=$(e.options.closeButtonTemplate)).addClass(e.options.closeButtonAddClass||""),j=e.$el,1===e.$el.find(".js-close-button-place").length&&(j=e.$el.find(".js-close-button-place")),T.appendTo(j)),e.setZIndex(b+g.length),x.errorMod&&(e.errorMod=x.errorMod),e.on("afterOpen",function(){e.options.focusFirstControl&&!Modernizr.mobiletouch&&(e.firstFocusControl||e.$el.find('input:not([type="hidden"]), textarea').first()).focus()}),e.$el.on("click",".js-dialog__close",e.close.bind(e)),e.$el.on("mousedown touchstart",e.focus.bind(e)),g.push(e),e}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0, +configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(o,p.default),a(o,[{key:"renderContent",value:function(t){return this.$contentIn.html("function"==typeof t?t(this):t),this}},{key:"setDestroyOnClose",value:function(t){this.options.destroyOnClose=t}},{key:"setZIndex",value:function(t){return this.zIndex=t,this.trigger("change:zIndex",[this]),this}},{key:"toTop",value:function(){for(var t=g.length-1;t>=0;t--)g[t].zIndex>this.zIndex&&g[t].setZIndex(g[t].zIndex-1);return this.setZIndex(b+g.length),this.manager.moveToTop(this._id),this}},{key:"isEventOut",value:function(t){var e,o,n;return this.options.isClickOutFn&&void 0!==(e=this.options.isClickOutFn(t))?e:(o=!0,(n=$(t.target)).get(0)!==this.$el.get(0)&&($(">*",this.$el).each(function(){n.get(0)===$(this).get(0)&&(o=!1),0===n.closest("HTML",$(this).get(0)).length&&(o=!1)}),o))}},{key:"focus",value:function(){var t=this;v&&v!==this&&v.unfocus(),this._setFocused(),this._focused=!0,this.$el.addClass(this.options.focusClass),this.trigger("focus",[this]),setTimeout(function(){y.on("mousedown.tv-dialog-unfocus-"+t._id,function(e){t.isEventOut(e)&&(t.unfocus(),y.off("mousedown.tv-dialog-unfocus-"+t._id))})},20)}},{key:"_setFocused",value:function(){v!==this&&(v=this)}},{key:"_setUnfocused",value:function(){v===this&&(v=void 0)}},{key:"unfocus",value:function(){v===this&&(this._setUnfocused(),this._focused=!1,this.$el.removeClass(this.options.focusClass).find(":focus").blur(),this.trigger("unfocus",[this]))}},{key:"isFocused",value:function(){return this._focused}},{key:"setTitle",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return this.$title.toggleClass("tv-dialog__section--one-line apply-overflow-tooltip",e),this.$title.html(t),this}},{key:"setTitleText",value:function(t){this.$title.find(".js-title-text").text(t)}},{key:"actionDispatcher",value:function(t){if(!this.disabledActions.includes(t)&&!this.loadingActions.includes(t)){for(var e=arguments.length,o=Array(e>1?e-1:0),n=1;n1&&void 0!==arguments[1]?arguments[1]:"init";return this.actions[t].tvButtonLoader(o),"init"===o&&(this.actions[t].off("tv-button-loader:start.dialog-action").on("tv-button-loader:start.dialog-action",function(){e.loadingActions.push(t)}),this.actions[t].off("tv-button-loader:stop.dialog-action").on("tv-button-loader:stop.dialog-action",function(){e.loadingActions=n.without(e.loadingActions,t)})),this}},{key:"error",value:function(e){var o=$(t.render(this.options.errorTemplate,{error:e,errorMod:this.errorMod})).appendTo(this.$el),n=function(){o.addClass("i-slided"),setTimeout(function(){return o.remove()},.75*c.dur)} +;return setTimeout(function(){return o.removeClass("i-slided")},20),y.one("touchstart mousedown keydown",n),this.trigger("error",[this,o]),this}},{key:"destroy",value:function(){this.$wrap=null,this.manager.unregisterWindow(this._id),g=n.without(g,this);for(var t=0;tc1bvI3yV#{u570wIht6H<5d_cGIcobyCJ=%x zSi#Gz{EqH8^X>jB(U?Z$c|;Q&yD8C(h~^NcD1?y3nP`ce4s}2sPzTfjbwC|Z2mW!u z7_)%3&`ILrpSnJt0k0A+v%9ML=x^%*UdGJ2t}j`Z-F@FT9Qj_>lGy59b6{+klcs6Q zW50vziFCtQ54rO3?Cf%UiP23 z?(tVWIHj<<-#%ZLziRu+gB8m<4ie+OdTSqbKphy)0sPNyV}=this.state.heightContent-1},t.prototype.animateTo=function(e,t){if(void 0===t&&(t=F.dur),this._scroll){var o=d.findDOMNode(this._scroll);Object(V.doAnimate)({onStep:function(e,t){o.scrollTop=t},from:o.scrollTop,to:Math.round(e),easing:F.easingFunc.easeInOutCubic,duration:t})}},t.prototype.render=function(){var e,t,o,n,i,r=this,a=this.props,s=a.children,l=a.isVisibleScrollbar,c=a.isVisibleFade,d=a.isVisibleButtons,p=this.state,h=p.heightContent,f=p.heightWrap,g=p.isVisibleBotButton,v=p.isVisibleTopButton;return u.createElement(x,{whitelist:["height"],onMeasure:this._handleResizeWrap},u.createElement("div",{className:I.wrap},u.createElement("div",{className:m(I.scrollWrap,(e={},e[I.noScrollBar]=!l,e)),onScroll:this._handleScroll,ref:function(e){return r._scroll=e}},u.createElement(x,{onMeasure:this._handleResizeContent,whitelist:["height"]},u.createElement("div",{className:I.content},s))),c&&u.createElement("div",{className:m(I.fadeTop,(t={},t[I.isVisible]=v&&h>f,t))}),c&&u.createElement("div",{className:m(I.fadeBot,(o={},o[I.isVisible]=g&&h>f,o))}),d&&u.createElement("div",{className:m(I.scrollTop,(n={},n[I.isVisible]=v&&h>f,n)),onClick:this._handleScrollTop},u.createElement("div",{className:I.iconWrap +},u.createElement(B.a,{icon:R,className:I.icon}))),d&&u.createElement("div",{className:m(I.scrollBot,(i={},i[I.isVisible]=g&&h>f,i)),onClick:this._handleScrollBot},u.createElement("div",{className:I.iconWrap},u.createElement(B.a,{icon:R,className:I.icon})))))},t.defaultProps={isVisibleScrollbar:!0},t}(u.PureComponent),z=o("ycI/"),U=o("WUqb"),G=o("tWVy"),H=o("gb5g"),K=o("wZIs"),q=o("3mf1"),Q=o("9dlw"),J=o("hn2c"),Y=o("KmEK"),X=function(e){function t(t){var o=e.call(this,t)||this;return o._toggleDropdown=function(e){o.setState({isOpened:void 0!==e?e:!o.state.isOpened})},o._handleClose=function(){o._toggleDropdown(!1)},o._getDropdownPosition=function(){if(!o._control)return{x:0,y:0};var e=o._control.getBoundingClientRect();return{x:e.left+e.width+1,y:e.top-6}},o._handleClickArrow=function(){o._toggleDropdown()},o._handleTouchStart=function(){o.props.onClickButton(),o._toggleDropdown()},o._handlePressStart=function(){if(Modernizr.mobiletouch&&!o.props.checkable)o._longPressDelay||o.props.onClickButton();else{if(o._doubleClickDelay)return clearTimeout(o._doubleClickDelay),delete o._doubleClickDelay,void o._toggleDropdown(!0);o._doubleClickDelay=setTimeout(function(){delete o._doubleClickDelay,o._longPressDelay||o.props.onClickButton()},175)}o._longPressDelay=setTimeout(function(){delete o._longPressDelay,o._toggleDropdown(!0)},300)},o._handlePressEnd=function(){o._longPressDelay&&(clearTimeout(o._longPressDelay),delete o._longPressDelay,o.state.isOpened?o._toggleDropdown(!1):o.props.checkable||o.state.isOpened||!o.props.isActive||Modernizr.mobiletouch||o._toggleDropdown(!0))},o.state={isOpened:!1},o}return c.__extends(t,e),t.prototype.render=function(){var e,t=this,o=this.props,n=o.buttonActiveClass,r=o.buttonClass,a=o.buttonIcon,s=o.buttonTitle,l=o.buttonHotKey,c=o.dropdownTooltip,d=o.children,p=o.isActive,h=o.isGrayed,f=o.onClickWhenGrayed,g=o.checkable,v=this.state.isOpened;return u.createElement("div",{className:m(Y.dropdown,(e={},e[Y.isGrayed]=h,e[Y.isActive]=p,e[Y.isOpened]=v,e)),onClick:h?f:void 0},u.createElement("div",{ref:function(e){return t._control=e},className:Y.control},u.createElement("div",{className:m(Y.buttonWrap,{"apply-common-tooltip common-tooltip-vertical":Boolean(s||l)}),"data-tooltip-hotkey":l,"data-tooltip-delay":1500,title:s,onMouseDown:h||Modernizr.mobiletouch?void 0:this._handlePressStart,onMouseUp:h||Modernizr.mobiletouch?void 0:this._handlePressEnd,onTouchStart:!h&&g&&Modernizr.mobiletouch?this._handlePressStart:void 0,onTouchEnd:!h&&g&&Modernizr.mobiletouch?this._handlePressEnd:void 0,onClick:h||g||!Modernizr.mobiletouch?void 0:this._handleTouchStart},u.createElement(i,{activeClass:n,className:r,icon:a,isActive:p,isGrayed:h,isTransparent:!g})),!h&&!Modernizr.mobiletouch&&u.createElement("div",{className:m(Y.arrow,c&&"apply-common-tooltip common-tooltip-vertical"),title:c,onClick:this._handleClickArrow},u.createElement(B.a,{className:Y.arrowIcon,icon:J}))),!h&&u.createElement(Q.a,{doNotCloseOn:this,isOpened:v,onClose:this._handleClose,position:this._getDropdownPosition},d))},t +}(u.PureComponent),Z=o("KKsp"),$=o("EA32"),ee={icon:window.t("Icon"),dropdownTooltip:window.t("Icons")},te=10,oe=function(e){function t(t){var o=e.call(this,t)||this;return o._renderItem=function(e){return u.createElement("div",{className:$.item,key:e,onClick:function(){o._handleSelect(e),Object(G.b)()}},String.fromCharCode(e))},o._onChangeDrawingState=function(){o.setState({isActive:o._isActive()})},o._handleSelect=function(e){var t,n;Object(K.saveDefaults)("linetoolicon",c.__assign({},Object(K.defaults)("linetoolicon"),{icon:e})),v.tool.setValue("LineToolIcon"),-1!==(n=(t=o.state.recents).indexOf(e))&&t.splice(n,1),t=[e].concat(t.slice(0,te-1)),Object(f.setJSON)("linetoolicon.recenticons",t),o.setState({current:e,recents:t})},o.state={current:Object(K.defaults)("linetoolicon").icon,recents:Object(f.getJSON)("linetoolicon.recenticons")||[]},o}return c.__extends(t,e),t.prototype.componentDidMount=function(){v.tool.subscribe(this._onChangeDrawingState),f.onSync.subscribe(this,this._onSyncSettings)},t.prototype.componentWillUnmount=function(){v.tool.unsubscribe(this._onChangeDrawingState),f.onSync.unsubscribe(this,this._onSyncSettings)},t.prototype.render=function(){var e=this,t=this.props,o=t.isGrayed,n=t.toolName,i=this.state,r=i.current,a=i.isActive,s=i.recents;return u.createElement(X,{buttonClass:$.button,buttonIcon:u.createElement("div",{className:$.buttonIcon},String.fromCharCode(r||q.availableIcons[0])),buttonTitle:ee.icon,dropdownTooltip:ee.dropdownTooltip,isActive:a,isGrayed:o,onClickButton:function(){return e._handleSelect(r||q.availableIcons[0])},onClickWhenGrayed:function(){return Object(b.emit)("onGrayedObjectClicked",{type:"drawing",name:T.a[n].localizedName})}},s&&[u.createElement("div",{key:"recent",className:$.wrap},s.map(this._renderItem)),u.createElement(Z.a,{key:"separator"})],u.createElement("div",{key:"all",className:$.wrap},q.availableIcons.map(this._renderItem)))},t.prototype._isActive=function(){return v.tool.value()===this.props.toolName},t.prototype._onSyncSettings=function(){this.setState({recents:Object(f.getJSON)("linetoolicon.recenticons")})},t}(u.Component),ne=o("Ocx9"),ie=function(e){function t(t){var o=e.call(this,t)||this;return o._handleClick=function(){o.props.saveDefaultOnChange&&Object(ne.saveDefaultProperties)(!0),o.props.property.setValue(!o.props.property.value()),o.props.saveDefaultOnChange&&Object(ne.saveDefaultProperties)(!1)},o.state={isActive:o.props.property.value()},o}return c.__extends(t,e),t.prototype.componentDidMount=function(){this.props.property.subscribe(this,this._onChange)},t.prototype.componentWillUnmount=function(){this.props.property.unsubscribe(this,this._onChange)},t.prototype.render=function(){var e=this.props.toolName,t=this.state.isActive,o=T.a[e];return u.createElement(i,{icon:t&&o.iconActive?o.iconActive:o.icon,isActive:t,onClick:this._handleClick,title:o.localizedName})},t.prototype._onChange=function(e){this.setState({isActive:e.value()})},t}(u.PureComponent),re=function(e){function t(t){var o=e.call(this,t)||this;return o._handleClick=function(){ +v.tool.setValue(o.props.toolName)},o._onChange=function(){o.setState({isActive:v.tool.value()===o.props.toolName})},o.state={isActive:v.tool.value()===o.props.toolName},o}return c.__extends(t,e),t.prototype.componentDidMount=function(){v.tool.subscribe(this._onChange)},t.prototype.componentWillUnmount=function(){v.tool.unsubscribe(this._onChange)},t.prototype.render=function(){var e=this.props.toolName,t=this.state.isActive,o=T.a[e];return u.createElement(i,{icon:T.a[e].icon,isActive:t,isTransparent:!0,onClick:this._handleClick,title:o.localizedName,buttonHotKey:o.hotKey})},t}(u.PureComponent),ae=function(e){function t(t){var o=e.call(this,t)||this;return o._boundUndoModel=null,o._handleClick=function(){var e=o._activeChartWidget().model();e&&e.zoomFromViewport()},o._syncUnzoomButton=function(){var e=o._activeChartWidget(),t=e.model(),n=!1;t?(o._boundUndoModel!==t&&(o._boundUndoModel&&o._boundUndoModel.zoomStack().onChange().unsubscribe(null,o._syncUnzoomButton),t.zoomStack().onChange().subscribe(null,o._syncUnzoomButton),o._boundUndoModel=t),n=!t.zoomStack().isEmpty()):e.withModel(null,o._syncUnzoomButton),o.setState({isVisible:n})},o.state={isVisible:!1},o}return c.__extends(t,e),t.prototype.componentDidMount=function(){this.props.chartWidgetCollection.activeChartWidget.subscribe(this._syncUnzoomButton,{callWithLast:!0})},t.prototype.componentWillUnmount=function(){this.props.chartWidgetCollection.activeChartWidget.unsubscribe(this._syncUnzoomButton)},t.prototype.render=function(){return this.state.isVisible?u.createElement(r,{action:this._handleClick,isTransparent:!0,toolName:"zoom-out"}):u.createElement("div",null)},t.prototype._activeChartWidget=function(){return this.props.chartWidgetCollection.activeChartWidget.value()},t}(u.PureComponent),se=o("b2d7"),le=o("pr86"),ce=o("N5tr"),ue=o("Bruo"),de=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return c.__extends(t,e),t.prototype.componentDidMount=function(){ue.bind(this.props.keys,this.props.handler)},t.prototype.componentDidUpdate=function(e){this.props.keys===e.keys&&this.props.handler===e.handler||(ue.unbind(e.keys),ue.bind(this.props.keys,this.props.handler))},t.prototype.componentWillUnmount=function(){ue.unbind(this.props.keys)},t.prototype.render=function(){return null},t}(u.PureComponent),pe=function(e){function t(t){var o,n=e.call(this,t)||this;return n._onChangeDrawingState=function(){var e=n._getActiveToolIndex();n.setState({current:-1!==e?e:n.state.current,isActive:-1!==e})},n._handleClickButton=function(){var e=n._getCurrentToolName();n._selectTool(e)},n._handleClickItem=function(e){n._selectTool(e)},n._handleGrayedClick=function(e){Object(b.emit)("onGrayedObjectClicked",{type:"drawing",name:T.a[e].localizedName})},n._handleShortcut=function(e){var t=n.props.lineTools.find(function(t){return t.name===e}),o=t&&t.shortcut;o&&o.immediately?n._drawLinetoolImmediately(e):n._selectTool(e)},n._drawLinetoolImmediately=function(e){var t=n.props.chartWidgetCollection.activeChartWidget.value() +;t.activePaneWidget&&t.activePaneWidget.drawRightThere(e)},n._handleClickFavorite=function(e){n.state.favState&&n.state.favState[e]?se.a.removeFavorite(e):se.a.addFavorite(e)},n._onAddFavorite=function(e){var t;n.setState({favState:c.__assign({},n.state.favState,(t={},t[e]=!0,t))})},n._onRemoveFavorite=function(e){var t;n.setState({favState:c.__assign({},n.state.favState,(t={},t[e]=!1,t))})},n._onSyncFavorites=function(){n.setState({favState:n._composeFavState()})},o=n._getActiveToolIndex(),n.state={current:-1===o?n._firstNonGrayedTool():o,favState:n._composeFavState(),isActive:-1!==o},n}return c.__extends(t,e),t.prototype.componentDidMount=function(){v.tool.subscribe(this._onChangeDrawingState),se.a.favoriteAdded.subscribe(null,this._onAddFavorite),se.a.favoriteRemoved.subscribe(null,this._onRemoveFavorite),se.a.favoritesSynced.subscribe(null,this._onSyncFavorites)},t.prototype.componentWillUnmount=function(){v.tool.unsubscribe(this._onChangeDrawingState),se.a.favoriteAdded.unsubscribe(null,this._onAddFavorite),se.a.favoriteRemoved.unsubscribe(null,this._onRemoveFavorite),se.a.favoritesSynced.unsubscribe(null,this._onSyncFavorites)},t.prototype.componentDidUpdate=function(e,t){e.lineTools!==this.props.lineTools&&this.setState({favState:this._composeFavState()})},t.prototype.render=function(){var e=this,t=this.props,o=t.favoriting,n=t.grayedTools,i=t.lineTools,r=t.dropdownTooltip,a=this.state,s=a.current,l=a.favState,c=a.isActive,d=this._getCurrentToolName(),p=T.a[d],h=this._showShortcuts();return u.createElement("span",null,u.createElement(X,{buttonIcon:p.icon,buttonTitle:p.localizedName,buttonHotKey:p.hotKey,dropdownTooltip:r,isActive:c,onClickButton:this._handleClickButton},i.map(function(t,i){var r=t.name,a=T.a[r],d=n[r];return u.createElement(ce.a,{key:r,dontClosePopup:d,forceShowShortcuts:h,shortcut:t.shortcut&&t.shortcut.keys,icon:a.icon,isActive:c&&s===i,appearAsDisabled:d,label:a.localizedName,onClick:d?e._handleGrayedClick:e._handleClickItem,onClickArg:r,showToolboxOnHover:!l[r],toolbox:o&&!d?u.createElement(le.a,{isFilled:l[r],onClick:e._handleClickFavorite,onClickArg:r}):void 0})})),i.map(function(t,o){var n=t.name,i=t.shortcut;return i&&u.createElement(de,{handler:function(t){t.preventDefault(),e._handleShortcut(n)},key:n,keys:i.keys})}))},t.prototype._getCurrentToolName=function(){var e=this.state.current,t=this.props.lineTools;return t[e||0].name},t.prototype._firstNonGrayedTool=function(){var e=this.props,t=e.grayedTools;return e.lineTools.findIndex(function(e){return!t[e.name]})},t.prototype._getActiveToolIndex=function(){return this.props.lineTools.findIndex(function(e){return e.name===v.tool.value()})},t.prototype._showShortcuts=function(){return this.props.lineTools.some(function(e){return"shortcut"in e})},t.prototype._selectTool=function(e){v.tool.setValue(e)},t.prototype._composeFavState=function(){var e={};return this.props.lineTools.forEach(function(t){e[t.name]=se.a.isFavorite(t.name)}),e},t}(u.PureComponent),he={all:window.t("Remove Drawing Tools & Indicators"), +drawings:window.t("Remove Drawing Tools"),studies:window.t("Remove Indicators")},me=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._handleRemoveToolClick=function(){Modernizr.mobiletouch||t._handleRemoveDrawings()},t._handleRemoveDrawings=function(){t.props.chartWidgetCollection.activeChartWidget.value().removeAllDrawingTools()},t._handleRemoveStudies=function(){t.props.chartWidgetCollection.activeChartWidget.value().removeAllStudies()},t._handleRemoveAll=function(){t.props.chartWidgetCollection.activeChartWidget.value().removeAllStudiesDrawingTools()},t}return c.__extends(t,e),t.prototype.render=function(){return u.createElement(X,{buttonIcon:T.a[this.props.toolName].icon,buttonTitle:he.drawings,onClickButton:this._handleRemoveToolClick},u.createElement(ce.a,{label:he.drawings,onClick:this._handleRemoveDrawings}),u.createElement(ce.a,{label:he.studies,onClick:this._handleRemoveStudies}),u.createElement(ce.a,{label:he.all,onClick:this._handleRemoveAll}))},t}(u.PureComponent),fe=o("g5Qf"),ge=o("85c9"),ve=window.t("Show Favorite Drawings Toolbar"),be=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._instance=null,t._promise=null,t._bindedForceUpdate=function(){return t.forceUpdate()},t._handleClick=function(){null!==t._instance&&(t._instance.isVisible()?t._instance.hide():t._instance.show())},t}return c.__extends(t,e),t.prototype.componentDidMount=function(){var e=this,t=this._promise=Object(p.ensureNotNull)(Object(fe.getFavoriteDrawingToolbarPromise)());t.then(function(o){e._promise===t&&(e._instance=o,e._instance.canBeShown().subscribe(e._bindedForceUpdate),e._instance.visibility().subscribe(e._bindedForceUpdate),e.forceUpdate())})},t.prototype.componentWillUnmount=function(){this._promise=null,null!==this._instance&&(this._instance.canBeShown().unsubscribe(this._bindedForceUpdate),this._instance.visibility().unsubscribe(this._bindedForceUpdate),this._instance=null)},t.prototype.render=function(){return null!==this._instance&&this._instance.canBeShown().value()?u.createElement(i,{id:this.props.id,icon:ge,isActive:this._instance.isVisible(),onClick:this._handleClick,title:ve}):null},t}(u.PureComponent),_e=o("Ijvb"),ye=o("tITk"),we=o("4o++"),Te=o("7RN7"),function(e){e.Screenshot="drawing-toolbar-screenshot",e.FavoriteDrawings="drawing-toolbar-favorite-drawings",e.ObjectTree="drawing-toolbar-object-tree"}(Ce||(Ce={})),ke=o("JQKp"),Se={weakMagnet:window.t("Weak Magnet"),strongMagnet:window.t("Strong Magnet")},Ee=Object(w.onWidget)(),Le=new y.a,De=function(e){function t(t){var o=e.call(this,t)||this;return o._grayedTools={},o._handleChangeVisibility=function(e){o.setState({isVisible:e})},o._handleEsc=function(){v.resetToCursor(!0),Object(G.b)()},v.init(),o._toolsFilter=new C(o.props.drawingsAccess),o._filteredLineTools=k.map(function(e){return{title:e.title,items:e.items.filter(function(e){return o._toolsFilter.isToolEnabled(T.a[e.name].localizedName)})}}).filter(function(e){return 0!==e.items.length}),o._filteredLineTools.forEach(function(e){ +return e.items.forEach(function(e){o._grayedTools[e.name]=o._toolsFilter.isToolGrayed(T.a[e.name].localizedName)})}),o.state={isVisible:S.isDrawingToolbarVisible.value(),magnet:v.properties().childs().magnet.value(),magnetMode:v.properties().childs().magnetMode.value()},o._features={favoriting:!Ee&&g.enabled("items_favoriting"),multicharts:g.enabled("support_multicharts"),tools:!Ee||g.enabled("charting_library_base")},o._negotiateResizer(),o}return c.__extends(t,e),t.prototype.getChildContext=function(){return{chartWidgetCollection:this.props.chartWidgetCollection,customCloseDelegate:Le}},t.prototype.componentDidMount=function(){S.isDrawingToolbarVisible.subscribe(this._handleChangeVisibility),d.findDOMNode(this).addEventListener("contextmenu",function(e){return e.preventDefault()}),G.a.subscribe(this,this._handleGlobalClose),v.properties().childs().magnet.subscribe(this,this._updateMagnetEnabled),v.properties().childs().magnetMode.subscribe(this,this._updateMagnetMode)},t.prototype.componentWillUnmount=function(){S.isDrawingToolbarVisible.unsubscribe(this._handleChangeVisibility),G.a.unsubscribe(this,this._handleGlobalClose),v.properties().childs().magnet.unsubscribe(this,this._updateMagnetEnabled),v.properties().childs().magnetMode.unsubscribe(this,this._updateMagnetMode)},t.prototype.componentDidUpdate=function(e,t){var o=this.state.isVisible;o!==t.isVisible&&(b.emit("toggle_sidebar",!o),f.setValue("ChartDrawingToolbarWidget.visible",o),this._negotiateResizer())},t.prototype.render=function(){var e,t=this,o=this.props,n=o.bgColor,i=o.chartWidgetCollection,c=o.readOnly,d=(o.hideMainMenu,this.state),p=d.isVisible,h=d.magnet,f=d.magnetMode,g={backgroundColor:n&&"#"+n};return u.createElement("div",{className:m(ke.drawingToolbar,(e={},e[ke.isHidden]=!p,e)),style:g,onClick:this.props.onClick},u.createElement(j,{onScroll:this._handleGlobalClose,isVisibleFade:Modernizr.mobiletouch,isVisibleButtons:!Modernizr.mobiletouch,isVisibleScrollbar:!1},u.createElement("div",{className:ke.inner},!1,!c&&u.createElement("div",{className:ke.group,style:g},this._filteredLineTools.map(function(e,o){return u.createElement(pe,{chartWidgetCollection:i,favoriting:t._features.favoriting,grayedTools:t._grayedTools,key:o,dropdownTooltip:e.title,lineTools:e.items})}),this._toolsFilter.isToolEnabled("Font Icons")&&u.createElement(oe,{isGrayed:this._grayedTools["Font Icons"],toolName:"LineToolIcon"})),!c&&u.createElement("div",{className:ke.group,style:g},u.createElement(re,{toolName:"measure"}),u.createElement(re,{toolName:"zoom"}),u.createElement(ae,{chartWidgetCollection:i})),!c&&u.createElement("div",{className:ke.group,style:g},u.createElement(X,{buttonIcon:f===we.MagnetMode.StrongMagnet?_e.a.strongMagnet:_e.a.magnet,buttonTitle:T.a.magnet.localizedName,isActive:h,onClickButton:a,checkable:!0},u.createElement(ce.a,{key:"weakMagnet",icon:_e.a.magnet,isActive:h&&f!==we.MagnetMode.StrongMagnet,label:Se.weakMagnet,onClick:s}),u.createElement(ce.a,{key:"strongMagnet",icon:_e.a.strongMagnet,isActive:h&&f===we.MagnetMode.StrongMagnet, +label:Se.strongMagnet,onClick:l})),this._features.tools&&u.createElement(ie,{property:v.properties().childs().stayInDrawingMode,saveDefaultOnChange:!0,toolName:"drawginmode"}),this._features.tools&&u.createElement(ie,{property:v.lockDrawings(),toolName:"lockAllDrawings"}),this._features.tools&&u.createElement(ie,{property:v.hideAllDrawings(),toolName:"hideAllDrawings"}),!1),!c&&this._features.tools&&u.createElement("div",{className:ke.group,style:g},u.createElement(me,{chartWidgetCollection:i,toolName:"removeAllDrawingTools"})),u.createElement("div",{className:ke.fill,style:g}),!c&&(this._features.tools||!1)&&u.createElement("div",{className:m(ke.group,ke.lastGroup),style:g},!1,this._features.tools&&this._features.favoriting&&u.createElement(be,{id:Ce.FavoriteDrawings}),this._features.tools&&u.createElement(r,{id:Ce.ObjectTree,action:function(){return t._activeChartWidget().showObjectsTreeDialog()},toolName:"showObjectsTree"})))),u.createElement(W,{toolbarVisible:p}),u.createElement(z.a,{keyCode:U.a.Escape,handler:this._handleEsc}))},t.prototype._activeChartWidget=function(){return this.props.chartWidgetCollection.activeChartWidget.value()},t.prototype._negotiateResizer=function(){this.props.resizerBridge.negotiateWidth(this.state.isVisible?Te.b:Te.a)},t.prototype._handleGlobalClose=function(){Le.fire()},t.prototype._updateMagnetEnabled=function(){var e={magnet:v.properties().childs().magnet.value()};this.setState(e)},t.prototype._updateMagnetMode=function(){var e={magnetMode:v.properties().childs().magnetMode.value()};this.setState(e)},t.childContextTypes={chartWidgetCollection:h.any.isRequired,customCloseDelegate:h.any.isRequired},t}(u.PureComponent),o.d(t,"DrawingToolbarRenderer",function(){return Ae}),Ae=function(){function e(e,t){var o=this;this._component=null,this._handleRef=function(e){o._component=e},this._container=e,d.render(u.createElement(De,c.__assign({},t,{ref:this._handleRef})),this._container)}return e.prototype.destroy=function(){d.unmountComponentAtNode(this._container)},e.prototype.getComponent=function(){return Object(p.ensureNotNull)(this._component)},e}()},"85c9":function(e,t){e.exports=''},"9dlw":function(e,t,o){"use strict";var n,i,r,a,s,l,c,u,d;o.d(t,"a",function(){return d}),n=o("mrSG"),i=o("bf9a"),r=o("q1tI"),a=o("i8i4"),s=o("17x9"),l=o("RgaO"),c=o("AiMB"),u=o("DTHj"),d=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._handleClose=function(){t.props.onClose()},t._handleClickOutside=function(e){var o,n=t.props,i=n.closeOnClickOutside,r=n.onClickOutside,s=n.doNotCloseOn;r&&r(e), +i&&(s&&e.target instanceof Node&&(o=a.findDOMNode(s))instanceof Node&&o.contains(e.target)||t._handleClose())},t._handleScroll=function(e){var o=t.props.onScroll;o&&o(e),e.stopPropagation()},t}return n.__extends(t,e),t.prototype.componentWillReceiveProps=function(e){this.props.isOpened&&!e.isOpened&&this.setState({isMeasureValid:void 0})},t.prototype.render=function(){var e=this.props,t=e.children,o=e.isOpened,i=(e.closeOnClickOutside,e.doNotCloseOn,e.onClickOutside,e.onClose,n.__rest(e,["children","isOpened","closeOnClickOutside","doNotCloseOn","onClickOutside","onClose"]));return o?r.createElement(c.a,null,r.createElement(l.a,{handler:this._handleClickOutside,mouseDown:!0,touchStart:!0},r.createElement(u.a,n.__assign({},i,{isOpened:o,onClose:this._handleClose,onScroll:this._handleScroll,customCloseDelegate:this.context.customCloseDelegate}),t))):null},t.contextTypes={customCloseDelegate:s.any},t.defaultProps={closeOnClickOutside:!0},t}(r.PureComponent)},AiMB:function(e,t,o){"use strict";var n,i,r,a,s,l,c,u;o.d(t,"a",function(){return c}),o.d(t,"b",function(){return u}),n=o("mrSG"),i=o("q1tI"),r=o("i8i4"),a=o("0waE"),s=o("jAh7"),l=o("+EG+"),c=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._uuid=Object(a.guid)(),t}return n.__extends(t,e),t.prototype.componentWillUnmount=function(){this._manager().removeWindow(this._uuid)},t.prototype.render=function(){return r.createPortal(i.createElement(u.Provider,{value:this},this.props.children),this._manager().ensureWindow(this._uuid))},t.prototype.moveToTop=function(){this._manager().moveToTop(this._uuid)},t.prototype._manager=function(){return null===this.context?Object(s.getRootOverlapManager)():this.context},t.contextType=l.b,t}(i.PureComponent),u=i.createContext(null)},EA32:function(e,t,o){e.exports={wrap:"wrap-2I6DAtXG-",buttonIcon:"buttonIcon-2rBwJ1QM-",item:"item-31XunD5q-",hovered:"hovered-2A1Cpat5-",button:"button-21ihqWJ8-"}},GWvR:function(e,t){e.exports=''},HHbT:function(e,t){ +e.exports=''},JQKp:function(e,t,o){e.exports={drawingToolbar:"drawingToolbar-U3_QXRof-",isHidden:"isHidden-2d-PYkzV-",inner:"inner-1xuW-gY4-",group:"group-2JyOhh7Z-",noGroupPadding:"noGroupPadding-1TTjVKWk-",lastGroup:"lastGroup-O75UB5Xa-",fill:"fill-1djIbBXv-",separator:"separator-1BAqp1-l-"}},KKsp:function(e,t,o){"use strict";function n(e){return i.createElement("div",{className:r.separator})}var i,r;o.d(t,"a",function(){return n}),i=o("q1tI"),r=o("NOPy")},KmEK:function(e,t,o){e.exports={dropdown:"dropdown-3_ASLzSj-",buttonWrap:"buttonWrap-3fZWypJl-",control:"control-1TyEfSIx-",arrow:"arrow-1cFKS5Ok-",arrowIcon:"arrowIcon-2wA7q8om-",isOpened:"isOpened-22vLOY9o-",isGrayed:"isGrayed-xr-mULNo-"}},N5tr:function(e,t,o){"use strict";function n(e){return a.createElement(e.href?"a":"div",e)}function i(e){e.stopPropagation()}var r,a,s,l,c,u,d,p;o.d(t,"a",function(){return p}),r=o("mrSG"),a=o("q1tI"),s=o("TSYQ"),l=o("tWVy"),c=o("tITk"),u=o("QpNh"),d=o("v1bN"),p=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t._handleClick=function(e){var o=t.props,n=o.dontClosePopup,i=o.isDisabled,r=o.onClick,a=o.onClickArg,s=o.trackEventObject;i||(s&&Object(c.trackEvent)(s.category,s.event,s.label),r&&r(a,e),n||Object(l.b)())},t._handleMouseUp=function(e){var o=t.props,n=o.link,i=o.trackEventObject;1===e.button&&n&&i&&Object(c.trackEvent)(i.category,i.event,i.label)},t._formatShortcut=function(e){return e&&e.split("+").join(" + ")},t}return r.__extends(t,e),t.prototype.render=function(){var e,t,o=this.props,l=o.className,c=o.shortcut,p=o.forceShowShortcuts,h=o.icon,m=o.isActive,f=o.isDisabled,g=o.isHovered,v=o.appearAsDisabled,b=o.label,_=o.link,y=o.showToolboxOnHover,w=o.target,T=o.toolbox,C=o.theme,k=void 0===C?d:C,S=Object(u.a)(this.props);return a.createElement(n,r.__assign({},S,{className:s(l,k.item,h&&k.withIcon,(e={},e[k.isActive]=m,e[k.isDisabled]=f||v,e[k.hovered]=g,e)),href:_,target:w,onClick:this._handleClick,onMouseUp:this._handleMouseUp}),void 0!==h&&a.createElement("div",{className:k.icon,dangerouslySetInnerHTML:{__html:h}}),a.createElement("div",{className:k.labelRow},a.createElement("div",{className:k.label},b)),(void 0!==c||p)&&a.createElement("div",{className:k.shortcut},this._formatShortcut(c)),void 0!==T&&a.createElement("div",{onClick:i,className:s(k.toolbox,(t={},t[k.showOnHover]=y,t))},T))},t}(a.PureComponent)},NOPy:function(e,t,o){e.exports={separator:"separator-25lkUpN--"}},QpNh:function(e,t,o){ +"use strict";function n(e){var t,o,n,r,a,s=Object.entries(e).filter(i),l={};for(t=0,o=s;t'},nPPD:function(e,t,o){"use strict";function n(e,t,o){var n,i,r,a,s;for(void 0===o&&(o={}),n=Object.assign({},t),i=0,r=Object.keys(t);i"),this._table=$('
').appendTo(this._res),e=this.createLineWidthEditor(),t=b(),i=this.createColorPicker(),o=this.addLabeledRow(this._table,"Line"),$("
").append(i).appendTo(o),$("").append(e).appendTo(o),$('').append(t.render().css("display","block")).appendTo(o),n=$(""),o=$("
').append($("
').append($("").append(l).appendTo(o),$("").append(u).appendTo(o),$("").append(r).appendTo(o),$("").append(C).appendTo(o),$("").append(g).appendTo(o),o=$("
").append($.t("Text Alignment:")).appendTo(o),y=$(""),w=$("").data("selectbox-css",{display:"block"}),$("").append(y).appendTo(o),$("").append(w).appendTo(o),T=$("