diff --git a/.dockerignore b/.dockerignore index 4165d6bf5..7fff0265d 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,5 +1,4 @@ app/db/SQL -docs node_modules storage public/scripts diff --git a/CHANGES.md b/CHANGES.md index 3f97b3706..bcf8c343e 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,6 +1,6 @@ -# Version 0.3.0 (PRE-RELEASE) +# Version 0.3.0 (PRE-RELEASE) - PLANNED -## Planned Issues +## Features * Added 7 new locales for locale service and email templates (af, ar, cz, hu, lt, no, ru, si, sv, ta, vi, zh-cn, zh-tw) * New users service routes to allow updates pref and name update @@ -10,6 +10,11 @@ * Limit HTTP origin check only to browser integrations * Allow electron apps to not pass origin header * New OAuth adapters (Amazon, Dropbox, Microsoft, Slack, VK) +* Added support for ES6 require statements in JS SDK + +## Breaking Changs + +* users/deleteUsersSession method name changed to users/deleteUserSession in all SDKs for better consistency # Version 0.2.0 (PRE-RELEASE) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e7b28d8bb..38752b558 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -30,7 +30,7 @@ Appwrite uses a package manager for managing code dependencies for both backend Many of Appwrite's internal modules are also used as dependencies to allow other Appwrite's projects to reuse them and as a way to contribute them back to the community. -Appwrite uses PHPs Composer for managing dependencies on the server-side and JS NPM for managing dependencies on the frontend side. +Appwrite uses PHP's Composer for managing dependencies on the server-side and JS NPM for managing dependencies on the frontend side. ## Coding Standards diff --git a/Dockerfile b/Dockerfile index dedf67908..db5e6c175 100755 --- a/Dockerfile +++ b/Dockerfile @@ -78,6 +78,7 @@ RUN chmod 775 /entrypoint.sh # add PHP files COPY ./app /usr/share/nginx/html/app +COPY ./docs /usr/share/nginx/html/docs COPY ./public /usr/share/nginx/html/public COPY ./src /usr/share/nginx/html/src COPY ./vendor /usr/share/nginx/html/vendor diff --git a/README.md b/README.md index 4afc72376..6dac9615b 100644 --- a/README.md +++ b/README.md @@ -66,7 +66,7 @@ Getting started with Appwrite is as easy as creating a new project, choosing you * [**Database**](https://appwrite.io/docs/database) - Manage database collections and document. Read, create, update and delete documents and filter lists of documents collections using an advanced filter with graph-like capabilities. * [**Storage**](https://appwrite.io/docs/storage) - Manage storage files. Read, create, delete and preview files. Manipulate the preview of your files to fit your app perfectly. All files are scanned by ClamAV and stored in a secure and encrypted way. * [**Locale**](https://appwrite.io/docs/locale) - Track user's location, and manage your app locale-based data. -* [**Avatars**](https://appwrite.io/docs/avatars) - Manage your user's avatars, country's flags, browser icons, credit card symbols and generate QR codes. +* [**Avatars**](https://appwrite.io/docs/avatars) - Manage your users' avatars, countries' flags, browser icons, credit card symbols and generate QR codes. For the complete API documentation, visit [https://appwrite.io/docs](https://appwrite.io/docs). For more tutorials, news and announcements check out our [blog](https://medium.com/appwrite-io). diff --git a/app/app.php b/app/app.php index 02637ccec..22a97bcc2 100644 --- a/app/app.php +++ b/app/app.php @@ -72,7 +72,7 @@ $utopia->init(function () use ($utopia, $request, $response, $register, &$user, //->addHeader('X-Frame-Options', ($refDomain == 'http://localhost') ? 'SAMEORIGIN' : 'ALLOW-FROM ' . $refDomain) ->addHeader('X-Content-Type-Options', 'nosniff') ->addHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, PATCH, DELETE') - ->addHeader('Access-Control-Allow-Headers', 'Origin, Cookie, X-Requested-With, Content-Type, Access-Control-Allow-Origin, Access-Control-Request-Headers, Accept, X-Appwrite-Project, X-Appwrite-Key, X-Appwrite-Locale, X-SDK-Version') + ->addHeader('Access-Control-Allow-Headers', 'Origin, Cookie, Set-Cookie, X-Requested-With, Content-Type, Access-Control-Allow-Origin, Access-Control-Request-Headers, Accept, X-Appwrite-Project, X-Appwrite-Key, X-Appwrite-Locale, X-SDK-Version') ->addHeader('Access-Control-Allow-Origin', $refDomain) ->addHeader('Access-Control-Allow-Credentials', 'true') ; @@ -251,7 +251,7 @@ $utopia->options(function () use ($request, $response, $domain, $project) { $response ->addHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, PATCH, DELETE') - ->addHeader('Access-Control-Allow-Headers', 'Origin, Cookie, X-Requested-With, Content-Type, Access-Control-Allow-Origin, Access-Control-Request-Headers, Accept, X-Appwrite-Project, X-Appwrite-Key, X-Appwrite-Locale, X-SDK-Version') + ->addHeader('Access-Control-Allow-Headers', 'Origin, Cookie, Set-Cookie, X-Requested-With, Content-Type, Access-Control-Allow-Origin, Access-Control-Request-Headers, Accept, X-Appwrite-Project, X-Appwrite-Key, X-Appwrite-Locale, X-SDK-Version') ->addHeader('Access-Control-Allow-Origin', $origin) ->addHeader('Access-Control-Allow-Credentials', 'true') ->send(); @@ -490,7 +490,7 @@ $utopia->get('/v1/open-api-2.json') 'url' => 'https://raw.githubusercontent.com/appwrite/appwrite/master/LICENSE', ], ], - 'host' => $request->getServer('_APP_HOME', $domain), + 'host' => parse_url($request->getServer('_APP_HOME', $domain), PHP_URL_HOST), 'basePath' => '/v1', 'schemes' => ['https'], 'consumes' => ['application/json', 'multipart/form-data'], @@ -499,13 +499,13 @@ $utopia->get('/v1/open-api-2.json') 'Project' => [ 'type' => 'apiKey', 'name' => 'X-Appwrite-Project', - 'description' => 'Your Appwrite project ID. You can find your project ID in your Appwrite console project settings.', + 'description' => 'Your Appwrite project ID', 'in' => 'header', ], 'Key' => [ 'type' => 'apiKey', 'name' => 'X-Appwrite-Key', - 'description' => 'Your Appwrite project secret key. You can can create a new API key from your Appwrite console API keys dashboard.', + 'description' => 'Your Appwrite project secret key', 'in' => 'header', ], 'Locale' => [ @@ -590,7 +590,7 @@ $utopia->get('/v1/open-api-2.json') 'operationId' => $route->getLabel('sdk.method', uniqid()), 'consumes' => [], 'tags' => [$route->getLabel('sdk.namespace', 'default')], - 'description' => $route->getLabel('sdk.description', ''), + 'description' => file_get_contents(realpath(__DIR__ . '/..' . $route->getLabel('sdk.description', ''))), 'responses' => [ 200 => [ 'description' => 'An paged array of pets', @@ -607,6 +607,7 @@ $utopia->get('/v1/open-api-2.json') 'cookies' => $route->getLabel('sdk.cookies', false), 'location' => $route->getLabel('sdk.location', false), 'demo' => 'docs/examples/'.fromCamelCaseToDash($route->getLabel('sdk.namespace', 'default')).'/'.fromCamelCaseToDash($temp['operationId']).'.md', + 'edit' => 'https://github.com/appwrite/appwrite/edit/master' . $route->getLabel('sdk.description', ''), ]; } @@ -680,7 +681,7 @@ $utopia->get('/v1/open-api-2.json') case 'Utopia\Validator\Range': /* @var $validator \Utopia\Validator\Range */ $node['type'] = 'integer'; $node['format'] = 'int32'; - $node['x-example'] = rand($validator->getMin(), $validator->getMax()); + $node['x-example'] = $validator->getMin(); break; case 'Utopia\Validator\Numeric': $node['type'] = 'integer'; diff --git a/app/config/collections.php b/app/config/collections.php index 122b722f9..da563f3e2 100644 --- a/app/config/collections.php +++ b/app/config/collections.php @@ -38,12 +38,24 @@ $collections = [ '$collection' => Database::SYSTEM_COLLECTION_PLATFORMS, 'name' => 'Localhost (SSL)', 'type' => 'web', - 'url' => 'https://'.$request->getServer('HTTP_HOST'), + 'url' => 'https://localhost', ], [ '$collection' => Database::SYSTEM_COLLECTION_PLATFORMS, 'name' => 'Localhost (Non-SSL)', 'type' => 'web', + 'url' => 'http://localhost', + ], + [ + '$collection' => Database::SYSTEM_COLLECTION_PLATFORMS, + 'name' => 'Current Host (SSL)', + 'type' => 'web', + 'url' => 'https://'.$request->getServer('HTTP_HOST'), + ], + [ + '$collection' => Database::SYSTEM_COLLECTION_PLATFORMS, + 'name' => 'Current Host (Non-SSL)', + 'type' => 'web', 'url' => 'http://'.$request->getServer('HTTP_HOST'), ], ], diff --git a/app/config/locale/es.countries.php b/app/config/locale/es.countries.php index 18fe488c1..4479c2780 100644 --- a/app/config/locale/es.countries.php +++ b/app/config/locale/es.countries.php @@ -145,7 +145,7 @@ return [ 'KP' => 'Corea del Norte', 'PT' => 'Portugal', 'PY' => 'Paraguay', - 'QA' => 'Katar', + 'QA' => 'Catar', 'RO' => 'Rumania', 'RU' => 'Rusia', 'RW' => 'Ruanda', diff --git a/app/config/locale/hi.continents.php b/app/config/locale/hi.continents.php index d1f95ddd8..57713feb1 100644 --- a/app/config/locale/hi.continents.php +++ b/app/config/locale/hi.continents.php @@ -1,7 +1,7 @@ 'अफ्रीका', + 'AF' => 'अफ़्रीका', 'AN' => 'अंटार्कटिका', 'AS' => 'एशिया', 'EU' => 'यूरोप', diff --git a/app/config/locale/hi.php b/app/config/locale/hi.php index f48dcdb70..fb1979fe5 100644 --- a/app/config/locale/hi.php +++ b/app/config/locale/hi.php @@ -1,7 +1,7 @@ '"यह जान लेना की क्या अनदेखा किया जा सकता है, ही बुद्धिमता का प्रतीक है |"', // This is the line printed in the homepage and console 'view-source' + 'settings.inspire' => '"बुद्धिमान होने की कला यह जानने की कला है कि क्या अनदेखा करना चाहिए |"', // This is the line printed in the homepage and console 'view-source' 'settings.locale' => 'hi', 'settings.direction' => 'ltr', diff --git a/app/config/locale/ja.continents.php b/app/config/locale/ja.continents.php new file mode 100644 index 000000000..5461618b6 --- /dev/null +++ b/app/config/locale/ja.continents.php @@ -0,0 +1,11 @@ + 'アフリカ', + 'AN' => '南極', + 'AS' => 'アジア', + 'EU' => 'ヨーロッパ', + 'NA' => '北米', + 'OC' => 'オセアニア', + 'SA' => '南アメリカ', +]; diff --git a/app/config/locale/ja.countries.php b/app/config/locale/ja.countries.php new file mode 100644 index 000000000..f4ce285fe --- /dev/null +++ b/app/config/locale/ja.countries.php @@ -0,0 +1,198 @@ + 'アフガニスタン', + 'AO' => 'アンゴラ', + 'AL' => 'アルバニア', + 'AD' => 'アンドラ', + 'AE' => 'アラブ首長国連邦', + 'AR' => 'アルゼンチン', + 'AM' => 'アルメニア', + 'AG' => 'アンチグアバーブーダ', + 'AU' => 'オーストラリア', + 'AT' => 'オーストリア', + 'AZ' => 'アゼルバイジャン', + 'BI' => 'ブルンディ', + 'BE' => 'ベルギー', + 'BJ' => 'ベニン', + 'BF' => 'ブルキナファソ', + 'BD' => 'バングラデシュ', + 'BG' => 'ブルガリア', + 'BH' => 'バーレーン', + 'BS' => 'バハマ', + 'BA' => 'ボスニア・ヘルツェゴビナ', + 'BY' => 'ベラルーシ', + 'BZ' => 'ベリーズ', + 'BO' => 'ボリビア', + 'BR' => 'ブラジル', + 'BB' => 'バルバドス', + 'BN' => 'ブルネイ', + 'BT' => 'ブータン', + 'BW' => 'ボツワナ', + 'CF' => '中央アフリカ共和国', + 'CA' => 'カナダ', + 'CH' => 'スイス', + 'CL' => 'チリ', + 'CN' => '中国', + 'CI' => 'コートジボワール', + 'CM' => 'カメルーン', + 'CD' => 'DRコンゴ', + 'CG' => 'コンゴ共和国', + 'CO' => 'コロンビア', + 'KM' => 'コモロ', + 'CV' => 'カーボベルデ', + 'CR' => 'コスタリカ', + 'CU' => 'キューバ', + 'CY' => 'キプロス', + 'CZ' => 'チェコ', + 'DE' => 'ドイツ', + 'DJ' => 'ジブチ', + 'DM' => 'ドミニカ', + 'DK' => 'デンマーク', + 'DO' => 'ドミニカ共和国', + 'DZ' => 'アルジェリア', + 'EC' => 'エクアドル', + 'EG' => 'エジプト', + 'ER' => 'エリトリア', + 'ES' => 'スペイン', + 'EE' => 'エストニア', + 'ET' => 'エチオピア', + 'FI' => 'フィンランド', + 'FJ' => 'フィジー', + 'FR' => 'フランス', + 'FM' => 'ミクロネシア', + 'GA' => 'ガボン', + 'GB' => 'イギリス', + 'GE' => 'ジョージア', + 'GH' => 'ガーナ', + 'GN' => 'ギニア', + 'GM' => 'ガンビア', + 'GW' => 'ギニアビサウ', + 'GQ' => '赤道ギニア', + 'GR' => 'ギリシャ', + 'GD' => 'グレナダ', + 'GT' => 'グアテマラ', + 'GY' => 'ガイアナ', + 'HN' => 'ホンジュラス', + 'HR' => 'クロアチア', + 'HT' => 'ハイチ', + 'HU' => 'ハンガリー', + 'ID' => 'インドネシア', + 'IN' => 'インド', + 'IE' => 'アイルランド', + 'IR' => 'イラン', + 'IQ' => 'イラク', + 'IS' => 'アイスランド', + 'IL' => 'イスラエル', + 'IT' => 'イタリア', + 'JM' => 'ジャマイカ', + 'JO' => 'ヨルダン', + 'JP' => '日本', + 'KZ' => 'カザフスタン', + 'KE' => 'ケニア', + 'KG' => 'キルギスタン', + 'KH' => 'カンボジア', + 'KI' => 'キリバティ', + 'KN' => 'セントクリストファー・ネイビス', + 'KR' => '韓国', + 'KW' => 'クウェート', + 'LA' => 'ラオス', + 'LB' => 'レバノン', + 'LR' => 'リベリア', + 'LY' => 'リビア', + 'LC' => 'セントルシア', + 'LI' => 'リヒテンシュタイン', + 'LK' => 'スリランカ', + 'LS' => 'レソト', + 'LT' => 'リトアニア', + 'LU' => 'ルクセンブルク', + 'LV' => 'ラトビア', + 'MA' => 'モロッコ', + 'MC' => 'モナコ', + 'MD' => 'モルドバ', + 'MG' => 'マダガスカル', + 'MV' => 'モルディブ', + 'MX' => 'メキシコ', + 'MH' => 'マーシャル諸島', + 'MK' => 'マケドニア', + 'ML' => 'マリ', + 'MT' => 'マルタ', + 'MM' => 'ミャンマー', + 'ME' => 'モンテネグロ', + 'MN' => 'モンゴル', + 'MZ' => 'モザンビーク', + 'MR' => 'モーリタニア', + 'MU' => 'モーリシャス', + 'MW' => 'マラウィ', + 'MY' => 'マレーシア', + 'NA' => 'ナミビア', + 'NE' => 'ニジェール', + 'NG' => 'ナイジェリア', + 'NI' => 'ニカラグア', + 'NL' => 'オランダ', + 'NO' => 'ノルウェー', + 'NP' => 'ネパール', + 'NR' => 'ナウル', + 'NZ' => 'ニュージーランド', + 'OM' => 'オマーン', + 'PK' => 'パキスタン', + 'PA' => 'パナマ', + 'PE' => 'ペルー', + 'PH' => 'フィリピン', + 'PW' => 'パラオ', + 'PG' => 'パプアニューギニア', + 'PL' => 'ポーランド', + 'KP' => '北朝鮮', + 'PT' => 'ポルトガル', + 'PY' => 'パラグアイ', + 'QA' => 'カタール', + 'RO' => 'ルーマニア', + 'RU' => 'ロシア', + 'RW' => 'ルワンダ', + 'SA' => 'サウジアラビア', + 'SD' => 'スーダン', + 'SN' => 'セネガル', + 'SG' => 'シンガポール', + 'SB' => 'ソロモン諸島', + 'SL' => 'シエラレオネ', + 'SV' => 'エルサルバドル', + 'SM' => 'サンマリノ', + 'SO' => 'ソマリア', + 'RS' => 'セルビア', + 'SS' => '南スーダン', + 'ST' => 'サントメとプリンシペ', + 'SR' => 'スリナム', + 'SK' => 'スロバキア', + 'SI' => 'スロベニア', + 'SE' => 'スウェーデン', + 'SZ' => 'スワジランド', + 'SC' => 'セイシェル', + 'SY' => 'シリア', + 'TD' => 'チャド', + 'TG' => 'トーゴ', + 'TH' => 'タイ', + 'TJ' => 'タジキスタン', + 'TM' => 'トルクメニスタン', + 'TL' => '東ティモール民主共和国', + 'TO' => 'トンガ', + 'TT' => 'トリニダード・トバゴ', + 'TN' => 'チュニジア', + 'TR' => 'トルコ', + 'TV' => 'ツバル', + 'TZ' => 'タンザニア', + 'UG' => 'ウガンダ', + 'UA' => 'ウクライナ', + 'UY' => 'ウルグアイ', + 'US' => 'アメリカ', + 'UZ' => 'ウズベキスタン', + 'VA' => 'バチカン', + 'VC' => 'セントビンセントおよびグレナディーン諸島', + 'VE' => 'ベネズエラ', + 'VN' => 'ベトナム', + 'VU' => 'バヌアツ', + 'WS' => 'サモア', + 'YE' => 'イエメン', + 'ZA' => '南アフリカ', + 'ZM' => 'ザンビア', + 'ZW' => 'ジンバブエ', +]; diff --git a/app/config/locale/ja.php b/app/config/locale/ja.php new file mode 100644 index 000000000..65be7c84b --- /dev/null +++ b/app/config/locale/ja.php @@ -0,0 +1,21 @@ + '"賢明になる術は何を捨てるべきかを心得る術である。"', // This is the line printed in the homepage and console 'view-source' + 'settings.locale' => 'ja', + 'settings.direction' => 'ltr', + + // Service - Users + 'auth.emails.team' => '%s チーム', + 'auth.emails.confirm.title' => 'アカウント確認のお願い', + 'auth.emails.confirm.body' => 'ja.email.auth.confirm.tpl', + 'auth.emails.recovery.title' => 'パスワード再設定のお願い', + 'auth.emails.recovery.body' => 'ja.email.auth.recovery.tpl', + 'auth.emails.invitation.title' => '%s チーム(%s プロジェクト)への招待', + 'auth.emails.invitation.body' => 'ja.email.auth.invitation.tpl', + + 'locale.country.unknown' => '不明', + + 'countries' => include 'ja.countries.php', + 'continents' => include 'ja.continents.php', +]; diff --git a/app/config/locale/sv.countries.php b/app/config/locale/sv.countries.php index 7bfc8f22a..5d96cf34e 100644 --- a/app/config/locale/sv.countries.php +++ b/app/config/locale/sv.countries.php @@ -1,11 +1,11 @@ 'Afganistan', + 'AF' => 'Afghanistan', 'AO' => 'Angola', 'AL' => 'Albanien', 'AD' => 'Andorra', - 'AE' => 'Förenade Arabemiraterna', + 'AE' => 'Förenade Arabemiraten', 'AR' => 'Argentina', 'AM' => 'Armenien', 'AG' => 'Antigua och Barbuda', @@ -21,13 +21,13 @@ return [ 'BH' => 'Bahrain', 'BS' => 'Bahamas', 'BA' => 'Bosnien och Hercegovina', - 'BY' => 'Vitrysslnd', + 'BY' => 'Vitryssland', 'BZ' => 'Belize', - 'BO' => 'Bolivien', + 'BO' => 'Bolivia', 'BR' => 'Brasilien', 'BB' => 'Barbados', - 'BN' => 'Brune', - 'BT' => 'Butan', + 'BN' => 'Brunei', + 'BT' => 'Bhutan', 'BW' => 'Botswana', 'CF' => 'Centralafrikanska republiken', 'CA' => 'Kanada', @@ -51,18 +51,18 @@ return [ 'DK' => 'Danmark', 'DO' => 'Dominikanska republiken', 'DZ' => 'Algeriet', - 'EC' => 'Ekvador', + 'EC' => 'Ecuador', 'EG' => 'Egypten', 'ER' => 'Eritrea', 'ES' => 'Spanien', - 'EE' => 'Estonia', + 'EE' => 'Estland', 'ET' => 'Etiopien', 'FI' => 'Finland', 'FJ' => 'Fiji', 'FR' => 'Frankrike', 'FM' => 'Mikronesien', 'GA' => 'Gabon', - 'GB' => 'Storbrittannien', + 'GB' => 'Storbritannien', 'GE' => 'Georgien', 'GH' => 'Ghana', 'GN' => 'Guinea', @@ -98,7 +98,7 @@ return [ 'KW' => 'Kuwait', 'LA' => 'Laos', 'LB' => 'Libanon', - 'LR' => 'Liberien', + 'LR' => 'Liberia', 'LY' => 'Libyen', 'LC' => 'Saint Lucia', 'LI' => 'Liechtenstein', @@ -106,22 +106,22 @@ return [ 'LS' => 'Lesotho', 'LT' => 'Litauen', 'LU' => 'Luxemburg', - 'LV' => 'Latvien', + 'LV' => 'Lettland', 'MA' => 'Marocko', 'MC' => 'Monaco', 'MD' => 'Moldavien', 'MG' => 'Madagaskar', 'MV' => 'Maldiverna', 'MX' => 'Mexiko', - 'MH' => 'Marshall Islands', + 'MH' => 'Marshallöarna', 'MK' => 'Nordmakedonien', 'ML' => 'Mali', 'MT' => 'Malta', 'MM' => 'Myanmar', 'ME' => 'Montenegro', - 'MN' => 'Mongolien', + 'MN' => 'Mongoliet', 'MZ' => 'Moçambique', - 'MR' => 'Mauritanien', + 'MR' => 'Mauretanien', 'MU' => 'Mauritius', 'MW' => 'Malawi', 'MY' => 'Malaysia', @@ -133,14 +133,14 @@ return [ 'NO' => 'Norge', 'NP' => 'Nepal', 'NR' => 'Nauru', - 'NZ' => 'Nya Zealand', + 'NZ' => 'Nya Zeeland', 'OM' => 'Oman', 'PK' => 'Pakistan', 'PA' => 'Panama', 'PE' => 'Peru', - 'PH' => 'Filppinerna', + 'PH' => 'Filippinerna', 'PW' => 'Palau', - 'PG' => 'Papua New Guinea', + 'PG' => 'Papua Nya Guinea', 'PL' => 'Polen', 'KP' => 'Nordkorea', 'PT' => 'Portugal', @@ -152,12 +152,12 @@ return [ 'SA' => 'Saudiarabien', 'SD' => 'Sudan', 'SN' => 'Senegal', - 'SG' => 'Singapor', - 'SB' => 'Solomonöarna', + 'SG' => 'Singapore', + 'SB' => 'Salomonöarna', 'SL' => 'Sierra Leone', 'SV' => 'El Salvador', 'SM' => 'San Marino', - 'SO' => 'Somalien', + 'SO' => 'Somalia', 'RS' => 'Serbien', 'SS' => 'Sydsudan', 'ST' => 'São Tomé och Príncipe', diff --git a/app/config/locale/sv.php b/app/config/locale/sv.php index 9f34de341..7101fc062 100644 --- a/app/config/locale/sv.php +++ b/app/config/locale/sv.php @@ -1,7 +1,7 @@ '"The art of being wise is the art of knowing what to overlook."', // This is the line printed in the homepage and console 'view-source' + 'settings.inspire' => '"Vishet är konsten att förstå vad man ska förbise."', // This is the line printed in the homepage and console 'view-source' 'settings.locale' => 'sv', 'settings.direction' => 'ltr', diff --git a/app/config/locale/templates/hi.email.auth.invitation.tpl b/app/config/locale/templates/hi.email.auth.invitation.tpl index c0da3d646..53eea9b70 100644 --- a/app/config/locale/templates/hi.email.auth.invitation.tpl +++ b/app/config/locale/templates/hi.email.auth.invitation.tpl @@ -10,7 +10,7 @@ नमस्ते,

- यह मेल आपको इसलिए भेजा गया था क्योंकि {{owner}} आपको टीम मेंबर बनने के लिए आमंत्रित करना चाहता है {{team}} टीम के लिए {{project}} प्रोजेक्ट पर + यह मेल आपको इसलिए भेजा गया था क्योंकि {{owner}} आपको {{project}} के लिए {{team}} टीम में टीम मेंबर बनने के लिए आमंत्रित करना चाहते थे।

टीम {{team}} ज्वाइन करने के लिए इस लिंक पर क्लिक करे : diff --git a/app/config/locale/templates/hi.email.auth.recovery.tpl b/app/config/locale/templates/hi.email.auth.recovery.tpl index 163cd0c28..697c83948 100644 --- a/app/config/locale/templates/hi.email.auth.recovery.tpl +++ b/app/config/locale/templates/hi.email.auth.recovery.tpl @@ -10,7 +10,7 @@ नमस्ते {{name}},

- {{project}} का पासवर्ड रिसेट करने के लिए लिंक पर क्लिक करे + {{project}} का पासवर्ड रिसेट करने के लिए इस लिंक पर क्लिक करे।
{{redirect}}
diff --git a/app/config/locale/templates/ja.email.auth.confirm.tpl b/app/config/locale/templates/ja.email.auth.confirm.tpl new file mode 100644 index 000000000..6c7a89f35 --- /dev/null +++ b/app/config/locale/templates/ja.email.auth.confirm.tpl @@ -0,0 +1,24 @@ + + +
+ {{name}}さん こんにちは。 +
+
+ 下記のリンクからメールアドレスを認証してください。 +
+ {{redirect}} +
+
+ お手数ですが、心当たりがない場合このメールを破棄してください。 +
+
+ ありがとうございます。 +
+ {{project}} チーム +
\ No newline at end of file diff --git a/app/config/locale/templates/ja.email.auth.invitation.tpl b/app/config/locale/templates/ja.email.auth.invitation.tpl new file mode 100644 index 000000000..ed59caff0 --- /dev/null +++ b/app/config/locale/templates/ja.email.auth.invitation.tpl @@ -0,0 +1,27 @@ + + +
+ こんにちは。 +
+
+ {{owner}} さんから {{project}} プロジェクトの {{team}} チームへの参加招待が届きました。 +
+
+ 下記のリンクから {{team}} へ参加してください。 +
+ {{redirect}} +
+
+ お手数ですが、心当たりがない場合このメールを破棄してください。 +
+
+ ありがとうございます。 +
+ {{project}} チーム +
diff --git a/app/config/locale/templates/ja.email.auth.recovery.tpl b/app/config/locale/templates/ja.email.auth.recovery.tpl new file mode 100644 index 000000000..108c7aebe --- /dev/null +++ b/app/config/locale/templates/ja.email.auth.recovery.tpl @@ -0,0 +1,24 @@ + + +
+ {{name}}さん こんにちは。 +
+
+ 下記のリンクから {{project}} プロジェクトのパスワードを再設定してください。 +
+ {{redirect}} +
+
+ お手数ですが、心当たりがない場合このメールを破棄してください。 +
+
+ ありがとうございます。 +
+ {{project}} チーム +
diff --git a/app/config/locale/templates/pt-br.email.auth.confirm.tpl b/app/config/locale/templates/pt-br.email.auth.confirm.tpl index f949c3f24..7cb959914 100644 --- a/app/config/locale/templates/pt-br.email.auth.confirm.tpl +++ b/app/config/locale/templates/pt-br.email.auth.confirm.tpl @@ -15,10 +15,10 @@ {{redirect}}

- Se a confirmação de email não foi solicitada por você, ignore esta mensagem. + Caso a confirmação de email não foi solicitada por você, ignore esta mensagem.

Atenciosamente,
Equipe {{project}} - \ No newline at end of file + diff --git a/app/config/locale/templates/pt-br.email.auth.invitation.tpl b/app/config/locale/templates/pt-br.email.auth.invitation.tpl index d0dceefb2..f4255ffaf 100644 --- a/app/config/locale/templates/pt-br.email.auth.invitation.tpl +++ b/app/config/locale/templates/pt-br.email.auth.invitation.tpl @@ -10,15 +10,15 @@ Olá,

- Este email foi enviado a você porque
{{owner}} deseja convida-lo para se tornar membro da equipe {{team}} no {{project}}. + Este email foi enviado a você porque
{{owner}} deseja convidá-lo para se tornar membro da equipe {{team}} no {{project}}.

- Siga o link abaixo para se juntar a equipe {{team}}: + Entre no link abaixo para se juntar a equipe {{team}}:
{{redirect}}

- Se não estiver interessado, por favor ignore esta mensagem. + Caso não estiver interessado, por favor ignore esta mensagem.

Atenciosamente, diff --git a/app/config/locale/templates/pt-br.email.auth.recovery.tpl b/app/config/locale/templates/pt-br.email.auth.recovery.tpl index 4e722f2ae..e2d710f38 100644 --- a/app/config/locale/templates/pt-br.email.auth.recovery.tpl +++ b/app/config/locale/templates/pt-br.email.auth.recovery.tpl @@ -15,7 +15,7 @@ {{redirect}}

- Se você não solicitou a redefinição de senha, por favor ignore esta mensagem. + Caso você não solicitou a redefinição de senha, por favor ignore esta mensagem.

Atenciosamente, diff --git a/app/config/locale/templates/pt-pt.email.auth.invitation.tpl b/app/config/locale/templates/pt-pt.email.auth.invitation.tpl index e4ebbfa35..429a30be9 100644 --- a/app/config/locale/templates/pt-pt.email.auth.invitation.tpl +++ b/app/config/locale/templates/pt-pt.email.auth.invitation.tpl @@ -10,7 +10,7 @@ Olá,

- Recebeu este email porque
{{owner}} deseja convida-lo a tornar-se membro da equipa {{team}} no {{project}}. + Recebeu este email porque
{{owner}} deseja convidá-lo a tornar-se membro da equipa {{team}} no {{project}}.

Use este link para se juntar à equipa {{team}}: @@ -23,5 +23,5 @@
Com os melhores cumprimentos,
- Equipe {{project}} + Equipa {{project}} diff --git a/app/config/locale/templates/sv.email.auth.recovery.tpl b/app/config/locale/templates/sv.email.auth.recovery.tpl index dba922155..673d914bd 100644 --- a/app/config/locale/templates/sv.email.auth.recovery.tpl +++ b/app/config/locale/templates/sv.email.auth.recovery.tpl @@ -15,7 +15,7 @@ {{redirect}}

- Om du inte bett om att ändr ditt lösenord så kan du ignorera detta meddelande. + Om du inte bett om att ändra ditt lösenord så kan du ignorera detta meddelande.

Tack, diff --git a/app/config/services.php b/app/config/services.php index 9b83eb1c5..0f4c44599 100644 --- a/app/config/services.php +++ b/app/config/services.php @@ -13,31 +13,31 @@ return [ ], 'v1/account' => [ 'name' => 'Account', - 'description' => '/docs/service/account.md', + 'description' => '/docs/services/account.md', 'controller' => 'controllers/account.php', 'sdk' => true, ], 'v1/auth' => [ // Add to docs later: You can also learn how to [configure support for our supported OAuth providers](/docs/oauth) 'name' => 'Auth', - 'description' => '/docs/service/auth.md', + 'description' => '/docs/services/auth.md', 'controller' => 'controllers/auth.php', 'sdk' => true, ], 'v1/avatars' => [ 'name' => 'Avatars', - 'description' => '/docs/service/avatars.md', + 'description' => '/docs/services/avatars.md', 'controller' => 'controllers/avatars.php', 'sdk' => true, ], 'v1/database' => [ 'name' => 'Database', - 'description' => '/docs/service/database.md', + 'description' => '/docs/services/database.md', 'controller' => 'controllers/database.php', 'sdk' => true, ], 'v1/locale' => [ 'name' => 'Locale', - 'description' => '/docs/service/locale.md', + 'description' => '/docs/services/locale.md', 'controller' => 'controllers/locale.php', 'sdk' => true, ], @@ -53,19 +53,19 @@ return [ ], 'v1/storage' => [ 'name' => 'Storage', - 'description' => '/docs/service/storage.md', + 'description' => '/docs/services/storage.md', 'controller' => 'controllers/storage.php', 'sdk' => true, ], 'v1/teams' => [ 'name' => 'Teams', - 'description' => '/docs/service/teams.md', + 'description' => '/docs/services/teams.md', 'controller' => 'controllers/teams.php', 'sdk' => true, ], 'v1/users' => [ 'name' => 'Users', - 'description' => '/docs/service/users.md', + 'description' => '/docs/services/users.md', 'controller' => 'controllers/users.php', 'sdk' => true, ], diff --git a/app/controllers/account.php b/app/controllers/account.php index 1809ade66..ec92ade8f 100644 --- a/app/controllers/account.php +++ b/app/controllers/account.php @@ -18,7 +18,7 @@ $utopia->get('/v1/account') ->label('scope', 'account') ->label('sdk.namespace', 'account') ->label('sdk.method', 'get') - ->label('sdk.description', 'Get currently logged in user data as JSON object.') + ->label('sdk.description', '/docs/references/account/get.md') ->action( function () use ($response, &$user, $providers) { $oauthKeys = []; @@ -50,7 +50,7 @@ $utopia->get('/v1/account/prefs') ->label('scope', 'account') ->label('sdk.namespace', 'account') ->label('sdk.method', 'getPrefs') - ->label('sdk.description', 'Get currently logged in user preferences key-value object.') + ->label('sdk.description', '/docs/references/account/get-prefs.md') ->action( function () use ($response, $user) { $prefs = $user->getAttribute('prefs', '{}'); @@ -74,7 +74,7 @@ $utopia->get('/v1/account/sessions') ->label('scope', 'account') ->label('sdk.namespace', 'account') ->label('sdk.method', 'getSessions') - ->label('sdk.description', 'Get currently logged in user list of active sessions across different devices.') + ->label('sdk.description', '/docs/references/account/get-sessions.md') ->action( function () use ($response, $user) { $tokens = $user->getAttribute('tokens', []); @@ -131,7 +131,7 @@ $utopia->get('/v1/account/security') ->label('scope', 'account') ->label('sdk.namespace', 'account') ->label('sdk.method', 'getSecurity') - ->label('sdk.description', 'Get currently logged in user list of latest security activity logs. Each log returns user IP address, location and date and time of log.') + ->label('sdk.description', '/docs/references/account/get-security.md') ->action( function () use ($response, $register, $project, $user) { $ad = new \Audit\Adapter\MySQL($register->get('db')); @@ -201,7 +201,7 @@ $utopia->patch('/v1/account/name') ->label('scope', 'account') ->label('sdk.namespace', 'account') ->label('sdk.method', 'updateName') - ->label('sdk.description', 'Update currently logged in user account name.') + ->label('sdk.description', '/docs/references/account/update-name.md') ->param('name', '', function () { return new Text(100); }, 'User name') ->action( function ($name) use ($response, $user, $projectDB, $audit) { @@ -225,7 +225,7 @@ $utopia->patch('/v1/account/password') ->label('scope', 'account') ->label('sdk.namespace', 'account') ->label('sdk.method', 'updatePassword') - ->label('sdk.description', 'Update currently logged in user password. For validation, user is required to pass the password twice.') + ->label('sdk.description', '/docs/references/account/update-password.md') ->param('password', '', function () { return new Password(); }, 'New password') ->param('old-password', '', function () { return new Password(); }, 'Old password') ->action( @@ -254,7 +254,7 @@ $utopia->patch('/v1/account/email') ->label('scope', 'account') ->label('sdk.namespace', 'account') ->label('sdk.method', 'updateEmail') - ->label('sdk.description', 'Update currently logged in user account email address. After changing user address, user confirmation status is being reset and a new confirmation mail is sent. For security measures, user password is required to complete this request.') + ->label('sdk.description', '/docs/references/account/update-email.md') ->param('email', '', function () { return new Email(); }, 'Email Address') ->param('password', '', function () { return new Password(); }, 'User Password') ->action( @@ -299,7 +299,7 @@ $utopia->patch('/v1/account/prefs') ->label('sdk.namespace', 'account') ->label('sdk.method', 'updatePrefs') ->param('prefs', '', function () { return new \Utopia\Validator\Mock();}, 'Prefs key-value JSON object string.') - ->label('sdk.description', 'Update currently logged in user account preferences. You can pass only the specific settings you wish to update.') + ->label('sdk.description', '/docs/references/account/update-prefs.md') ->action( function ($prefs) use ($response, $user, $projectDB, $audit) { $user = $projectDB->updateDocument(array_merge($user->getArrayCopy(), [ @@ -322,7 +322,7 @@ $utopia->delete('/v1/account') ->label('scope', 'account') ->label('sdk.namespace', 'account') ->label('sdk.method', 'delete') - ->label('sdk.description', 'Delete currently logged in user account.') + ->label('sdk.description', '/docs/references/account/delete.md') ->action( function () use ($response, $request, $user, $projectDB, $audit) { $user = $projectDB->updateDocument(array_merge($user->getArrayCopy(), [ diff --git a/app/controllers/auth.php b/app/controllers/auth.php index 1d0e260c9..c1f2ec008 100644 --- a/app/controllers/auth.php +++ b/app/controllers/auth.php @@ -24,7 +24,7 @@ $utopia->post('/v1/auth/register') ->label('scope', 'auth') ->label('sdk.namespace', 'auth') ->label('sdk.method', 'register') - ->label('sdk.description', '/docs/refernces/register.md') + ->label('sdk.description', '/docs/references/auth/register.md') ->label('sdk.cookies', true) ->label('abuse-limit', 10) ->param('email', '', function () { return new Email(); }, 'Account email') @@ -190,7 +190,7 @@ $utopia->post('/v1/auth/register/confirm') ->label('scope', 'public') ->label('sdk.namespace', 'auth') ->label('sdk.method', 'confirm') - ->label('sdk.description', '/docs/refernces/confirm.md') + ->label('sdk.description', '/docs/references/auth/confirm.md') ->label('abuse-limit', 10) ->label('abuse-key', 'url:{url},userId:{param-userId}') ->param('userId', '', function () { return new UID(); }, 'User unique ID') @@ -240,7 +240,7 @@ $utopia->post('/v1/auth/register/confirm/resend') ->label('scope', 'account') ->label('sdk.namespace', 'auth') ->label('sdk.method', 'confirmResend') - ->label('sdk.description', '/docs/refernces/confirm-resend.md') + ->label('sdk.description', '/docs/references/auth/confirm-resend.md') ->label('abuse-limit', 10) ->label('abuse-key', 'url:{url},userId:{param-userId}') ->param('confirm', '', function () use ($clients) { return new Host($clients); }, 'Confirmation URL to redirect user to your app after confirm token has been sent to user email.') @@ -304,7 +304,7 @@ $utopia->post('/v1/auth/login') ->label('scope', 'auth') ->label('sdk.namespace', 'auth') ->label('sdk.method', 'login') - ->label('sdk.description', '/docs/refernces/login.md') + ->label('sdk.description', '/docs/references/auth/login.md') ->label('sdk.cookies', true) ->label('abuse-limit', 10) ->label('abuse-key', 'url:{url},email:{param-email}') @@ -389,7 +389,7 @@ $utopia->delete('/v1/auth/logout') ->label('scope', 'account') ->label('sdk.namespace', 'auth') ->label('sdk.method', 'logout') - ->label('sdk.description', '/docs/refernces/logout.md') + ->label('sdk.description', '/docs/references/auth/logout.md') ->label('abuse-limit', 100) ->action( function () use ($response, $request, $user, $projectDB, $audit, $webhook) { @@ -420,7 +420,7 @@ $utopia->delete('/v1/auth/logout/:id') ->label('scope', 'account') ->label('sdk.namespace', 'auth') ->label('sdk.method', 'logoutBySession') - ->label('sdk.description', '/docs/refernces/logout-by-session.md') + ->label('sdk.description', '/docs/references/auth/logout-by-session.md') ->label('abuse-limit', 100) ->param('id', null, function () { return new UID(); }, 'User specific session unique ID number. if 0 delete all sessions.') ->action( @@ -453,7 +453,7 @@ $utopia->post('/v1/auth/recovery') ->label('scope', 'auth') ->label('sdk.namespace', 'auth') ->label('sdk.method', 'recovery') - ->label('sdk.description', '/docs/refernces/recovery.md') + ->label('sdk.description', '/docs/references/auth/recovery.md') ->label('abuse-limit', 10) ->label('abuse-key', 'url:{url},email:{param-email}') ->param('email', '', function () { return new Email(); }, 'User account email address.') @@ -533,7 +533,7 @@ $utopia->put('/v1/auth/recovery/reset') ->label('scope', 'auth') ->label('sdk.namespace', 'auth') ->label('sdk.method', 'recoveryReset') - ->label('sdk.description', '/docs/refernces/recovery-reset.md') + ->label('sdk.description', '/docs/references/auth/recovery-reset.md') ->label('abuse-limit', 10) ->label('abuse-key', 'url:{url},userId:{param-userId}') ->param('userId', '', function () { return new UID(); }, 'User account email address.') diff --git a/app/controllers/avatars.php b/app/controllers/avatars.php index 0f4226449..432fd0c62 100644 --- a/app/controllers/avatars.php +++ b/app/controllers/avatars.php @@ -1,6 +1,6 @@ get('/v1/avatars/credit-cards/:code') ->label('scope', 'avatars.read') ->label('sdk.namespace', 'avatars') ->label('sdk.method', 'getCreditCard') - ->label('sdk.description', 'Need to display your users with your billing method or there payment methods? The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings.') + ->label('sdk.description', '/docs/references/avatars/get-credit-card.md') ->action(function ($code, $width, $height, $quality) use ($avatarCallback) { return $avatarCallback('credit-cards', $code, $width, $height, $quality); }); @@ -107,7 +107,7 @@ $utopia->get('/v1/avatars/browsers/:code') ->label('scope', 'avatars.read') ->label('sdk.namespace', 'avatars') ->label('sdk.method', 'getBrowser') - ->label('sdk.description', 'You can use this endpoint to show different browser icons to your users, The code argument receives the browser code as appear in your user /account/sessions endpoint. Use width, height and quality arguments to change the output settings.') + ->label('sdk.description', '/docs/references/avatars/get-browser.md') ->action(function ($code, $width, $height, $quality) use ($avatarCallback) { return $avatarCallback('browsers', $code, $width, $height, $quality); }); @@ -120,7 +120,7 @@ $utopia->get('/v1/avatars/flags/:code') ->label('scope', 'avatars.read') ->label('sdk.namespace', 'avatars') ->label('sdk.method', 'getFlag') - ->label('sdk.description', 'You can use this endpoint to show different country flags icons to your users, The code argument receives the a 2 letter country code. Use width, height and quality arguments to change the output settings.') + ->label('sdk.description', '/docs/references/avatars/get-flag.md') ->action(function ($code, $width, $height, $quality) use ($avatarCallback) { return $avatarCallback('flags', $code, $width, $height, $quality); }); @@ -132,9 +132,9 @@ $utopia->get('/v1/avatars/image') ->label('scope', 'avatars.read') ->label('sdk.namespace', 'avatars') ->label('sdk.method', 'getImage') - ->label('sdk.description', 'Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in cases, you want to make sure a 3rd party image is properly served using a TLS protocol.') + ->label('sdk.description', '/docs/references/avatars/get-image.md') ->action( - function ($url, $width, $height) use ($response, $request, $version) { + function ($url, $width, $height) use ($response) { $quality = 80; $output = 'png'; $date = date('D, d M Y H:i:s', time() + (60 * 60 * 24 * 45)).' GMT'; // 45 days cache @@ -197,9 +197,9 @@ $utopia->get('/v1/avatars/favicon') ->label('scope', 'avatars.read') ->label('sdk.namespace', 'avatars') ->label('sdk.method', 'getFavicon') - ->label('sdk.description', 'Use this endpoint to fetch the favorite icon (AKA favicon) of a any remote website URL.') + ->label('sdk.description', '/docs/references/avatars/get-favicon.md') ->action( - function ($url) use ($response, $request, $version) { + function ($url) use ($response, $version) { $width = 56; $height = 56; $quality = 80; @@ -349,7 +349,7 @@ $utopia->get('/v1/avatars/qr') ->label('scope', 'avatars.read') ->label('sdk.namespace', 'avatars') ->label('sdk.method', 'getQR') - ->label('sdk.description', 'Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image.') + ->label('sdk.description', '/docs/references/avatars/get-qr.md') ->action( function ($text, $size, $margin, $download) use ($response) { $renderer = new ImageRenderer( diff --git a/app/controllers/database.php b/app/controllers/database.php index 6b2a2460a..4b18b0a58 100644 --- a/app/controllers/database.php +++ b/app/controllers/database.php @@ -26,7 +26,7 @@ $utopia->get('/v1/database') ->label('scope', 'collections.read') ->label('sdk.namespace', 'database') ->label('sdk.method', 'listCollections') - ->label('sdk.description', 'Get a list of all the user collections. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project collections. [Learn more about different API modes](/docs/modes).') + ->label('sdk.description', '/docs/references/database/list-collections.md') ->param('search', '', function () { return new Text(256); }, 'Search term to filter your list results.', true) ->param('limit', 25, function () { return new Range(0, 100); }, 'Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.', true) ->param('offset', 0, function () { return new Range(0, 40000); }, 'Results offset. The default value is 0. Use this param to manage pagination.', true) @@ -73,7 +73,7 @@ $utopia->get('/v1/database/:collectionId') ->label('scope', 'collections.read') ->label('sdk.namespace', 'database') ->label('sdk.method', 'getCollection') - ->label('sdk.description', 'Get collection by its unique ID. This endpoint response returns a JSON object with the collection metadata.') + ->label('sdk.description', '/docs/references/database/get-collection.md') ->param('collectionId', '', function () { return new UID(); }, 'Collection unique ID.') ->action( function ($collectionId) use ($response, $projectDB) { @@ -93,7 +93,7 @@ $utopia->post('/v1/database') ->label('scope', 'collections.write') ->label('sdk.namespace', 'database') ->label('sdk.method', 'createCollection') - ->label('sdk.description', 'Create a new Collection.') + ->label('sdk.description', '/docs/references/database/create-collection.md') ->param('name', '', function () { return new Text(256); }, 'Collection name.') ->param('read', [], function () { return new ArrayList(new Text(64)); }, 'An array of strings with read permissions. [Learn more about permissions and roles](/docs/permissions).', true) ->param('write', [], function () { return new ArrayList(new Text(64)); }, 'An array of strings with write permissions. [Learn more about permissions and roles](/docs/permissions).', true) @@ -160,7 +160,7 @@ $utopia->put('/v1/database/:collectionId') ->label('scope', 'collections.write') ->label('sdk.namespace', 'database') ->label('sdk.method', 'updateCollection') - ->label('sdk.description', 'Update collection by its unique ID.') + ->label('sdk.description', '/docs/references/database/update-collection.md') ->param('collectionId', '', function () { return new UID(); }, 'Collection unique ID.') ->param('name', null, function () { return new Text(256); }, 'Collection name.') ->param('read', [], function () { return new ArrayList(new Text(64)); }, 'An array of strings with read permissions. [Learn more about permissions and roles](/docs/permissions).', true) @@ -210,7 +210,7 @@ $utopia->delete('/v1/database/:collectionId') ->label('scope', 'collections.write') ->label('sdk.namespace', 'database') ->label('sdk.method', 'deleteCollection') - ->label('sdk.description', 'Delete a collection by its unique ID. Only users with write permissions have access to delete this resource.') + ->label('sdk.description', '/docs/references/database/delete-collection.md') ->param('collectionId', '', function () { return new UID(); }, 'Collection unique ID.') ->action( function ($collectionId) use ($response, $projectDB, $audit) { @@ -239,7 +239,7 @@ $utopia->get('/v1/database/:collectionId/documents') ->label('scope', 'documents.read') ->label('sdk.namespace', 'database') ->label('sdk.method', 'listDocuments') - ->label('sdk.description', 'Get a list of all the user documents. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project documents. [Learn more about different API modes](/docs/modes).') + ->label('sdk.description', '/docs/references/database/list-documents.md') ->param('collectionId', null, function () { return new UID(); }, 'Collection unique ID.') ->param('filters', [], function () { return new ArrayList(new Text(128)); }, 'Array of filter strings. Each filter is constructed from a key name, comparison operator (=, !=, >, <, <=, >=) and a value. You can also use a dot (.) separator in attribute names to filter by child document attributes. Examples: \'name=John Doe\' or \'category.$uid>=5bed2d152c362\'', true) ->param('offset', 0, function () { return new Range(0, 900000000); }, 'Offset value. Use this value to manage pagination.', true) @@ -305,7 +305,7 @@ $utopia->get('/v1/database/:collectionId/documents/:documentId') ->label('scope', 'documents.read') ->label('sdk.namespace', 'database') ->label('sdk.method', 'getDocument') - ->label('sdk.description', 'Get document by its unique ID. This endpoint response returns a JSON object with the document data.') + ->label('sdk.description', '/docs/references/database/get-document.md') ->param('collectionId', null, function () { return new UID(); }, 'Collection unique ID') ->param('documentId', null, function () { return new UID(); }, 'Document unique ID') ->action( @@ -350,7 +350,7 @@ $utopia->post('/v1/database/:collectionId/documents') ->label('scope', 'documents.write') ->label('sdk.namespace', 'database') ->label('sdk.method', 'createDocument') - ->label('sdk.description', 'Create a new Document.') + ->label('sdk.description', '/docs/references/database/create-document.md') ->param('collectionId', null, function () { return new UID(); }, 'Collection unique ID.') ->param('data', [], function () { return new \Utopia\Validator\Mock(); }, 'Document data as JSON string.') ->param('read', [], function () { return new ArrayList(new Text(64)); }, 'An array of strings with read permissions. [Learn more about permissions and roles](/docs/permissions).', true) @@ -456,6 +456,7 @@ $utopia->patch('/v1/database/:collectionId/documents/:documentId') ->label('scope', 'documents.write') ->label('sdk.namespace', 'database') ->label('sdk.method', 'updateDocument') + ->label('sdk.description', '/docs/references/database/update-document.md') ->param('collectionId', null, function () { return new UID(); }, 'Collection unique ID') ->param('documentId', null, function () { return new UID(); }, 'Document unique ID') ->param('data', [], function () { return new \Utopia\Validator\Mock(); }, 'Document data as JSON string') @@ -532,7 +533,7 @@ $utopia->delete('/v1/database/:collectionId/documents/:documentId') ->label('scope', 'documents.write') ->label('sdk.namespace', 'database') ->label('sdk.method', 'deleteDocument') - ->label('sdk.description', 'Delete document by its unique ID. This endpoint deletes only the parent documents, his attributes and relations to other documents. Child documents **will not** be deleted.') + ->label('sdk.description', '/docs/references/database/delete-document.md') ->param('collectionId', null, function () { return new UID(); }, 'Collection unique ID') ->param('documentId', null, function () { return new UID(); }, 'Document unique ID') ->action( diff --git a/app/controllers/locale.php b/app/controllers/locale.php index f9c68c2c4..62c7c0b24 100644 --- a/app/controllers/locale.php +++ b/app/controllers/locale.php @@ -11,7 +11,7 @@ $utopia->get('/v1/locale') ->label('scope', 'locale.read') ->label('sdk.namespace', 'locale') ->label('sdk.method', 'getLocale') - ->label('sdk.description', 'Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in supported language.') + ->label('sdk.description', '/docs/references/locale/get-locale.md') ->action( function () use ($response, $request, $utopia) { $eu = include __DIR__.'/../config/eu.php'; @@ -68,7 +68,7 @@ $utopia->get('/v1/locale/countries') ->label('scope', 'locale.read') ->label('sdk.namespace', 'locale') ->label('sdk.method', 'getCountries') - ->label('sdk.description', 'List of all countries. You can use the locale header to get the data in supported language.') + ->label('sdk.description', '/docs/references/locale/get-countries.md') ->action( function () use ($response, $request) { $list = Locale::getText('countries'); /* @var $list array */ @@ -84,7 +84,7 @@ $utopia->get('/v1/locale/countries/eu') ->label('scope', 'locale.read') ->label('sdk.namespace', 'locale') ->label('sdk.method', 'getCountriesEU') - ->label('sdk.description', 'List of all countries that are currently members of the EU. You can use the locale header to get the data in supported language. UK brexit date is currently set to 2019-10-31 and will be updated if and when needed.') + ->label('sdk.description', '/docs/references/locale/get-countries-eu.md') ->action( function () use ($response) { $countries = Locale::getText('countries'); /* @var $countries array */ @@ -108,7 +108,7 @@ $utopia->get('/v1/locale/countries/phones') ->label('scope', 'locale.read') ->label('sdk.namespace', 'locale') ->label('sdk.method', 'getCountriesPhones') - ->label('sdk.description', 'List of all countries phone codes. You can use the locale header to get the data in supported language.') + ->label('sdk.description', '/docs/references/locale/get-countries-phones.md') ->action( function () use ($response) { $list = include __DIR__.'/../config/phones.php'; /* @var $list array */ @@ -132,7 +132,7 @@ $utopia->get('/v1/locale/currencies') ->label('scope', 'locale.read') ->label('sdk.namespace', 'locale') ->label('sdk.method', 'getCurrencies') - ->label('sdk.description', 'List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in supported language.') + ->label('sdk.description', '/docs/references/locale/get-currencies.md') ->action( function () use ($response) { $currencies = include __DIR__.'/../config/currencies.php'; diff --git a/app/controllers/storage.php b/app/controllers/storage.php index 81c1b6cea..964ecb85a 100644 --- a/app/controllers/storage.php +++ b/app/controllers/storage.php @@ -118,7 +118,7 @@ $utopia->get('/v1/storage/files') ->label('scope', 'files.read') ->label('sdk.namespace', 'storage') ->label('sdk.method', 'listFiles') - ->label('sdk.description', 'Get a list of all the user files. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project files. [Learn more about different API modes](/docs/modes).') + ->label('sdk.description', '/docs/references/storage/list-files.md') ->param('search', '', function () { return new Text(256); }, 'Search term to filter your list results.', true) ->param('limit', 25, function () { return new Range(0, 100); }, 'Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.', true) ->param('offset', 0, function () { return new Range(0, 2000); }, 'Results offset. The default value is 0. Use this param to manage pagination.', true) @@ -150,7 +150,7 @@ $utopia->get('/v1/storage/files/:fileId') ->label('scope', 'files.read') ->label('sdk.namespace', 'storage') ->label('sdk.method', 'getFile') - ->label('sdk.description', 'Get file by its unique ID. This endpoint response returns a JSON object with the file metadata.') + ->label('sdk.description', '/docs/references/storage/get-file.md') ->param('fileId', '', function () { return new UID(); }, 'File unique ID.') ->action( function ($fileId) use ($response, $projectDB) { @@ -169,7 +169,7 @@ $utopia->get('/v1/storage/files/:fileId/preview') ->label('scope', 'files.read') ->label('sdk.namespace', 'storage') ->label('sdk.method', 'getFilePreview') - ->label('sdk.description', 'Get file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets will return file icon image. You can also pass query string arguments for cutting and resizing your preview image.') + ->label('sdk.description', '/docs/references/storage/get-file-preview.md') ->param('fileId', '', function () { return new UID(); }, 'File unique ID') ->param('width', 0, function () { return new Range(0, 4000); }, 'Resize preview image width, Pass an integer between 0 to 4000', true) ->param('height', 0, function () { return new Range(0, 4000); }, 'Resize preview image height, Pass an integer between 0 to 4000', true) @@ -281,7 +281,7 @@ $utopia->get('/v1/storage/files/:fileId/download') ->label('scope', 'files.read') ->label('sdk.namespace', 'storage') ->label('sdk.method', 'getFileDownload') - ->label('sdk.description', 'Get file content by its unique ID. The endpoint response return with a \'Content-Disposition: attachment\' header that tells the browser to start downloading the file to user downloads directory.') + ->label('sdk.description', '/docs/references/storage/get-file-download.md') ->param('fileId', '', function () { return new UID(); }, 'File unique ID.') ->action( function ($fileId) use ($response, $request, $projectDB) { @@ -331,7 +331,7 @@ $utopia->get('/v1/storage/files/:fileId/view') ->label('scope', 'files.read') ->label('sdk.namespace', 'storage') ->label('sdk.method', 'getFileView') - ->label('sdk.description', 'Get file content by its unique ID. This endpoint is similar to the download method but returns with no \'Content-Disposition: attachment\' header.') + ->label('sdk.description', '/docs/references/storage/get-file-view.md') ->param('fileId', '', function () { return new UID(); }, 'File unique ID.') ->param('as', '', function () { return new WhiteList(['pdf', /*'html',*/ 'text']); }, 'Choose a file format to convert your file to. Currently you can only convert word and pdf files to pdf or txt. This option is currently experimental only, use at your own risk.', true) ->action( @@ -398,7 +398,7 @@ $utopia->post('/v1/storage/files') ->label('scope', 'files.write') ->label('sdk.namespace', 'storage') ->label('sdk.method', 'createFile') - ->label('sdk.description', 'Create a new file. The user who creates the file will automatically be assigned to read and write access unless he has passed custom values for read and write arguments.') + ->label('sdk.description', '/docs/references/storage/create-file.md') ->label('sdk.consumes', 'multipart/form-data') ->param('files', [], function () { return new File(); }, 'Binary Files.', false) ->param('read', [], function () { return new ArrayList(new Text(64)); }, 'An array of strings with read permissions. [Learn more about permissions and roles](/docs/permissions).', true) @@ -521,7 +521,7 @@ $utopia->put('/v1/storage/files/:fileId') ->label('scope', 'files.write') ->label('sdk.namespace', 'storage') ->label('sdk.method', 'updateFile') - ->label('sdk.description', 'Update file by its unique ID. Only users with write permissions have access to update this resource.') + ->label('sdk.description', '/docs/references/storage/update-file.md') ->param('fileId', '', function () { return new UID(); }, 'File unique ID.') ->param('read', [], function () { return new ArrayList(new Text(64)); }, 'An array of strings with read permissions. [Learn more about permissions and roles](/docs/permissions).', true) ->param('write', [], function () { return new ArrayList(new Text(64)); }, 'An array of strings with write permissions. [Learn more about permissions and roles](/docs/permissions).', true) @@ -555,7 +555,7 @@ $utopia->delete('/v1/storage/files/:fileId') ->label('scope', 'files.write') ->label('sdk.namespace', 'storage') ->label('sdk.method', 'deleteFile') - ->label('sdk.description', 'Delete a file by its unique ID. Only users with write permissions have access to delete this resource.') + ->label('sdk.description', '/docs/references/storage/delete-file.md') ->param('fileId', '', function () { return new UID(); }, 'File unique ID.') ->action( function ($fileId) use ($response, $projectDB, $audit, $usage) { diff --git a/app/controllers/teams.php b/app/controllers/teams.php index 84da0f23e..9ab3dfe53 100644 --- a/app/controllers/teams.php +++ b/app/controllers/teams.php @@ -23,7 +23,7 @@ $utopia->get('/v1/teams') ->label('scope', 'teams.read') ->label('sdk.namespace', 'teams') ->label('sdk.method', 'listTeams') - ->label('sdk.description', 'Get a list of all the current user teams. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project teams. [Learn more about different API modes](/docs/modes).') + ->label('sdk.description', '/docs/references/teams/list-teams.md') ->param('search', '', function () { return new Text(256); }, 'Search term to filter your list results.', true) ->param('limit', 25, function () { return new Range(0, 100); }, 'Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.', true) ->param('offset', 0, function () { return new Range(0, 2000); }, 'Results offset. The default value is 0. Use this param to manage pagination.', true) @@ -51,7 +51,7 @@ $utopia->get('/v1/teams/:teamId') ->label('scope', 'teams.read') ->label('sdk.namespace', 'teams') ->label('sdk.method', 'getTeam') - ->label('sdk.description', 'Get team by its unique ID. All team members have read access for this resource.') + ->label('sdk.description', '/docs/references/teams/get-team.md') ->param('teamId', '', function () { return new UID(); }, 'Team unique ID.') ->action( function ($teamId) use ($response, $projectDB) { @@ -70,7 +70,7 @@ $utopia->get('/v1/teams/:teamId/members') ->label('scope', 'teams.read') ->label('sdk.namespace', 'teams') ->label('sdk.method', 'getTeamMembers') - ->label('sdk.description', 'Get team members by the team unique ID. All team members have read access for this list of resources.') + ->label('sdk.description', '/docs/references/teams/get-team-members.md') ->param('teamId', '', function () { return new UID(); }, 'Team unique ID.') ->action( function ($teamId) use ($response, $projectDB) { @@ -122,7 +122,7 @@ $utopia->post('/v1/teams') ->label('scope', 'teams.write') ->label('sdk.namespace', 'teams') ->label('sdk.method', 'createTeam') - ->label('sdk.description', 'Create a new team. The user who creates the team will automatically be assigned as the owner of the team. The team owner can invite new members, who will be able add new owners and update or delete the team from your project.') + ->label('sdk.description', '/docs/references/teams/create-team.md') ->param('name', null, function () { return new Text(100); }, 'Team name.') ->param('roles', ['owner'], function () { return new ArrayList(new Text(128)); }, 'User roles array. Use this param to set the roles in the team for the user who created the team. The default role is **owner**, a role can be any string.', true) ->action( @@ -184,7 +184,7 @@ $utopia->put('/v1/teams/:teamId') ->label('scope', 'teams.write') ->label('sdk.namespace', 'teams') ->label('sdk.method', 'updateTeam') - ->label('sdk.description', 'Update team by its unique ID. Only team owners have write access for this resource.') + ->label('sdk.description', '/docs/references/teams/update-team.md') ->param('teamId', '', function () { return new UID(); }, 'Team unique ID.') ->param('name', null, function () { return new Text(100); }, 'Team name.') ->action( @@ -212,7 +212,7 @@ $utopia->delete('/v1/teams/:teamId') ->label('scope', 'teams.write') ->label('sdk.namespace', 'teams') ->label('sdk.method', 'deleteTeam') - ->label('sdk.description', 'Delete team by its unique ID. Only team owners have write access for this resource.') + ->label('sdk.description', '/docs/references/teams/delete-team.md') ->param('teamId', '', function () { return new UID(); }, 'Team unique ID.') ->action( function ($teamId) use ($response, $projectDB) { @@ -252,7 +252,7 @@ $utopia->post('/v1/teams/:teamId/memberships') ->label('scope', 'account') ->label('sdk.namespace', 'teams') ->label('sdk.method', 'createTeamMembership') - ->label('sdk.description', "Use this endpoint to invite a new member to your team. An email with a link to join the team will be sent to the new member email address. If member doesn't exists in the project it will be automatically created.\n\nUse the redirect parameter to redirect the user from the invitation email back to your app. When the user is redirected, use the /teams/{teamId}/memberships/{inviteId}/status endpoint to finally join the user to the team.\n\nPlease notice that in order to avoid a [Redirect Attacks](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URL's are the once from domains you have set when added your platforms in the console interface.") + ->label('sdk.description', '/docs/references/teams/create-team-membership.md') ->param('teamId', '', function () { return new UID(); }, 'Team unique ID.') ->param('email', '', function () { return new Email(); }, 'New team member email address.') ->param('name', '', function () { return new Text(100); }, 'New team member name.', true) @@ -395,7 +395,7 @@ $utopia->post('/v1/teams/:teamId/memberships/:inviteId/resend') ->label('scope', 'account') ->label('sdk.namespace', 'teams') ->label('sdk.method', 'createTeamMembershipResend') - ->label('sdk.description', 'Use this endpoint to resend your invitation email for a user to join a team.') + ->label('sdk.description', '/docs/references/teams/create-team-membership-resend.md') ->param('teamId', '', function () { return new UID(); }, 'Team unique ID.') ->param('inviteId', '', function () { return new UID(); }, 'Invite unique ID.') ->param('redirect', '', function () use ($clients) { return new Host($clients); }, 'Reset page to redirect user back to your app from the invitation email.') @@ -475,7 +475,7 @@ $utopia->patch('/v1/teams/:teamId/memberships/:inviteId/status') ->label('scope', 'auth') ->label('sdk.namespace', 'teams') ->label('sdk.method', 'updateTeamMembershipStatus') - ->label('sdk.description', "Use this endpoint to let user accept an invitation to join a team after he is being redirect back to your app from the invitation email. Use the success and failure URL's to redirect users back to your application after the request completes.\n\nPlease notice that in order to avoid a [Redirect Attacks](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URL's are the once from domains you have set when added your platforms in the console interface.\n\nWhen not using the success or failure redirect arguments this endpoint will result with a 200 status code on success and with 401 status error on failure. This behavior was applied to help the web clients deal with browsers who don't allow to set 3rd party HTTP cookies needed for saving the account session token.") + ->label('sdk.description', '/docs/references/teams/update-team-membership-status.md') ->label('sdk.cookies', true) ->param('teamId', '', function () { return new UID(); }, 'Team unique ID.') ->param('inviteId', '', function () { return new UID(); }, 'Invite unique ID') @@ -607,7 +607,7 @@ $utopia->delete('/v1/teams/:teamId/memberships/:inviteId') ->label('scope', 'account') ->label('sdk.namespace', 'teams') ->label('sdk.method', 'deleteTeamMembership') - ->label('sdk.description', 'This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member.') + ->label('sdk.description', '/docs/references/teams/delete-team-membership.md') ->param('teamId', '', function () { return new UID(); }, 'Team unique ID.') ->param('inviteId', '', function () { return new UID(); }, 'Invite unique ID') ->action( diff --git a/app/controllers/users.php b/app/controllers/users.php index 7cc4b4ed3..76153386b 100644 --- a/app/controllers/users.php +++ b/app/controllers/users.php @@ -22,7 +22,7 @@ $utopia->get('/v1/users') ->label('scope', 'users.read') ->label('sdk.namespace', 'users') ->label('sdk.method', 'listUsers') - ->label('sdk.description', 'Get a list of all the project users. You can use the query params to filter your results.') + ->label('sdk.description', '/docs/references/users/list-users.md') ->param('search', '', function () { return new Text(256); }, 'Search term to filter your list results.', true) ->param('limit', 25, function () { return new Range(0, 100); }, 'Results limit value. By default will return maximum 25 results. Maximum of 100 results allowed per request.', true) ->param('offset', 0, function () { return new Range(0, 2000); }, 'Results offset. The default value is 0. Use this param to manage pagination.', true) @@ -74,7 +74,7 @@ $utopia->get('/v1/users/:userId') ->label('scope', 'users.read') ->label('sdk.namespace', 'users') ->label('sdk.method', 'getUser') - ->label('sdk.description', 'Get user by its unique ID.') + ->label('sdk.description', '/docs/references/users/get-user.md') ->param('userId', '', function () { return new UID(); }, 'User unique ID.') ->action( function ($userId) use ($response, $projectDB, $providers) { @@ -113,7 +113,7 @@ $utopia->get('/v1/users/:userId/prefs') ->label('scope', 'users.read') ->label('sdk.namespace', 'users') ->label('sdk.method', 'getUserPrefs') - ->label('sdk.description', 'Get user preferences by its unique ID.') + ->label('sdk.description', '/docs/references/users/get-user-prefs.md') ->param('userId', '', function () { return new UID(); }, 'User unique ID.') ->action( function ($userId) use ($response, $projectDB) { @@ -144,7 +144,7 @@ $utopia->get('/v1/users/:userId/sessions') ->label('scope', 'users.read') ->label('sdk.namespace', 'users') ->label('sdk.method', 'getUserSessions') - ->label('sdk.description', 'Get user sessions list by its unique ID.') + ->label('sdk.description', '/docs/references/users/get-user-sessions.md') ->param('userId', '', function () { return new UID(); }, 'User unique ID.') ->action( function ($userId) use ($response, $projectDB) { @@ -206,7 +206,7 @@ $utopia->get('/v1/users/:userId/logs') ->label('scope', 'users.read') ->label('sdk.namespace', 'users') ->label('sdk.method', 'getUserLogs') - ->label('sdk.description', 'Get user activity logs list by its unique ID.') + ->label('sdk.description', '/docs/references/users/get-user-logs.md') ->param('userId', '', function () { return new UID(); }, 'User unique ID.') ->action( function ($userId) use ($response, $register, $projectDB, $project) { @@ -267,7 +267,7 @@ $utopia->post('/v1/users') ->label('scope', 'users.write') ->label('sdk.namespace', 'users') ->label('sdk.method', 'createUser') - ->label('sdk.description', 'Create a new user.') + ->label('sdk.description', '/docs/references/users/create-user.md') ->param('email', '', function () { return new Email(); }, 'User account email.') ->param('password', '', function () { return new Password(); }, 'User account password.') ->param('name', '', function () { return new Text(100); }, 'User account name.', true) @@ -327,11 +327,11 @@ $utopia->post('/v1/users') ); $utopia->patch('/v1/users/:userId/status') - ->desc('Update user status') + ->desc('Update User Status') ->label('scope', 'users.write') ->label('sdk.namespace', 'users') ->label('sdk.method', 'updateUserStatus') - ->label('sdk.description', 'Update user status by its unique ID.') + ->label('sdk.description', '/docs/references/users/update-user-status.md') ->param('userId', '', function () { return new UID(); }, 'User unique ID.') ->param('status', '', function () { return new WhiteList([Auth::USER_STATUS_ACTIVATED, Auth::USER_STATUS_BLOCKED, Auth::USER_STATUS_UNACTIVATED]); }, 'User Status code. To activate the user pass '.Auth::USER_STATUS_ACTIVATED.', to blocking the user pass '.Auth::USER_STATUS_BLOCKED.' and for disabling the user pass '.Auth::USER_STATUS_UNACTIVATED) ->action( @@ -356,13 +356,13 @@ $utopia->patch('/v1/users/:userId/status') ); $utopia->patch('/v1/users/:userId/prefs') - ->desc('Update Account Prefs') + ->desc('Update User Prefs') ->label('scope', 'users.write') ->label('sdk.namespace', 'users') ->label('sdk.method', 'updateUserPrefs') + ->label('sdk.description', '/docs/references/users/update-user-prefs.md') ->param('userId', '', function () { return new UID(); }, 'User unique ID.') ->param('prefs', '', function () { return new \Utopia\Validator\Mock(); }, 'Prefs key-value JSON object string.') - ->label('sdk.description', 'Update user preferences by its unique ID. You can pass only the specific settings you wish to update.') ->action( function ($userId, $prefs) use ($response, $projectDB) { $user = $projectDB->getDocument($userId); @@ -387,8 +387,8 @@ $utopia->delete('/v1/users/:userId/sessions/:session') ->desc('Delete User Session') ->label('scope', 'users.write') ->label('sdk.namespace', 'users') - ->label('sdk.method', 'deleteUsersSession') - ->label('sdk.description', 'Delete user sessions by its unique ID.') + ->label('sdk.method', 'deleteUserSession') + ->label('sdk.description', '/docs/references/users/delete-user-session.md') ->label('abuse-limit', 100) ->param('userId', '', function () { return new UID(); }, 'User unique ID.') ->param('sessionId', null, function () { return new UID(); }, 'User unique session ID.') @@ -419,7 +419,7 @@ $utopia->delete('/v1/users/:userId/sessions') ->label('scope', 'users.write') ->label('sdk.namespace', 'users') ->label('sdk.method', 'deleteUserSessions') - ->label('sdk.description', 'Delete all user sessions by its unique ID.') + ->label('sdk.description', '/docs/references/users/delete-user-sessions.md') ->label('abuse-limit', 100) ->param('userId', '', function () { return new UID(); }, 'User unique ID.') ->action( diff --git a/app/init.php b/app/init.php index e34161964..c5b35f45b 100644 --- a/app/init.php +++ b/app/init.php @@ -24,7 +24,7 @@ const APP_EMAIL_TEAM = 'team@'.APP_DOMAIN; const APP_EMAIL_SECURITY = 'security@'.APP_DOMAIN; const APP_USERAGENT = APP_NAME.'-Server/%s Please report abuse at '.APP_EMAIL_SECURITY; const APP_MODE_ADMIN = 'admin'; -const APP_LOCALES = ['af', 'ar', 'cat', 'cz', 'de', 'en', 'es', 'fi', 'fr', 'gr', 'he', 'hi', 'hu', 'hy', 'id', 'it', 'jv', 'lt', 'nl', 'no', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'si', 'sl', 'sv', 'ta', 'tr', 'ua', 'vi', 'zh-cn', 'zh-tw']; +const APP_LOCALES = ['af', 'ar', 'cat', 'cz', 'de', 'en', 'es', 'fi', 'fr', 'gr', 'he', 'hi', 'hu', 'hy', 'id', 'it', 'ja', 'jv', 'lt', 'nl', 'no', 'pl', 'pt-br', 'pt-pt', 'ro', 'ru', 'si', 'sl', 'sv', 'ta', 'tr', 'ua', 'vi', 'zh-cn', 'zh-tw']; const APP_PAGING_LIMIT = 15; const APP_VERSION_STABLE = '0.2.0'; @@ -128,7 +128,6 @@ $locale = $request->getParam('locale', $request->getHeader('X-Appwrite-Locale', Locale::$exceptions = false; - Locale::setLanguage('af', include __DIR__.'/config/locale/af.php'); Locale::setLanguage('ar', include __DIR__.'/config/locale/ar.php'); Locale::setLanguage('cat', include __DIR__.'/config/locale/cat.php'); @@ -145,6 +144,7 @@ Locale::setLanguage('hu', include __DIR__.'/config/locale/hu.php'); Locale::setLanguage('hy', include __DIR__.'/config/locale/hy.php'); Locale::setLanguage('id', include __DIR__.'/config/locale/id.php'); Locale::setLanguage('it', include __DIR__.'/config/locale/it.php'); +Locale::setLanguage('jv', include __DIR__.'/config/locale/ja.php'); Locale::setLanguage('jv', include __DIR__.'/config/locale/jv.php'); Locale::setLanguage('lt', include __DIR__.'/config/locale/lt.php'); Locale::setLanguage('nl', include __DIR__.'/config/locale/nl.php'); @@ -164,6 +164,8 @@ Locale::setLanguage('vi', include __DIR__.'/config/locale/vi.php'); Locale::setLanguage('zh-cn', include __DIR__.'/config/locale/zh-cn.php'); Locale::setLanguage('zh-tw', include __DIR__.'/config/locale/zh-tw.php'); +Locale::setDefault('en'); + if (in_array($locale, APP_LOCALES)) { Locale::setDefault($locale); } diff --git a/app/sdks/dart/README.md b/app/sdks/dart/README.md index de99069bd..effbe7922 100644 --- a/app/sdks/dart/README.md +++ b/app/sdks/dart/README.md @@ -1,7 +1,7 @@ # Appwrite SDK for Dart ![License](https://img.shields.io/github/license/appwrite/sdk-for-dart.svg?v=1) -![Version](https://img.shields.io/badge/api%20version-latest-blue.svg?v=1) +![Version](https://img.shields.io/badge/api%20version-0.2.0-blue.svg?v=1) **WORK IN PROGRESS - NOT READY FOR USAGE - Want to help us improve this client SDK? Send a pull request to Appwrite [SDK generator repository](https://github.com/appwrite/sdk-generator).** diff --git a/app/sdks/dart/lib/client.dart b/app/sdks/dart/lib/client.dart index 77a4092f0..c03342e33 100644 --- a/app/sdks/dart/lib/client.dart +++ b/app/sdks/dart/lib/client.dart @@ -9,7 +9,7 @@ class Client { Dio http; Client() { - this.endPoint = 'https://https://appwrite.io/v1'; + this.endPoint = 'https://appwrite.io/v1'; this.headers = { 'content-type': 'application/json', 'x-sdk-version': 'appwrite:dart:0.0.2', @@ -23,7 +23,7 @@ class Client { } - /// Your Appwrite project ID. You can find your project ID in your Appwrite console project settings. + /// Your Appwrite project ID Client setProject(value) { this.addHeader('X-Appwrite-Project', value); @@ -31,7 +31,7 @@ class Client { } - /// Your Appwrite project secret key. You can can create a new API key from your Appwrite console API keys dashboard. + /// Your Appwrite project secret key Client setKey(value) { this.addHeader('X-Appwrite-Key', value); diff --git a/app/sdks/dart/lib/services/auth.dart b/app/sdks/dart/lib/services/auth.dart index 0db9f429d..45c0be71a 100644 --- a/app/sdks/dart/lib/services/auth.dart +++ b/app/sdks/dart/lib/services/auth.dart @@ -15,7 +15,7 @@ class Auth extends Service { /// the only valid redirect URL's are the once from domains you have set when /// added your platforms in the console interface. /// - /// When accessing this route using JavaScript from the browser, success and + /// When accessing this route using Javascript from the browser, success and /// failure parameter URLs are required. Appwrite server will respond with a /// 301 redirect status code and will set the user session cookie. This /// behavior is enforced because modern browsers are limiting 3rd party cookies @@ -116,7 +116,7 @@ class Auth extends Service { /// the only valid redirect URL's are the once from domains you have set when /// added your platforms in the console interface. /// - /// When accessing this route using JavaScript from the browser, success and + /// When accessing this route using Javascript from the browser, success and /// failure parameter URLs are required. Appwrite server will respond with a /// 301 redirect status code and will set the user session cookie. This /// behavior is enforced because modern browsers are limiting 3rd party cookies diff --git a/app/sdks/dart/lib/services/locale.dart b/app/sdks/dart/lib/services/locale.dart index 406d25bbb..29f87ac5e 100644 --- a/app/sdks/dart/lib/services/locale.dart +++ b/app/sdks/dart/lib/services/locale.dart @@ -49,9 +49,9 @@ class Locale extends Service { return await this.client.call('get', path: path, params: params); } - /// List of all currencies, including currency symbol, name, plural, and - /// decimal digits for all major and minor currencies. You can use the locale - /// header to get the data in supported language. + /// List of all currencies, including currency symol, name, plural, and decimal + /// digits for all major and minor currencies. You can use the locale header to + /// get the data in supported language. Future getCurrencies() async { String path = '/locale/currencies'; diff --git a/app/sdks/dart/lib/services/users.dart b/app/sdks/dart/lib/services/users.dart index 761206fb1..3e84ddd28 100644 --- a/app/sdks/dart/lib/services/users.dart +++ b/app/sdks/dart/lib/services/users.dart @@ -58,6 +58,17 @@ class Users extends Service { }; return await this.client.call('get', path: path, params: params); + } + /// Update user preferences by its unique ID. You can pass only the specific + /// settings you wish to update. + Future updateUserPrefs({userId, prefs}) async { + String path = '/users/{userId}/prefs'.replaceAll(RegExp('{userId}'), userId); + + Map params = { + 'prefs': prefs, + }; + + return await this.client.call('patch', path: path, params: params); } /// Get user sessions list by its unique ID. Future getUserSessions({userId}) async { @@ -78,7 +89,7 @@ class Users extends Service { return await this.client.call('delete', path: path, params: params); } /// Delete user sessions by its unique ID. - Future deleteUsersSession({userId, sessionId}) async { + Future deleteUserSession({userId, sessionId}) async { String path = '/users/{userId}/sessions/:session'.replaceAll(RegExp('{userId}'), userId); Map params = { diff --git a/app/sdks/js/README.md b/app/sdks/js/README.md index 4e6cd6bc0..65711154f 100644 --- a/app/sdks/js/README.md +++ b/app/sdks/js/README.md @@ -1,28 +1,52 @@ -# Appwrite SDK for Javascript +# Appwrite SDK for JavaScript ![License](https://img.shields.io/github/license/appwrite/sdk-for-js.svg?v=1) -![Version](https://img.shields.io/badge/api%20version-latest-blue.svg?v=1) +![Version](https://img.shields.io/badge/api%20version-0.2.0-blue.svg?v=1) **This SDK is compatible with Appwrite server version 0.2.0. For older versions, please check previous releases.** Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https://appwrite.io/docs](https://appwrite.io/docs) - - ![Appwrite](https://appwrite.io/images/github.png) ## Installation +### NPM + To install via [NPM](https://www.npmjs.com/): ```bash npm install appwrite --save ``` -Install with CDN: +If you're using a bundler (like [Browserify](http://browserify.org/) or [webpack](https://webpack.js.org/)), you can import the Appwrite module when you need it: + +```js +import * as Appwrite from "appwrite"; +``` + +### CDN + +To install with a CDN (content delivery network) add the following scripts to the bottom of your tag, but before you use any Appwrite services: ```html - + +``` + +## Getting Started + +Initialise the Appwrite SDK in your code, and setup your API credentials: + +```js + +// Init your JS SDK +var appwrite = new Appwrite(); + +appwrite + .setEndpoint('http://localhost/v1') // Set only when using self-hosted solution + .setProject('455x34dfkj') // Your Appwrite Project UID +; + ``` ## License diff --git a/app/sdks/js/docs/examples/projects/create-task.md b/app/sdks/js/docs/examples/projects/create-task.md index 3262b4d9f..433819846 100644 --- a/app/sdks/js/docs/examples/projects/create-task.md +++ b/app/sdks/js/docs/examples/projects/create-task.md @@ -4,7 +4,7 @@ sdk .setProject('') ; -let promise = sdk.projects.createTask('[PROJECT_ID]', '[NAME]', 'play', '', 0, 'GET', 'https://example.com'); +let promise = sdk.projects.createTask('[PROJECT_ID]', '[NAME]', 'play', '', 1, 'GET', 'https://example.com'); promise.then(function (response) { console.log(response); diff --git a/app/sdks/js/docs/examples/projects/create-webhook.md b/app/sdks/js/docs/examples/projects/create-webhook.md index 66a76c26c..1136c5eed 100644 --- a/app/sdks/js/docs/examples/projects/create-webhook.md +++ b/app/sdks/js/docs/examples/projects/create-webhook.md @@ -4,7 +4,7 @@ sdk .setProject('') ; -let promise = sdk.projects.createWebhook('[PROJECT_ID]', '[NAME]', [], '[URL]', 0); +let promise = sdk.projects.createWebhook('[PROJECT_ID]', '[NAME]', [], '[URL]', 1); promise.then(function (response) { console.log(response); diff --git a/app/sdks/js/docs/examples/users/delete-user-session.md b/app/sdks/js/docs/examples/users/delete-user-session.md new file mode 100644 index 000000000..4b5df5343 --- /dev/null +++ b/app/sdks/js/docs/examples/users/delete-user-session.md @@ -0,0 +1,13 @@ +let sdk = new Appwrite(); + +sdk + .setProject('') +; + +let promise = sdk.users.deleteUserSession('[USER_ID]', '[SESSION_ID]'); + +promise.then(function (response) { + console.log(response); +}, function (error) { + console.log(error); +}); \ No newline at end of file diff --git a/app/sdks/js/docs/examples/users/update-user-prefs.md b/app/sdks/js/docs/examples/users/update-user-prefs.md new file mode 100644 index 000000000..54208f5f9 --- /dev/null +++ b/app/sdks/js/docs/examples/users/update-user-prefs.md @@ -0,0 +1,13 @@ +let sdk = new Appwrite(); + +sdk + .setProject('') +; + +let promise = sdk.users.updateUserPrefs('[USER_ID]', '{}'); + +promise.then(function (response) { + console.log(response); +}, function (error) { + console.log(error); +}); \ No newline at end of file diff --git a/app/sdks/js/package.json b/app/sdks/js/package.json index 13499d41e..db7a1916a 100644 --- a/app/sdks/js/package.json +++ b/app/sdks/js/package.json @@ -2,7 +2,7 @@ "name": "appwrite", "homepage": "https://appwrite.io/support", "description": "Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https://appwrite.io/docs](https://appwrite.io/docs)", - "version": "1.0.22", + "version": "1.0.23", "license": "BSD-3-Clause", "main": "src/sdk.js", "repository": { diff --git a/app/sdks/js/src/sdk.js b/app/sdks/js/src/sdk.js index f142af9c2..5c8a0bc13 100644 --- a/app/sdks/js/src/sdk.js +++ b/app/sdks/js/src/sdk.js @@ -1,8 +1,11 @@ (function (window) { + + 'use strict'; + window.Appwrite = function () { let config = { - endpoint: 'https://https://appwrite.io/v1', + endpoint: 'https://appwrite.io/v1', project: '', key: '', locale: '', @@ -22,8 +25,7 @@ /** * Set Project * - * Your Appwrite project ID. You can find your project ID in your Appwrite -\ * console project settings. + * Your Appwrite project ID * * @param value string * @@ -41,8 +43,7 @@ /** * Set Key * - * Your Appwrite project secret key. You can can create a new API key from -\ * your Appwrite console API keys dashboard. + * Your Appwrite project secret key * * @param value string * @@ -138,7 +139,7 @@ globalParams.push({key: key, value: value}); }; - addGlobalHeader('x-sdk-version', 'appwrite:javascript:1.0.22'); + addGlobalHeader('x-sdk-version', 'appwrite:javascript:1.0.23'); addGlobalHeader('content-type', ''); /** @@ -304,14 +305,15 @@ * Get currently logged in user data as JSON object. * * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ get: function() { let path = '/account'; + let payload = {}; + return http - .get(path, {'content-type': 'application/json'}, - { - }); + .get(path, {'content-type': 'application/json'}, payload); }, /** @@ -320,14 +322,15 @@ * Delete currently logged in user account. * * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ delete: function() { let path = '/account'; + let payload = {}; + return http - .delete(path, {'content-type': 'application/json'}, - { - }); + .delete(path, {'content-type': 'application/json'}, payload); }, /** @@ -341,7 +344,8 @@ * @param {string} email * @param {string} password * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ updateEmail: function(email, password) { if(email === undefined) { throw new Error('Missing required parameter: "email"'); @@ -353,12 +357,18 @@ let path = '/account/email'; + let payload = {}; + + if(email) { + payload['email'] = email; + } + + if(password) { + payload['password'] = password; + } + return http - .patch(path, {'content-type': 'application/json'}, - { - 'email': email, - 'password': password - }); + .patch(path, {'content-type': 'application/json'}, payload); }, /** @@ -368,7 +378,8 @@ * * @param {string} name * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ updateName: function(name) { if(name === undefined) { throw new Error('Missing required parameter: "name"'); @@ -376,11 +387,14 @@ let path = '/account/name'; + let payload = {}; + + if(name) { + payload['name'] = name; + } + return http - .patch(path, {'content-type': 'application/json'}, - { - 'name': name - }); + .patch(path, {'content-type': 'application/json'}, payload); }, /** @@ -392,7 +406,8 @@ * @param {string} password * @param {string} oldPassword * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ updatePassword: function(password, oldPassword) { if(password === undefined) { throw new Error('Missing required parameter: "password"'); @@ -404,12 +419,18 @@ let path = '/account/password'; + let payload = {}; + + if(password) { + payload['password'] = password; + } + + if(oldPassword) { + payload['old-password'] = oldPassword; + } + return http - .patch(path, {'content-type': 'application/json'}, - { - 'password': password, - 'old-password': oldPassword - }); + .patch(path, {'content-type': 'application/json'}, payload); }, /** @@ -418,14 +439,15 @@ * Get currently logged in user preferences key-value object. * * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ getPrefs: function() { let path = '/account/prefs'; + let payload = {}; + return http - .get(path, {'content-type': 'application/json'}, - { - }); + .get(path, {'content-type': 'application/json'}, payload); }, /** @@ -436,7 +458,8 @@ * * @param {string} prefs * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ updatePrefs: function(prefs) { if(prefs === undefined) { throw new Error('Missing required parameter: "prefs"'); @@ -444,11 +467,14 @@ let path = '/account/prefs'; + let payload = {}; + + if(prefs) { + payload['prefs'] = prefs; + } + return http - .patch(path, {'content-type': 'application/json'}, - { - 'prefs': prefs - }); + .patch(path, {'content-type': 'application/json'}, payload); }, /** @@ -458,14 +484,15 @@ * log returns user IP address, location and date and time of log. * * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ getSecurity: function() { let path = '/account/security'; + let payload = {}; + return http - .get(path, {'content-type': 'application/json'}, - { - }); + .get(path, {'content-type': 'application/json'}, payload); }, /** @@ -475,14 +502,15 @@ * devices. * * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ getSessions: function() { let path = '/account/sessions'; + let payload = {}; + return http - .get(path, {'content-type': 'application/json'}, - { - }); + .get(path, {'content-type': 'application/json'}, payload); } }; @@ -500,7 +528,7 @@ * the only valid redirect URL's are the once from domains you have set when * added your platforms in the console interface. * - * When accessing this route using JavaScript from the browser, success and + * When accessing this route using Javascript from the browser, success and * failure parameter URLs are required. Appwrite server will respond with a * 301 redirect status code and will set the user session cookie. This * behavior is enforced because modern browsers are limiting 3rd party cookies @@ -511,7 +539,8 @@ * @param {string} success * @param {string} failure * @throws {Error} - * @return {null} */ + * @return {null} + */ login: function(email, password, success, failure) { if(email === undefined) { throw new Error('Missing required parameter: "email"'); @@ -531,12 +560,27 @@ let path = '/auth/login'; - return iframe('post', path, {project: config.project, - 'email': email, - 'password': password, - 'success': success, - 'failure': failure - }); + let payload = {}; + + if(email) { + payload['email'] = email; + } + + if(password) { + payload['password'] = password; + } + + if(success) { + payload['success'] = success; + } + + if(failure) { + payload['failure'] = failure; + } + + payload['project'] = config.project; + + return iframe('post', path, payload); }, /** @@ -547,14 +591,15 @@ * session secret cookie from the user client. * * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ logout: function() { let path = '/auth/logout'; + let payload = {}; + return http - .delete(path, {'content-type': 'application/json'}, - { - }); + .delete(path, {'content-type': 'application/json'}, payload); }, /** @@ -566,7 +611,8 @@ * * @param {string} id * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ logoutBySession: function(id) { if(id === undefined) { throw new Error('Missing required parameter: "id"'); @@ -574,10 +620,10 @@ let path = '/auth/logout/{id}'.replace(new RegExp('{id}', 'g'), id); + let payload = {}; + return http - .delete(path, {'content-type': 'application/json'}, - { - }); + .delete(path, {'content-type': 'application/json'}, payload); }, /** @@ -588,7 +634,8 @@ * @param {string} success * @param {string} failure * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ oauth: function(provider, success = '', failure = '') { if(provider === undefined) { throw new Error('Missing required parameter: "provider"'); @@ -596,12 +643,18 @@ let path = '/auth/oauth/{provider}'.replace(new RegExp('{provider}', 'g'), provider); + let payload = {}; + + if(success) { + payload['success'] = success; + } + + if(failure) { + payload['failure'] = failure; + } + return http - .get(path, {'content-type': 'application/json'}, - { - 'success': success, - 'failure': failure - }); + .get(path, {'content-type': 'application/json'}, payload); }, /** @@ -617,7 +670,8 @@ * @param {string} email * @param {string} reset * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ recovery: function(email, reset) { if(email === undefined) { throw new Error('Missing required parameter: "email"'); @@ -629,12 +683,18 @@ let path = '/auth/recovery'; + let payload = {}; + + if(email) { + payload['email'] = email; + } + + if(reset) { + payload['reset'] = reset; + } + return http - .post(path, {'content-type': 'application/json'}, - { - 'email': email, - 'reset': reset - }); + .post(path, {'content-type': 'application/json'}, payload); }, /** @@ -655,7 +715,8 @@ * @param {string} passwordA * @param {string} passwordB * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ recoveryReset: function(userId, token, passwordA, passwordB) { if(userId === undefined) { throw new Error('Missing required parameter: "userId"'); @@ -675,14 +736,26 @@ let path = '/auth/recovery/reset'; + let payload = {}; + + if(userId) { + payload['userId'] = userId; + } + + if(token) { + payload['token'] = token; + } + + if(passwordA) { + payload['password-a'] = passwordA; + } + + if(passwordB) { + payload['password-b'] = passwordB; + } + return http - .put(path, {'content-type': 'application/json'}, - { - 'userId': userId, - 'token': token, - 'password-a': passwordA, - 'password-b': passwordB - }); + .put(path, {'content-type': 'application/json'}, payload); }, /** @@ -703,7 +776,7 @@ * the only valid redirect URL's are the once from domains you have set when * added your platforms in the console interface. * - * When accessing this route using JavaScript from the browser, success and + * When accessing this route using Javascript from the browser, success and * failure parameter URLs are required. Appwrite server will respond with a * 301 redirect status code and will set the user session cookie. This * behavior is enforced because modern browsers are limiting 3rd party cookies @@ -716,7 +789,8 @@ * @param {string} failure * @param {string} name * @throws {Error} - * @return {null} */ + * @return {null} + */ register: function(email, password, confirm, success = '', failure = '', name = '') { if(email === undefined) { throw new Error('Missing required parameter: "email"'); @@ -732,14 +806,35 @@ let path = '/auth/register'; - return iframe('post', path, {project: config.project, - 'email': email, - 'password': password, - 'confirm': confirm, - 'success': success, - 'failure': failure, - 'name': name - }); + let payload = {}; + + if(email) { + payload['email'] = email; + } + + if(password) { + payload['password'] = password; + } + + if(confirm) { + payload['confirm'] = confirm; + } + + if(success) { + payload['success'] = success; + } + + if(failure) { + payload['failure'] = failure; + } + + if(name) { + payload['name'] = name; + } + + payload['project'] = config.project; + + return iframe('post', path, payload); }, /** @@ -753,7 +848,8 @@ * @param {string} userId * @param {string} token * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ confirm: function(userId, token) { if(userId === undefined) { throw new Error('Missing required parameter: "userId"'); @@ -765,12 +861,18 @@ let path = '/auth/register/confirm'; + let payload = {}; + + if(userId) { + payload['userId'] = userId; + } + + if(token) { + payload['token'] = token; + } + return http - .post(path, {'content-type': 'application/json'}, - { - 'userId': userId, - 'token': token - }); + .post(path, {'content-type': 'application/json'}, payload); }, /** @@ -787,7 +889,8 @@ * * @param {string} confirm * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ confirmResend: function(confirm) { if(confirm === undefined) { throw new Error('Missing required parameter: "confirm"'); @@ -795,11 +898,14 @@ let path = '/auth/register/confirm/resend'; + let payload = {}; + + if(confirm) { + payload['confirm'] = confirm; + } + return http - .post(path, {'content-type': 'application/json'}, - { - 'confirm': confirm - }); + .post(path, {'content-type': 'application/json'}, payload); } }; @@ -818,7 +924,8 @@ * @param {number} height * @param {number} quality * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ getBrowser: function(code, width = 100, height = 100, quality = 100) { if(code === undefined) { throw new Error('Missing required parameter: "code"'); @@ -826,13 +933,22 @@ let path = '/avatars/browsers/{code}'.replace(new RegExp('{code}', 'g'), code); + let payload = {}; + + if(width) { + payload['width'] = width; + } + + if(height) { + payload['height'] = height; + } + + if(quality) { + payload['quality'] = quality; + } + return http - .get(path, {'content-type': 'application/json'}, - { - 'width': width, - 'height': height, - 'quality': quality - }); + .get(path, {'content-type': 'application/json'}, payload); }, /** @@ -848,7 +964,8 @@ * @param {number} height * @param {number} quality * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ getCreditCard: function(code, width = 100, height = 100, quality = 100) { if(code === undefined) { throw new Error('Missing required parameter: "code"'); @@ -856,13 +973,22 @@ let path = '/avatars/credit-cards/{code}'.replace(new RegExp('{code}', 'g'), code); + let payload = {}; + + if(width) { + payload['width'] = width; + } + + if(height) { + payload['height'] = height; + } + + if(quality) { + payload['quality'] = quality; + } + return http - .get(path, {'content-type': 'application/json'}, - { - 'width': width, - 'height': height, - 'quality': quality - }); + .get(path, {'content-type': 'application/json'}, payload); }, /** @@ -873,7 +999,8 @@ * * @param {string} url * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ getFavicon: function(url) { if(url === undefined) { throw new Error('Missing required parameter: "url"'); @@ -881,11 +1008,14 @@ let path = '/avatars/favicon'; + let payload = {}; + + if(url) { + payload['url'] = url; + } + return http - .get(path, {'content-type': 'application/json'}, - { - 'url': url - }); + .get(path, {'content-type': 'application/json'}, payload); }, /** @@ -900,7 +1030,8 @@ * @param {number} height * @param {number} quality * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ getFlag: function(code, width = 100, height = 100, quality = 100) { if(code === undefined) { throw new Error('Missing required parameter: "code"'); @@ -908,13 +1039,22 @@ let path = '/avatars/flags/{code}'.replace(new RegExp('{code}', 'g'), code); + let payload = {}; + + if(width) { + payload['width'] = width; + } + + if(height) { + payload['height'] = height; + } + + if(quality) { + payload['quality'] = quality; + } + return http - .get(path, {'content-type': 'application/json'}, - { - 'width': width, - 'height': height, - 'quality': quality - }); + .get(path, {'content-type': 'application/json'}, payload); }, /** @@ -929,7 +1069,8 @@ * @param {number} width * @param {number} height * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ getImage: function(url, width = 400, height = 400) { if(url === undefined) { throw new Error('Missing required parameter: "url"'); @@ -937,13 +1078,22 @@ let path = '/avatars/image'; + let payload = {}; + + if(url) { + payload['url'] = url; + } + + if(width) { + payload['width'] = width; + } + + if(height) { + payload['height'] = height; + } + return http - .get(path, {'content-type': 'application/json'}, - { - 'url': url, - 'width': width, - 'height': height - }); + .get(path, {'content-type': 'application/json'}, payload); }, /** @@ -957,7 +1107,8 @@ * @param {number} margin * @param {number} download * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ getQR: function(text, size = 400, margin = 1, download = 0) { if(text === undefined) { throw new Error('Missing required parameter: "text"'); @@ -965,14 +1116,26 @@ let path = '/avatars/qr'; + let payload = {}; + + if(text) { + payload['text'] = text; + } + + if(size) { + payload['size'] = size; + } + + if(margin) { + payload['margin'] = margin; + } + + if(download) { + payload['download'] = download; + } + return http - .get(path, {'content-type': 'application/json'}, - { - 'text': text, - 'size': size, - 'margin': margin, - 'download': download - }); + .get(path, {'content-type': 'application/json'}, payload); } }; @@ -991,18 +1154,31 @@ * @param {number} offset * @param {string} orderType * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ listCollections: function(search = '', limit = 25, offset = 0, orderType = 'ASC') { let path = '/database'; + let payload = {}; + + if(search) { + payload['search'] = search; + } + + if(limit) { + payload['limit'] = limit; + } + + if(offset) { + payload['offset'] = offset; + } + + if(orderType) { + payload['orderType'] = orderType; + } + return http - .get(path, {'content-type': 'application/json'}, - { - 'search': search, - 'limit': limit, - 'offset': offset, - 'orderType': orderType - }); + .get(path, {'content-type': 'application/json'}, payload); }, /** @@ -1015,7 +1191,8 @@ * @param {array} write * @param {array} rules * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ createCollection: function(name, read = [], write = [], rules = []) { if(name === undefined) { throw new Error('Missing required parameter: "name"'); @@ -1023,14 +1200,26 @@ let path = '/database'; + let payload = {}; + + if(name) { + payload['name'] = name; + } + + if(read) { + payload['read'] = read; + } + + if(write) { + payload['write'] = write; + } + + if(rules) { + payload['rules'] = rules; + } + return http - .post(path, {'content-type': 'application/json'}, - { - 'name': name, - 'read': read, - 'write': write, - 'rules': rules - }); + .post(path, {'content-type': 'application/json'}, payload); }, /** @@ -1041,7 +1230,8 @@ * * @param {string} collectionId * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ getCollection: function(collectionId) { if(collectionId === undefined) { throw new Error('Missing required parameter: "collectionId"'); @@ -1049,10 +1239,10 @@ let path = '/database/{collectionId}'.replace(new RegExp('{collectionId}', 'g'), collectionId); + let payload = {}; + return http - .get(path, {'content-type': 'application/json'}, - { - }); + .get(path, {'content-type': 'application/json'}, payload); }, /** @@ -1066,7 +1256,8 @@ * @param {array} write * @param {array} rules * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ updateCollection: function(collectionId, name, read = [], write = [], rules = []) { if(collectionId === undefined) { throw new Error('Missing required parameter: "collectionId"'); @@ -1078,14 +1269,26 @@ let path = '/database/{collectionId}'.replace(new RegExp('{collectionId}', 'g'), collectionId); + let payload = {}; + + if(name) { + payload['name'] = name; + } + + if(read) { + payload['read'] = read; + } + + if(write) { + payload['write'] = write; + } + + if(rules) { + payload['rules'] = rules; + } + return http - .put(path, {'content-type': 'application/json'}, - { - 'name': name, - 'read': read, - 'write': write, - 'rules': rules - }); + .put(path, {'content-type': 'application/json'}, payload); }, /** @@ -1096,7 +1299,8 @@ * * @param {string} collectionId * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ deleteCollection: function(collectionId) { if(collectionId === undefined) { throw new Error('Missing required parameter: "collectionId"'); @@ -1104,10 +1308,10 @@ let path = '/database/{collectionId}'.replace(new RegExp('{collectionId}', 'g'), collectionId); + let payload = {}; + return http - .delete(path, {'content-type': 'application/json'}, - { - }); + .delete(path, {'content-type': 'application/json'}, payload); }, /** @@ -1129,7 +1333,8 @@ * @param {number} first * @param {number} last * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ listDocuments: function(collectionId, filters = [], offset = 0, limit = 50, orderField = '$uid', orderType = 'ASC', orderCast = 'string', search = '', first = 0, last = 0) { if(collectionId === undefined) { throw new Error('Missing required parameter: "collectionId"'); @@ -1137,19 +1342,46 @@ let path = '/database/{collectionId}/documents'.replace(new RegExp('{collectionId}', 'g'), collectionId); + let payload = {}; + + if(filters) { + payload['filters'] = filters; + } + + if(offset) { + payload['offset'] = offset; + } + + if(limit) { + payload['limit'] = limit; + } + + if(orderField) { + payload['order-field'] = orderField; + } + + if(orderType) { + payload['order-type'] = orderType; + } + + if(orderCast) { + payload['order-cast'] = orderCast; + } + + if(search) { + payload['search'] = search; + } + + if(first) { + payload['first'] = first; + } + + if(last) { + payload['last'] = last; + } + return http - .get(path, {'content-type': 'application/json'}, - { - 'filters': filters, - 'offset': offset, - 'limit': limit, - 'order-field': orderField, - 'order-type': orderType, - 'order-cast': orderCast, - 'search': search, - 'first': first, - 'last': last - }); + .get(path, {'content-type': 'application/json'}, payload); }, /** @@ -1165,7 +1397,8 @@ * @param {string} parentProperty * @param {string} parentPropertyType * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ createDocument: function(collectionId, data, read = [], write = [], parentDocument = '', parentProperty = '', parentPropertyType = 'assign') { if(collectionId === undefined) { throw new Error('Missing required parameter: "collectionId"'); @@ -1177,16 +1410,34 @@ let path = '/database/{collectionId}/documents'.replace(new RegExp('{collectionId}', 'g'), collectionId); + let payload = {}; + + if(data) { + payload['data'] = data; + } + + if(read) { + payload['read'] = read; + } + + if(write) { + payload['write'] = write; + } + + if(parentDocument) { + payload['parentDocument'] = parentDocument; + } + + if(parentProperty) { + payload['parentProperty'] = parentProperty; + } + + if(parentPropertyType) { + payload['parentPropertyType'] = parentPropertyType; + } + return http - .post(path, {'content-type': 'application/json'}, - { - 'data': data, - 'read': read, - 'write': write, - 'parentDocument': parentDocument, - 'parentProperty': parentProperty, - 'parentPropertyType': parentPropertyType - }); + .post(path, {'content-type': 'application/json'}, payload); }, /** @@ -1198,7 +1449,8 @@ * @param {string} collectionId * @param {string} documentId * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ getDocument: function(collectionId, documentId) { if(collectionId === undefined) { throw new Error('Missing required parameter: "collectionId"'); @@ -1210,10 +1462,10 @@ let path = '/database/{collectionId}/documents/{documentId}'.replace(new RegExp('{collectionId}', 'g'), collectionId).replace(new RegExp('{documentId}', 'g'), documentId); + let payload = {}; + return http - .get(path, {'content-type': 'application/json'}, - { - }); + .get(path, {'content-type': 'application/json'}, payload); }, /** @@ -1226,7 +1478,8 @@ * @param {array} read * @param {array} write * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ updateDocument: function(collectionId, documentId, data, read = [], write = []) { if(collectionId === undefined) { throw new Error('Missing required parameter: "collectionId"'); @@ -1242,13 +1495,22 @@ let path = '/database/{collectionId}/documents/{documentId}'.replace(new RegExp('{collectionId}', 'g'), collectionId).replace(new RegExp('{documentId}', 'g'), documentId); + let payload = {}; + + if(data) { + payload['data'] = data; + } + + if(read) { + payload['read'] = read; + } + + if(write) { + payload['write'] = write; + } + return http - .patch(path, {'content-type': 'application/json'}, - { - 'data': data, - 'read': read, - 'write': write - }); + .patch(path, {'content-type': 'application/json'}, payload); }, /** @@ -1261,7 +1523,8 @@ * @param {string} collectionId * @param {string} documentId * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ deleteDocument: function(collectionId, documentId) { if(collectionId === undefined) { throw new Error('Missing required parameter: "collectionId"'); @@ -1273,10 +1536,10 @@ let path = '/database/{collectionId}/documents/{documentId}'.replace(new RegExp('{collectionId}', 'g'), collectionId).replace(new RegExp('{documentId}', 'g'), documentId); + let payload = {}; + return http - .delete(path, {'content-type': 'application/json'}, - { - }); + .delete(path, {'content-type': 'application/json'}, payload); } }; @@ -1291,14 +1554,15 @@ * supported language. * * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ getLocale: function() { let path = '/locale'; + let payload = {}; + return http - .get(path, {'content-type': 'application/json'}, - { - }); + .get(path, {'content-type': 'application/json'}, payload); }, /** @@ -1308,14 +1572,15 @@ * supported language. * * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ getCountries: function() { let path = '/locale/countries'; + let payload = {}; + return http - .get(path, {'content-type': 'application/json'}, - { - }); + .get(path, {'content-type': 'application/json'}, payload); }, /** @@ -1326,14 +1591,15 @@ * currently set to 2019-10-31 and will be updated if and when needed. * * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ getCountriesEU: function() { let path = '/locale/countries/eu'; + let payload = {}; + return http - .get(path, {'content-type': 'application/json'}, - { - }); + .get(path, {'content-type': 'application/json'}, payload); }, /** @@ -1343,32 +1609,34 @@ * data in supported language. * * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ getCountriesPhones: function() { let path = '/locale/countries/phones'; + let payload = {}; + return http - .get(path, {'content-type': 'application/json'}, - { - }); + .get(path, {'content-type': 'application/json'}, payload); }, /** * List of currencies * - * List of all currencies, including currency symbol, name, plural, and - * decimal digits for all major and minor currencies. You can use the locale - * header to get the data in supported language. + * List of all currencies, including currency symol, name, plural, and decimal + * digits for all major and minor currencies. You can use the locale header to + * get the data in supported language. * * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ getCurrencies: function() { let path = '/locale/currencies'; + let payload = {}; + return http - .get(path, {'content-type': 'application/json'}, - { - }); + .get(path, {'content-type': 'application/json'}, payload); } }; @@ -1379,14 +1647,15 @@ * * * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ listProjects: function() { let path = '/projects'; + let payload = {}; + return http - .get(path, {'content-type': 'application/json'}, - { - }); + .get(path, {'content-type': 'application/json'}, payload); }, /** @@ -1405,7 +1674,8 @@ * @param {string} legalAddress * @param {string} legalTaxId * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ createProject: function(name, teamId, description = '', logo = '', url = '', legalName = '', legalCountry = '', legalState = '', legalCity = '', legalAddress = '', legalTaxId = '') { if(name === undefined) { throw new Error('Missing required parameter: "name"'); @@ -1417,21 +1687,54 @@ let path = '/projects'; + let payload = {}; + + if(name) { + payload['name'] = name; + } + + if(teamId) { + payload['teamId'] = teamId; + } + + if(description) { + payload['description'] = description; + } + + if(logo) { + payload['logo'] = logo; + } + + if(url) { + payload['url'] = url; + } + + if(legalName) { + payload['legalName'] = legalName; + } + + if(legalCountry) { + payload['legalCountry'] = legalCountry; + } + + if(legalState) { + payload['legalState'] = legalState; + } + + if(legalCity) { + payload['legalCity'] = legalCity; + } + + if(legalAddress) { + payload['legalAddress'] = legalAddress; + } + + if(legalTaxId) { + payload['legalTaxId'] = legalTaxId; + } + return http - .post(path, {'content-type': 'application/json'}, - { - 'name': name, - 'teamId': teamId, - 'description': description, - 'logo': logo, - 'url': url, - 'legalName': legalName, - 'legalCountry': legalCountry, - 'legalState': legalState, - 'legalCity': legalCity, - 'legalAddress': legalAddress, - 'legalTaxId': legalTaxId - }); + .post(path, {'content-type': 'application/json'}, payload); }, /** @@ -1440,7 +1743,8 @@ * * @param {string} projectId * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ getProject: function(projectId) { if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); @@ -1448,10 +1752,10 @@ let path = '/projects/{projectId}'.replace(new RegExp('{projectId}', 'g'), projectId); + let payload = {}; + return http - .get(path, {'content-type': 'application/json'}, - { - }); + .get(path, {'content-type': 'application/json'}, payload); }, /** @@ -1470,7 +1774,8 @@ * @param {string} legalAddress * @param {string} legalTaxId * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ updateProject: function(projectId, name, description = '', logo = '', url = '', legalName = '', legalCountry = '', legalState = '', legalCity = '', legalAddress = '', legalTaxId = '') { if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); @@ -1482,20 +1787,50 @@ let path = '/projects/{projectId}'.replace(new RegExp('{projectId}', 'g'), projectId); + let payload = {}; + + if(name) { + payload['name'] = name; + } + + if(description) { + payload['description'] = description; + } + + if(logo) { + payload['logo'] = logo; + } + + if(url) { + payload['url'] = url; + } + + if(legalName) { + payload['legalName'] = legalName; + } + + if(legalCountry) { + payload['legalCountry'] = legalCountry; + } + + if(legalState) { + payload['legalState'] = legalState; + } + + if(legalCity) { + payload['legalCity'] = legalCity; + } + + if(legalAddress) { + payload['legalAddress'] = legalAddress; + } + + if(legalTaxId) { + payload['legalTaxId'] = legalTaxId; + } + return http - .patch(path, {'content-type': 'application/json'}, - { - 'name': name, - 'description': description, - 'logo': logo, - 'url': url, - 'legalName': legalName, - 'legalCountry': legalCountry, - 'legalState': legalState, - 'legalCity': legalCity, - 'legalAddress': legalAddress, - 'legalTaxId': legalTaxId - }); + .patch(path, {'content-type': 'application/json'}, payload); }, /** @@ -1504,7 +1839,8 @@ * * @param {string} projectId * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ deleteProject: function(projectId) { if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); @@ -1512,10 +1848,10 @@ let path = '/projects/{projectId}'.replace(new RegExp('{projectId}', 'g'), projectId); + let payload = {}; + return http - .delete(path, {'content-type': 'application/json'}, - { - }); + .delete(path, {'content-type': 'application/json'}, payload); }, /** @@ -1524,7 +1860,8 @@ * * @param {string} projectId * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ listKeys: function(projectId) { if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); @@ -1532,10 +1869,10 @@ let path = '/projects/{projectId}/keys'.replace(new RegExp('{projectId}', 'g'), projectId); + let payload = {}; + return http - .get(path, {'content-type': 'application/json'}, - { - }); + .get(path, {'content-type': 'application/json'}, payload); }, /** @@ -1546,7 +1883,8 @@ * @param {string} name * @param {array} scopes * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ createKey: function(projectId, name, scopes) { if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); @@ -1562,12 +1900,18 @@ let path = '/projects/{projectId}/keys'.replace(new RegExp('{projectId}', 'g'), projectId); + let payload = {}; + + if(name) { + payload['name'] = name; + } + + if(scopes) { + payload['scopes'] = scopes; + } + return http - .post(path, {'content-type': 'application/json'}, - { - 'name': name, - 'scopes': scopes - }); + .post(path, {'content-type': 'application/json'}, payload); }, /** @@ -1577,7 +1921,8 @@ * @param {string} projectId * @param {string} keyId * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ getKey: function(projectId, keyId) { if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); @@ -1589,10 +1934,10 @@ let path = '/projects/{projectId}/keys/{keyId}'.replace(new RegExp('{projectId}', 'g'), projectId).replace(new RegExp('{keyId}', 'g'), keyId); + let payload = {}; + return http - .get(path, {'content-type': 'application/json'}, - { - }); + .get(path, {'content-type': 'application/json'}, payload); }, /** @@ -1604,7 +1949,8 @@ * @param {string} name * @param {array} scopes * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ updateKey: function(projectId, keyId, name, scopes) { if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); @@ -1624,12 +1970,18 @@ let path = '/projects/{projectId}/keys/{keyId}'.replace(new RegExp('{projectId}', 'g'), projectId).replace(new RegExp('{keyId}', 'g'), keyId); + let payload = {}; + + if(name) { + payload['name'] = name; + } + + if(scopes) { + payload['scopes'] = scopes; + } + return http - .put(path, {'content-type': 'application/json'}, - { - 'name': name, - 'scopes': scopes - }); + .put(path, {'content-type': 'application/json'}, payload); }, /** @@ -1639,7 +1991,8 @@ * @param {string} projectId * @param {string} keyId * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ deleteKey: function(projectId, keyId) { if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); @@ -1651,10 +2004,10 @@ let path = '/projects/{projectId}/keys/{keyId}'.replace(new RegExp('{projectId}', 'g'), projectId).replace(new RegExp('{keyId}', 'g'), keyId); + let payload = {}; + return http - .delete(path, {'content-type': 'application/json'}, - { - }); + .delete(path, {'content-type': 'application/json'}, payload); }, /** @@ -1666,7 +2019,8 @@ * @param {string} appId * @param {string} secret * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ updateProjectOAuth: function(projectId, provider, appId = '', secret = '') { if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); @@ -1678,13 +2032,22 @@ let path = '/projects/{projectId}/oauth'.replace(new RegExp('{projectId}', 'g'), projectId); + let payload = {}; + + if(provider) { + payload['provider'] = provider; + } + + if(appId) { + payload['appId'] = appId; + } + + if(secret) { + payload['secret'] = secret; + } + return http - .patch(path, {'content-type': 'application/json'}, - { - 'provider': provider, - 'appId': appId, - 'secret': secret - }); + .patch(path, {'content-type': 'application/json'}, payload); }, /** @@ -1693,7 +2056,8 @@ * * @param {string} projectId * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ listPlatforms: function(projectId) { if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); @@ -1701,10 +2065,10 @@ let path = '/projects/{projectId}/platforms'.replace(new RegExp('{projectId}', 'g'), projectId); + let payload = {}; + return http - .get(path, {'content-type': 'application/json'}, - { - }); + .get(path, {'content-type': 'application/json'}, payload); }, /** @@ -1718,7 +2082,8 @@ * @param {string} store * @param {string} url * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ createPlatform: function(projectId, type, name, key = '', store = '', url = '') { if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); @@ -1734,15 +2099,30 @@ let path = '/projects/{projectId}/platforms'.replace(new RegExp('{projectId}', 'g'), projectId); + let payload = {}; + + if(type) { + payload['type'] = type; + } + + if(name) { + payload['name'] = name; + } + + if(key) { + payload['key'] = key; + } + + if(store) { + payload['store'] = store; + } + + if(url) { + payload['url'] = url; + } + return http - .post(path, {'content-type': 'application/json'}, - { - 'type': type, - 'name': name, - 'key': key, - 'store': store, - 'url': url - }); + .post(path, {'content-type': 'application/json'}, payload); }, /** @@ -1752,7 +2132,8 @@ * @param {string} projectId * @param {string} platformId * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ getPlatform: function(projectId, platformId) { if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); @@ -1764,10 +2145,10 @@ let path = '/projects/{projectId}/platforms/{platformId}'.replace(new RegExp('{projectId}', 'g'), projectId).replace(new RegExp('{platformId}', 'g'), platformId); + let payload = {}; + return http - .get(path, {'content-type': 'application/json'}, - { - }); + .get(path, {'content-type': 'application/json'}, payload); }, /** @@ -1781,7 +2162,8 @@ * @param {string} store * @param {string} url * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ updatePlatform: function(projectId, platformId, name, key = '', store = '', url = '') { if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); @@ -1797,14 +2179,26 @@ let path = '/projects/{projectId}/platforms/{platformId}'.replace(new RegExp('{projectId}', 'g'), projectId).replace(new RegExp('{platformId}', 'g'), platformId); + let payload = {}; + + if(name) { + payload['name'] = name; + } + + if(key) { + payload['key'] = key; + } + + if(store) { + payload['store'] = store; + } + + if(url) { + payload['url'] = url; + } + return http - .put(path, {'content-type': 'application/json'}, - { - 'name': name, - 'key': key, - 'store': store, - 'url': url - }); + .put(path, {'content-type': 'application/json'}, payload); }, /** @@ -1814,7 +2208,8 @@ * @param {string} projectId * @param {string} platformId * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ deletePlatform: function(projectId, platformId) { if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); @@ -1826,10 +2221,10 @@ let path = '/projects/{projectId}/platforms/{platformId}'.replace(new RegExp('{projectId}', 'g'), projectId).replace(new RegExp('{platformId}', 'g'), platformId); + let payload = {}; + return http - .delete(path, {'content-type': 'application/json'}, - { - }); + .delete(path, {'content-type': 'application/json'}, payload); }, /** @@ -1838,7 +2233,8 @@ * * @param {string} projectId * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ listTasks: function(projectId) { if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); @@ -1846,10 +2242,10 @@ let path = '/projects/{projectId}/tasks'.replace(new RegExp('{projectId}', 'g'), projectId); + let payload = {}; + return http - .get(path, {'content-type': 'application/json'}, - { - }); + .get(path, {'content-type': 'application/json'}, payload); }, /** @@ -1867,7 +2263,8 @@ * @param {string} httpUser * @param {string} httpPass * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ createTask: function(projectId, name, status, schedule, security, httpMethod, httpUrl, httpHeaders = [], httpUser = '', httpPass = '') { if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); @@ -1899,19 +2296,46 @@ let path = '/projects/{projectId}/tasks'.replace(new RegExp('{projectId}', 'g'), projectId); + let payload = {}; + + if(name) { + payload['name'] = name; + } + + if(status) { + payload['status'] = status; + } + + if(schedule) { + payload['schedule'] = schedule; + } + + if(security) { + payload['security'] = security; + } + + if(httpMethod) { + payload['httpMethod'] = httpMethod; + } + + if(httpUrl) { + payload['httpUrl'] = httpUrl; + } + + if(httpHeaders) { + payload['httpHeaders'] = httpHeaders; + } + + if(httpUser) { + payload['httpUser'] = httpUser; + } + + if(httpPass) { + payload['httpPass'] = httpPass; + } + return http - .post(path, {'content-type': 'application/json'}, - { - 'name': name, - 'status': status, - 'schedule': schedule, - 'security': security, - 'httpMethod': httpMethod, - 'httpUrl': httpUrl, - 'httpHeaders': httpHeaders, - 'httpUser': httpUser, - 'httpPass': httpPass - }); + .post(path, {'content-type': 'application/json'}, payload); }, /** @@ -1921,7 +2345,8 @@ * @param {string} projectId * @param {string} taskId * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ getTask: function(projectId, taskId) { if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); @@ -1933,10 +2358,10 @@ let path = '/projects/{projectId}/tasks/{taskId}'.replace(new RegExp('{projectId}', 'g'), projectId).replace(new RegExp('{taskId}', 'g'), taskId); + let payload = {}; + return http - .get(path, {'content-type': 'application/json'}, - { - }); + .get(path, {'content-type': 'application/json'}, payload); }, /** @@ -1955,7 +2380,8 @@ * @param {string} httpUser * @param {string} httpPass * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ updateTask: function(projectId, taskId, name, status, schedule, security, httpMethod, httpUrl, httpHeaders = [], httpUser = '', httpPass = '') { if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); @@ -1991,19 +2417,46 @@ let path = '/projects/{projectId}/tasks/{taskId}'.replace(new RegExp('{projectId}', 'g'), projectId).replace(new RegExp('{taskId}', 'g'), taskId); + let payload = {}; + + if(name) { + payload['name'] = name; + } + + if(status) { + payload['status'] = status; + } + + if(schedule) { + payload['schedule'] = schedule; + } + + if(security) { + payload['security'] = security; + } + + if(httpMethod) { + payload['httpMethod'] = httpMethod; + } + + if(httpUrl) { + payload['httpUrl'] = httpUrl; + } + + if(httpHeaders) { + payload['httpHeaders'] = httpHeaders; + } + + if(httpUser) { + payload['httpUser'] = httpUser; + } + + if(httpPass) { + payload['httpPass'] = httpPass; + } + return http - .put(path, {'content-type': 'application/json'}, - { - 'name': name, - 'status': status, - 'schedule': schedule, - 'security': security, - 'httpMethod': httpMethod, - 'httpUrl': httpUrl, - 'httpHeaders': httpHeaders, - 'httpUser': httpUser, - 'httpPass': httpPass - }); + .put(path, {'content-type': 'application/json'}, payload); }, /** @@ -2013,7 +2466,8 @@ * @param {string} projectId * @param {string} taskId * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ deleteTask: function(projectId, taskId) { if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); @@ -2025,10 +2479,10 @@ let path = '/projects/{projectId}/tasks/{taskId}'.replace(new RegExp('{projectId}', 'g'), projectId).replace(new RegExp('{taskId}', 'g'), taskId); + let payload = {}; + return http - .delete(path, {'content-type': 'application/json'}, - { - }); + .delete(path, {'content-type': 'application/json'}, payload); }, /** @@ -2037,7 +2491,8 @@ * * @param {string} projectId * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ getProjectUsage: function(projectId) { if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); @@ -2045,10 +2500,10 @@ let path = '/projects/{projectId}/usage'.replace(new RegExp('{projectId}', 'g'), projectId); + let payload = {}; + return http - .get(path, {'content-type': 'application/json'}, - { - }); + .get(path, {'content-type': 'application/json'}, payload); }, /** @@ -2057,7 +2512,8 @@ * * @param {string} projectId * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ listWebhooks: function(projectId) { if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); @@ -2065,10 +2521,10 @@ let path = '/projects/{projectId}/webhooks'.replace(new RegExp('{projectId}', 'g'), projectId); + let payload = {}; + return http - .get(path, {'content-type': 'application/json'}, - { - }); + .get(path, {'content-type': 'application/json'}, payload); }, /** @@ -2083,7 +2539,8 @@ * @param {string} httpUser * @param {string} httpPass * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ createWebhook: function(projectId, name, events, url, security, httpUser = '', httpPass = '') { if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); @@ -2107,16 +2564,34 @@ let path = '/projects/{projectId}/webhooks'.replace(new RegExp('{projectId}', 'g'), projectId); + let payload = {}; + + if(name) { + payload['name'] = name; + } + + if(events) { + payload['events'] = events; + } + + if(url) { + payload['url'] = url; + } + + if(security) { + payload['security'] = security; + } + + if(httpUser) { + payload['httpUser'] = httpUser; + } + + if(httpPass) { + payload['httpPass'] = httpPass; + } + return http - .post(path, {'content-type': 'application/json'}, - { - 'name': name, - 'events': events, - 'url': url, - 'security': security, - 'httpUser': httpUser, - 'httpPass': httpPass - }); + .post(path, {'content-type': 'application/json'}, payload); }, /** @@ -2126,7 +2601,8 @@ * @param {string} projectId * @param {string} webhookId * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ getWebhook: function(projectId, webhookId) { if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); @@ -2138,10 +2614,10 @@ let path = '/projects/{projectId}/webhooks/{webhookId}'.replace(new RegExp('{projectId}', 'g'), projectId).replace(new RegExp('{webhookId}', 'g'), webhookId); + let payload = {}; + return http - .get(path, {'content-type': 'application/json'}, - { - }); + .get(path, {'content-type': 'application/json'}, payload); }, /** @@ -2157,7 +2633,8 @@ * @param {string} httpUser * @param {string} httpPass * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ updateWebhook: function(projectId, webhookId, name, events, url, security, httpUser = '', httpPass = '') { if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); @@ -2185,16 +2662,34 @@ let path = '/projects/{projectId}/webhooks/{webhookId}'.replace(new RegExp('{projectId}', 'g'), projectId).replace(new RegExp('{webhookId}', 'g'), webhookId); + let payload = {}; + + if(name) { + payload['name'] = name; + } + + if(events) { + payload['events'] = events; + } + + if(url) { + payload['url'] = url; + } + + if(security) { + payload['security'] = security; + } + + if(httpUser) { + payload['httpUser'] = httpUser; + } + + if(httpPass) { + payload['httpPass'] = httpPass; + } + return http - .put(path, {'content-type': 'application/json'}, - { - 'name': name, - 'events': events, - 'url': url, - 'security': security, - 'httpUser': httpUser, - 'httpPass': httpPass - }); + .put(path, {'content-type': 'application/json'}, payload); }, /** @@ -2204,7 +2699,8 @@ * @param {string} projectId * @param {string} webhookId * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ deleteWebhook: function(projectId, webhookId) { if(projectId === undefined) { throw new Error('Missing required parameter: "projectId"'); @@ -2216,10 +2712,10 @@ let path = '/projects/{projectId}/webhooks/{webhookId}'.replace(new RegExp('{projectId}', 'g'), projectId).replace(new RegExp('{webhookId}', 'g'), webhookId); + let payload = {}; + return http - .delete(path, {'content-type': 'application/json'}, - { - }); + .delete(path, {'content-type': 'application/json'}, payload); } }; @@ -2237,18 +2733,31 @@ * @param {number} offset * @param {string} orderType * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ listFiles: function(search = '', limit = 25, offset = 0, orderType = 'ASC') { let path = '/storage/files'; + let payload = {}; + + if(search) { + payload['search'] = search; + } + + if(limit) { + payload['limit'] = limit; + } + + if(offset) { + payload['offset'] = offset; + } + + if(orderType) { + payload['orderType'] = orderType; + } + return http - .get(path, {'content-type': 'application/json'}, - { - 'search': search, - 'limit': limit, - 'offset': offset, - 'orderType': orderType - }); + .get(path, {'content-type': 'application/json'}, payload); }, /** @@ -2263,7 +2772,8 @@ * @param {array} write * @param {string} folderId * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ createFile: function(files, read = [], write = [], folderId = '') { if(files === undefined) { throw new Error('Missing required parameter: "files"'); @@ -2271,14 +2781,26 @@ let path = '/storage/files'; + let payload = {}; + + if(files) { + payload['files'] = files; + } + + if(read) { + payload['read'] = read; + } + + if(write) { + payload['write'] = write; + } + + if(folderId) { + payload['folderId'] = folderId; + } + return http - .post(path, {'content-type': 'multipart/form-data'}, - { - 'files': files, - 'read': read, - 'write': write, - 'folderId': folderId - }); + .post(path, {'content-type': 'multipart/form-data'}, payload); }, /** @@ -2289,7 +2811,8 @@ * * @param {string} fileId * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ getFile: function(fileId) { if(fileId === undefined) { throw new Error('Missing required parameter: "fileId"'); @@ -2297,10 +2820,10 @@ let path = '/storage/files/{fileId}'.replace(new RegExp('{fileId}', 'g'), fileId); + let payload = {}; + return http - .get(path, {'content-type': 'application/json'}, - { - }); + .get(path, {'content-type': 'application/json'}, payload); }, /** @@ -2314,7 +2837,8 @@ * @param {array} write * @param {string} folderId * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ updateFile: function(fileId, read = [], write = [], folderId = '') { if(fileId === undefined) { throw new Error('Missing required parameter: "fileId"'); @@ -2322,13 +2846,22 @@ let path = '/storage/files/{fileId}'.replace(new RegExp('{fileId}', 'g'), fileId); + let payload = {}; + + if(read) { + payload['read'] = read; + } + + if(write) { + payload['write'] = write; + } + + if(folderId) { + payload['folderId'] = folderId; + } + return http - .put(path, {'content-type': 'application/json'}, - { - 'read': read, - 'write': write, - 'folderId': folderId - }); + .put(path, {'content-type': 'application/json'}, payload); }, /** @@ -2339,7 +2872,8 @@ * * @param {string} fileId * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ deleteFile: function(fileId) { if(fileId === undefined) { throw new Error('Missing required parameter: "fileId"'); @@ -2347,10 +2881,10 @@ let path = '/storage/files/{fileId}'.replace(new RegExp('{fileId}', 'g'), fileId); + let payload = {}; + return http - .delete(path, {'content-type': 'application/json'}, - { - }); + .delete(path, {'content-type': 'application/json'}, payload); }, /** @@ -2362,7 +2896,8 @@ * * @param {string} fileId * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ getFileDownload: function(fileId) { if(fileId === undefined) { throw new Error('Missing required parameter: "fileId"'); @@ -2370,10 +2905,10 @@ let path = '/storage/files/{fileId}/download'.replace(new RegExp('{fileId}', 'g'), fileId); + let payload = {}; + return http - .get(path, {'content-type': 'application/json'}, - { - }); + .get(path, {'content-type': 'application/json'}, payload); }, /** @@ -2391,7 +2926,8 @@ * @param {string} background * @param {string} output * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ getFilePreview: function(fileId, width = 0, height = 0, quality = 100, background = '', output = '') { if(fileId === undefined) { throw new Error('Missing required parameter: "fileId"'); @@ -2399,15 +2935,30 @@ let path = '/storage/files/{fileId}/preview'.replace(new RegExp('{fileId}', 'g'), fileId); + let payload = {}; + + if(width) { + payload['width'] = width; + } + + if(height) { + payload['height'] = height; + } + + if(quality) { + payload['quality'] = quality; + } + + if(background) { + payload['background'] = background; + } + + if(output) { + payload['output'] = output; + } + return http - .get(path, {'content-type': 'application/json'}, - { - 'width': width, - 'height': height, - 'quality': quality, - 'background': background, - 'output': output - }); + .get(path, {'content-type': 'application/json'}, payload); }, /** @@ -2419,7 +2970,8 @@ * @param {string} fileId * @param {string} as * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ getFileView: function(fileId, as = '') { if(fileId === undefined) { throw new Error('Missing required parameter: "fileId"'); @@ -2427,11 +2979,14 @@ let path = '/storage/files/{fileId}/view'.replace(new RegExp('{fileId}', 'g'), fileId); + let payload = {}; + + if(as) { + payload['as'] = as; + } + return http - .get(path, {'content-type': 'application/json'}, - { - 'as': as - }); + .get(path, {'content-type': 'application/json'}, payload); } }; @@ -2449,18 +3004,31 @@ * @param {number} offset * @param {string} orderType * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ listTeams: function(search = '', limit = 25, offset = 0, orderType = 'ASC') { let path = '/teams'; + let payload = {}; + + if(search) { + payload['search'] = search; + } + + if(limit) { + payload['limit'] = limit; + } + + if(offset) { + payload['offset'] = offset; + } + + if(orderType) { + payload['orderType'] = orderType; + } + return http - .get(path, {'content-type': 'application/json'}, - { - 'search': search, - 'limit': limit, - 'offset': offset, - 'orderType': orderType - }); + .get(path, {'content-type': 'application/json'}, payload); }, /** @@ -2474,7 +3042,8 @@ * @param {string} name * @param {array} roles * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ createTeam: function(name, roles = ["owner"]) { if(name === undefined) { throw new Error('Missing required parameter: "name"'); @@ -2482,12 +3051,18 @@ let path = '/teams'; + let payload = {}; + + if(name) { + payload['name'] = name; + } + + if(roles) { + payload['roles'] = roles; + } + return http - .post(path, {'content-type': 'application/json'}, - { - 'name': name, - 'roles': roles - }); + .post(path, {'content-type': 'application/json'}, payload); }, /** @@ -2498,7 +3073,8 @@ * * @param {string} teamId * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ getTeam: function(teamId) { if(teamId === undefined) { throw new Error('Missing required parameter: "teamId"'); @@ -2506,10 +3082,10 @@ let path = '/teams/{teamId}'.replace(new RegExp('{teamId}', 'g'), teamId); + let payload = {}; + return http - .get(path, {'content-type': 'application/json'}, - { - }); + .get(path, {'content-type': 'application/json'}, payload); }, /** @@ -2521,7 +3097,8 @@ * @param {string} teamId * @param {string} name * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ updateTeam: function(teamId, name) { if(teamId === undefined) { throw new Error('Missing required parameter: "teamId"'); @@ -2533,11 +3110,14 @@ let path = '/teams/{teamId}'.replace(new RegExp('{teamId}', 'g'), teamId); + let payload = {}; + + if(name) { + payload['name'] = name; + } + return http - .put(path, {'content-type': 'application/json'}, - { - 'name': name - }); + .put(path, {'content-type': 'application/json'}, payload); }, /** @@ -2548,7 +3128,8 @@ * * @param {string} teamId * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ deleteTeam: function(teamId) { if(teamId === undefined) { throw new Error('Missing required parameter: "teamId"'); @@ -2556,10 +3137,10 @@ let path = '/teams/{teamId}'.replace(new RegExp('{teamId}', 'g'), teamId); + let payload = {}; + return http - .delete(path, {'content-type': 'application/json'}, - { - }); + .delete(path, {'content-type': 'application/json'}, payload); }, /** @@ -2570,7 +3151,8 @@ * * @param {string} teamId * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ getTeamMembers: function(teamId) { if(teamId === undefined) { throw new Error('Missing required parameter: "teamId"'); @@ -2578,10 +3160,10 @@ let path = '/teams/{teamId}/members'.replace(new RegExp('{teamId}', 'g'), teamId); + let payload = {}; + return http - .get(path, {'content-type': 'application/json'}, - { - }); + .get(path, {'content-type': 'application/json'}, payload); }, /** @@ -2607,7 +3189,8 @@ * @param {string} redirect * @param {string} name * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ createTeamMembership: function(teamId, email, roles, redirect, name = '') { if(teamId === undefined) { throw new Error('Missing required parameter: "teamId"'); @@ -2627,14 +3210,26 @@ let path = '/teams/{teamId}/memberships'.replace(new RegExp('{teamId}', 'g'), teamId); + let payload = {}; + + if(email) { + payload['email'] = email; + } + + if(name) { + payload['name'] = name; + } + + if(roles) { + payload['roles'] = roles; + } + + if(redirect) { + payload['redirect'] = redirect; + } + return http - .post(path, {'content-type': 'application/json'}, - { - 'email': email, - 'name': name, - 'roles': roles, - 'redirect': redirect - }); + .post(path, {'content-type': 'application/json'}, payload); }, /** @@ -2646,7 +3241,8 @@ * @param {string} teamId * @param {string} inviteId * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ deleteTeamMembership: function(teamId, inviteId) { if(teamId === undefined) { throw new Error('Missing required parameter: "teamId"'); @@ -2658,10 +3254,10 @@ let path = '/teams/{teamId}/memberships/{inviteId}'.replace(new RegExp('{teamId}', 'g'), teamId).replace(new RegExp('{inviteId}', 'g'), inviteId); + let payload = {}; + return http - .delete(path, {'content-type': 'application/json'}, - { - }); + .delete(path, {'content-type': 'application/json'}, payload); }, /** @@ -2674,7 +3270,8 @@ * @param {string} inviteId * @param {string} redirect * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ createTeamMembershipResend: function(teamId, inviteId, redirect) { if(teamId === undefined) { throw new Error('Missing required parameter: "teamId"'); @@ -2690,11 +3287,14 @@ let path = '/teams/{teamId}/memberships/{inviteId}/resend'.replace(new RegExp('{teamId}', 'g'), teamId).replace(new RegExp('{inviteId}', 'g'), inviteId); + let payload = {}; + + if(redirect) { + payload['redirect'] = redirect; + } + return http - .post(path, {'content-type': 'application/json'}, - { - 'redirect': redirect - }); + .post(path, {'content-type': 'application/json'}, payload); }, /** @@ -2723,7 +3323,8 @@ * @param {string} success * @param {string} failure * @throws {Error} - * @return {null} */ + * @return {null} + */ updateTeamMembershipStatus: function(teamId, inviteId, userId, secret, success = '', failure = '') { if(teamId === undefined) { throw new Error('Missing required parameter: "teamId"'); @@ -2743,12 +3344,27 @@ let path = '/teams/{teamId}/memberships/{inviteId}/status'.replace(new RegExp('{teamId}', 'g'), teamId).replace(new RegExp('{inviteId}', 'g'), inviteId); - return iframe('patch', path, {project: config.project, - 'userId': userId, - 'secret': secret, - 'success': success, - 'failure': failure - }); + let payload = {}; + + if(userId) { + payload['userId'] = userId; + } + + if(secret) { + payload['secret'] = secret; + } + + if(success) { + payload['success'] = success; + } + + if(failure) { + payload['failure'] = failure; + } + + payload['project'] = config.project; + + return iframe('patch', path, payload); } }; @@ -2765,18 +3381,31 @@ * @param {number} offset * @param {string} orderType * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ listUsers: function(search = '', limit = 25, offset = 0, orderType = 'ASC') { let path = '/users'; + let payload = {}; + + if(search) { + payload['search'] = search; + } + + if(limit) { + payload['limit'] = limit; + } + + if(offset) { + payload['offset'] = offset; + } + + if(orderType) { + payload['orderType'] = orderType; + } + return http - .get(path, {'content-type': 'application/json'}, - { - 'search': search, - 'limit': limit, - 'offset': offset, - 'orderType': orderType - }); + .get(path, {'content-type': 'application/json'}, payload); }, /** @@ -2788,7 +3417,8 @@ * @param {string} password * @param {string} name * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ createUser: function(email, password, name = '') { if(email === undefined) { throw new Error('Missing required parameter: "email"'); @@ -2800,13 +3430,22 @@ let path = '/users'; + let payload = {}; + + if(email) { + payload['email'] = email; + } + + if(password) { + payload['password'] = password; + } + + if(name) { + payload['name'] = name; + } + return http - .post(path, {'content-type': 'application/json'}, - { - 'email': email, - 'password': password, - 'name': name - }); + .post(path, {'content-type': 'application/json'}, payload); }, /** @@ -2816,7 +3455,8 @@ * * @param {string} userId * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ getUser: function(userId) { if(userId === undefined) { throw new Error('Missing required parameter: "userId"'); @@ -2824,10 +3464,10 @@ let path = '/users/{userId}'.replace(new RegExp('{userId}', 'g'), userId); + let payload = {}; + return http - .get(path, {'content-type': 'application/json'}, - { - }); + .get(path, {'content-type': 'application/json'}, payload); }, /** @@ -2837,7 +3477,8 @@ * * @param {string} userId * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ getUserLogs: function(userId) { if(userId === undefined) { throw new Error('Missing required parameter: "userId"'); @@ -2845,10 +3486,10 @@ let path = '/users/{userId}/logs'.replace(new RegExp('{userId}', 'g'), userId); + let payload = {}; + return http - .get(path, {'content-type': 'application/json'}, - { - }); + .get(path, {'content-type': 'application/json'}, payload); }, /** @@ -2858,7 +3499,8 @@ * * @param {string} userId * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ getUserPrefs: function(userId) { if(userId === undefined) { throw new Error('Missing required parameter: "userId"'); @@ -2866,10 +3508,42 @@ let path = '/users/{userId}/prefs'.replace(new RegExp('{userId}', 'g'), userId); + let payload = {}; + return http - .get(path, {'content-type': 'application/json'}, - { - }); + .get(path, {'content-type': 'application/json'}, payload); + }, + + /** + * Update Account Prefs + * + * Update user preferences by its unique ID. You can pass only the specific + * settings you wish to update. + * + * @param {string} userId + * @param {string} prefs + * @throws {Error} + * @return {Promise} + */ + updateUserPrefs: function(userId, prefs) { + if(userId === undefined) { + throw new Error('Missing required parameter: "userId"'); + } + + if(prefs === undefined) { + throw new Error('Missing required parameter: "prefs"'); + } + + let path = '/users/{userId}/prefs'.replace(new RegExp('{userId}', 'g'), userId); + + let payload = {}; + + if(prefs) { + payload['prefs'] = prefs; + } + + return http + .patch(path, {'content-type': 'application/json'}, payload); }, /** @@ -2879,7 +3553,8 @@ * * @param {string} userId * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ getUserSessions: function(userId) { if(userId === undefined) { throw new Error('Missing required parameter: "userId"'); @@ -2887,10 +3562,10 @@ let path = '/users/{userId}/sessions'.replace(new RegExp('{userId}', 'g'), userId); + let payload = {}; + return http - .get(path, {'content-type': 'application/json'}, - { - }); + .get(path, {'content-type': 'application/json'}, payload); }, /** @@ -2900,7 +3575,8 @@ * * @param {string} userId * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ deleteUserSessions: function(userId) { if(userId === undefined) { throw new Error('Missing required parameter: "userId"'); @@ -2908,10 +3584,10 @@ let path = '/users/{userId}/sessions'.replace(new RegExp('{userId}', 'g'), userId); + let payload = {}; + return http - .delete(path, {'content-type': 'application/json'}, - { - }); + .delete(path, {'content-type': 'application/json'}, payload); }, /** @@ -2922,8 +3598,9 @@ * @param {string} userId * @param {string} sessionId * @throws {Error} - * @return {Promise} */ - deleteUsersSession: function(userId, sessionId) { + * @return {Promise} + */ + deleteUserSession: function(userId, sessionId) { if(userId === undefined) { throw new Error('Missing required parameter: "userId"'); } @@ -2934,11 +3611,14 @@ let path = '/users/{userId}/sessions/:session'.replace(new RegExp('{userId}', 'g'), userId); + let payload = {}; + + if(sessionId) { + payload['sessionId'] = sessionId; + } + return http - .delete(path, {'content-type': 'application/json'}, - { - 'sessionId': sessionId - }); + .delete(path, {'content-type': 'application/json'}, payload); }, /** @@ -2949,7 +3629,8 @@ * @param {string} userId * @param {string} status * @throws {Error} - * @return {Promise} */ + * @return {Promise} + */ updateUserStatus: function(userId, status) { if(userId === undefined) { throw new Error('Missing required parameter: "userId"'); @@ -2961,11 +3642,14 @@ let path = '/users/{userId}/status'.replace(new RegExp('{userId}', 'g'), userId); + let payload = {}; + + if(status) { + payload['status'] = status; + } + return http - .patch(path, {'content-type': 'application/json'}, - { - 'status': status - }); + .patch(path, {'content-type': 'application/json'}, payload); } }; @@ -2987,4 +3671,8 @@ }; }; -})(window); \ No newline at end of file + if(typeof module !== "undefined") { + module.exports = window.Appwrite; + } + +})((typeof window !== "undefined") ? window : {}); \ No newline at end of file diff --git a/app/sdks/js/src/sdk.min.js b/app/sdks/js/src/sdk.min.js index 4bd61f2d4..a1d7e392a 100644 --- a/app/sdks/js/src/sdk.min.js +++ b/app/sdks/js/src/sdk.min.js @@ -1,5 +1,5 @@ -(function(window){window.Appwrite=function(){let config={endpoint:'https://https://appwrite.io/v1',project:'',key:'',locale:'',mode:'',};let setEndpoint=function(endpoint){config.endpoint=endpoint;return this};let setProject=function(value){http.addGlobalHeader('X-Appwrite-Project',value);config.project=value;return this};let setKey=function(value){http.addGlobalHeader('X-Appwrite-Key',value);config.key=value;return this};let setLocale=function(value){http.addGlobalHeader('X-Appwrite-Locale',value);config.locale=value;return this};let setMode=function(value){http.addGlobalHeader('X-Appwrite-Mode',value);config.mode=value;return this};let http=function(document){let globalParams=[],globalHeaders=[];let addParam=function(url,param,value){let a=document.createElement('a'),regex=/(?:\?|&|&)+([^=]+)(?:=([^&]*))*/g;let match,str=[];a.href=url;param=encodeURIComponent(param);while(match=regex.exec(a.search))if(param!==match[1])str.push(match[1]+(match[2]?"="+match[2]:""));str.push(param+(value?"="+encodeURIComponent(value):""));a.search=str.join("&");return a.href};let buildQuery=function(params){let str=[];for(let p in params){if(Array.isArray(params[p])){for(let index=0;index=request.status){let data=request.response;let contentType=this.getResponseHeader('content-type')||'';contentType=contentType.substring(0,contentType.indexOf(';'));switch(contentType){case 'application/json':data=JSON.parse(data);break} resolve(data)}else{reject(new Error(request.statusText))}};if(progress){request.addEventListener('progress',progress);request.upload.addEventListener('progress',progress,!1)} request.onerror=function(){reject(new Error("Network Error"))};request.send(params)})};return{'get':function(path,headers={},params={}){return call('GET',path+((Object.keys(params).length>0)?'?'+buildQuery(params):''),headers,{})},'post':function(path,headers={},params={},progress=null){return call('POST',path,headers,params,progress)},'put':function(path,headers={},params={},progress=null){return call('PUT',path,headers,params,progress)},'patch':function(path,headers={},params={},progress=null){return call('PATCH',path,headers,params,progress)},'delete':function(path,headers={},params={},progress=null){return call('DELETE',path,headers,params,progress)},'addGlobalParam':addGlobalParam,'addGlobalHeader':addGlobalHeader}}(window.document);let iframe=function(method,url,params){let form=document.createElement('form');form.setAttribute('method',method);form.setAttribute('action',config.endpoint+url);for(let key in params){if(params.hasOwnProperty(key)){let hiddenField=document.createElement("input");hiddenField.setAttribute("type","hidden");hiddenField.setAttribute("name",key);hiddenField.setAttribute("value",params[key]);form.appendChild(hiddenField)}} -document.body.appendChild(form);return form.submit()};let account={get:function(){let path='/account';return http.get(path,{'content-type':'application/json'},{})},delete:function(){let path='/account';return http.delete(path,{'content-type':'application/json'},{})},updateEmail:function(email,password){if(email===undefined){throw new Error('Missing required parameter: "email"')} +document.body.appendChild(form);return form.submit()};let account={get:function(){let path='/account';let payload={};return http.get(path,{'content-type':'application/json'},payload)},delete:function(){let path='/account';let payload={};return http.delete(path,{'content-type':'application/json'},payload)},updateEmail:function(email,password){if(email===undefined){throw new Error('Missing required parameter: "email"')} if(password===undefined){throw new Error('Missing required parameter: "password"')} -let path='/account/email';return http.patch(path,{'content-type':'application/json'},{'email':email,'password':password})},updateName:function(name){if(name===undefined){throw new Error('Missing required parameter: "name"')} -let path='/account/name';return http.patch(path,{'content-type':'application/json'},{'name':name})},updatePassword:function(password,oldPassword){if(password===undefined){throw new Error('Missing required parameter: "password"')} +let path='/account/email';let payload={};if(email){payload.email=email} +if(password){payload.password=password} +return http.patch(path,{'content-type':'application/json'},payload)},updateName:function(name){if(name===undefined){throw new Error('Missing required parameter: "name"')} +let path='/account/name';let payload={};if(name){payload.name=name} +return http.patch(path,{'content-type':'application/json'},payload)},updatePassword:function(password,oldPassword){if(password===undefined){throw new Error('Missing required parameter: "password"')} if(oldPassword===undefined){throw new Error('Missing required parameter: "oldPassword"')} -let path='/account/password';return http.patch(path,{'content-type':'application/json'},{'password':password,'old-password':oldPassword})},getPrefs:function(){let path='/account/prefs';return http.get(path,{'content-type':'application/json'},{})},updatePrefs:function(prefs){if(prefs===undefined){throw new Error('Missing required parameter: "prefs"')} -let path='/account/prefs';return http.patch(path,{'content-type':'application/json'},{'prefs':prefs})},getSecurity:function(){let path='/account/security';return http.get(path,{'content-type':'application/json'},{})},getSessions:function(){let path='/account/sessions';return http.get(path,{'content-type':'application/json'},{})}};let auth={login:function(email,password,success,failure){if(email===undefined){throw new Error('Missing required parameter: "email"')} +let path='/account/password';let payload={};if(password){payload.password=password} +if(oldPassword){payload['old-password']=oldPassword} +return http.patch(path,{'content-type':'application/json'},payload)},getPrefs:function(){let path='/account/prefs';let payload={};return http.get(path,{'content-type':'application/json'},payload)},updatePrefs:function(prefs){if(prefs===undefined){throw new Error('Missing required parameter: "prefs"')} +let path='/account/prefs';let payload={};if(prefs){payload.prefs=prefs} +return http.patch(path,{'content-type':'application/json'},payload)},getSecurity:function(){let path='/account/security';let payload={};return http.get(path,{'content-type':'application/json'},payload)},getSessions:function(){let path='/account/sessions';let payload={};return http.get(path,{'content-type':'application/json'},payload)}};let auth={login:function(email,password,success,failure){if(email===undefined){throw new Error('Missing required parameter: "email"')} if(password===undefined){throw new Error('Missing required parameter: "password"')} if(success===undefined){throw new Error('Missing required parameter: "success"')} if(failure===undefined){throw new Error('Missing required parameter: "failure"')} -let path='/auth/login';return iframe('post',path,{project:config.project,'email':email,'password':password,'success':success,'failure':failure})},logout:function(){let path='/auth/logout';return http.delete(path,{'content-type':'application/json'},{})},logoutBySession:function(id){if(id===undefined){throw new Error('Missing required parameter: "id"')} -let path='/auth/logout/{id}'.replace(new RegExp('{id}','g'),id);return http.delete(path,{'content-type':'application/json'},{})},oauth:function(provider,success='',failure=''){if(provider===undefined){throw new Error('Missing required parameter: "provider"')} -let path='/auth/oauth/{provider}'.replace(new RegExp('{provider}','g'),provider);return http.get(path,{'content-type':'application/json'},{'success':success,'failure':failure})},recovery:function(email,reset){if(email===undefined){throw new Error('Missing required parameter: "email"')} +let path='/auth/login';let payload={};if(email){payload.email=email} +if(password){payload.password=password} +if(success){payload.success=success} +if(failure){payload.failure=failure} +payload.project=config.project;return iframe('post',path,payload)},logout:function(){let path='/auth/logout';let payload={};return http.delete(path,{'content-type':'application/json'},payload)},logoutBySession:function(id){if(id===undefined){throw new Error('Missing required parameter: "id"')} +let path='/auth/logout/{id}'.replace(new RegExp('{id}','g'),id);let payload={};return http.delete(path,{'content-type':'application/json'},payload)},oauth:function(provider,success='',failure=''){if(provider===undefined){throw new Error('Missing required parameter: "provider"')} +let path='/auth/oauth/{provider}'.replace(new RegExp('{provider}','g'),provider);let payload={};if(success){payload.success=success} +if(failure){payload.failure=failure} +return http.get(path,{'content-type':'application/json'},payload)},recovery:function(email,reset){if(email===undefined){throw new Error('Missing required parameter: "email"')} if(reset===undefined){throw new Error('Missing required parameter: "reset"')} -let path='/auth/recovery';return http.post(path,{'content-type':'application/json'},{'email':email,'reset':reset})},recoveryReset:function(userId,token,passwordA,passwordB){if(userId===undefined){throw new Error('Missing required parameter: "userId"')} +let path='/auth/recovery';let payload={};if(email){payload.email=email} +if(reset){payload.reset=reset} +return http.post(path,{'content-type':'application/json'},payload)},recoveryReset:function(userId,token,passwordA,passwordB){if(userId===undefined){throw new Error('Missing required parameter: "userId"')} if(token===undefined){throw new Error('Missing required parameter: "token"')} if(passwordA===undefined){throw new Error('Missing required parameter: "passwordA"')} if(passwordB===undefined){throw new Error('Missing required parameter: "passwordB"')} -let path='/auth/recovery/reset';return http.put(path,{'content-type':'application/json'},{'userId':userId,'token':token,'password-a':passwordA,'password-b':passwordB})},register:function(email,password,confirm,success='',failure='',name=''){if(email===undefined){throw new Error('Missing required parameter: "email"')} +let path='/auth/recovery/reset';let payload={};if(userId){payload.userId=userId} +if(token){payload.token=token} +if(passwordA){payload['password-a']=passwordA} +if(passwordB){payload['password-b']=passwordB} +return http.put(path,{'content-type':'application/json'},payload)},register:function(email,password,confirm,success='',failure='',name=''){if(email===undefined){throw new Error('Missing required parameter: "email"')} if(password===undefined){throw new Error('Missing required parameter: "password"')} if(confirm===undefined){throw new Error('Missing required parameter: "confirm"')} -let path='/auth/register';return iframe('post',path,{project:config.project,'email':email,'password':password,'confirm':confirm,'success':success,'failure':failure,'name':name})},confirm:function(userId,token){if(userId===undefined){throw new Error('Missing required parameter: "userId"')} +let path='/auth/register';let payload={};if(email){payload.email=email} +if(password){payload.password=password} +if(confirm){payload.confirm=confirm} +if(success){payload.success=success} +if(failure){payload.failure=failure} +if(name){payload.name=name} +payload.project=config.project;return iframe('post',path,payload)},confirm:function(userId,token){if(userId===undefined){throw new Error('Missing required parameter: "userId"')} if(token===undefined){throw new Error('Missing required parameter: "token"')} -let path='/auth/register/confirm';return http.post(path,{'content-type':'application/json'},{'userId':userId,'token':token})},confirmResend:function(confirm){if(confirm===undefined){throw new Error('Missing required parameter: "confirm"')} -let path='/auth/register/confirm/resend';return http.post(path,{'content-type':'application/json'},{'confirm':confirm})}};let avatars={getBrowser:function(code,width=100,height=100,quality=100){if(code===undefined){throw new Error('Missing required parameter: "code"')} -let path='/avatars/browsers/{code}'.replace(new RegExp('{code}','g'),code);return http.get(path,{'content-type':'application/json'},{'width':width,'height':height,'quality':quality})},getCreditCard:function(code,width=100,height=100,quality=100){if(code===undefined){throw new Error('Missing required parameter: "code"')} -let path='/avatars/credit-cards/{code}'.replace(new RegExp('{code}','g'),code);return http.get(path,{'content-type':'application/json'},{'width':width,'height':height,'quality':quality})},getFavicon:function(url){if(url===undefined){throw new Error('Missing required parameter: "url"')} -let path='/avatars/favicon';return http.get(path,{'content-type':'application/json'},{'url':url})},getFlag:function(code,width=100,height=100,quality=100){if(code===undefined){throw new Error('Missing required parameter: "code"')} -let path='/avatars/flags/{code}'.replace(new RegExp('{code}','g'),code);return http.get(path,{'content-type':'application/json'},{'width':width,'height':height,'quality':quality})},getImage:function(url,width=400,height=400){if(url===undefined){throw new Error('Missing required parameter: "url"')} -let path='/avatars/image';return http.get(path,{'content-type':'application/json'},{'url':url,'width':width,'height':height})},getQR:function(text,size=400,margin=1,download=0){if(text===undefined){throw new Error('Missing required parameter: "text"')} -let path='/avatars/qr';return http.get(path,{'content-type':'application/json'},{'text':text,'size':size,'margin':margin,'download':download})}};let database={listCollections:function(search='',limit=25,offset=0,orderType='ASC'){let path='/database';return http.get(path,{'content-type':'application/json'},{'search':search,'limit':limit,'offset':offset,'orderType':orderType})},createCollection:function(name,read=[],write=[],rules=[]){if(name===undefined){throw new Error('Missing required parameter: "name"')} -let path='/database';return http.post(path,{'content-type':'application/json'},{'name':name,'read':read,'write':write,'rules':rules})},getCollection:function(collectionId){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"')} -let path='/database/{collectionId}'.replace(new RegExp('{collectionId}','g'),collectionId);return http.get(path,{'content-type':'application/json'},{})},updateCollection:function(collectionId,name,read=[],write=[],rules=[]){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"')} +let path='/auth/register/confirm';let payload={};if(userId){payload.userId=userId} +if(token){payload.token=token} +return http.post(path,{'content-type':'application/json'},payload)},confirmResend:function(confirm){if(confirm===undefined){throw new Error('Missing required parameter: "confirm"')} +let path='/auth/register/confirm/resend';let payload={};if(confirm){payload.confirm=confirm} +return http.post(path,{'content-type':'application/json'},payload)}};let avatars={getBrowser:function(code,width=100,height=100,quality=100){if(code===undefined){throw new Error('Missing required parameter: "code"')} +let path='/avatars/browsers/{code}'.replace(new RegExp('{code}','g'),code);let payload={};if(width){payload.width=width} +if(height){payload.height=height} +if(quality){payload.quality=quality} +return http.get(path,{'content-type':'application/json'},payload)},getCreditCard:function(code,width=100,height=100,quality=100){if(code===undefined){throw new Error('Missing required parameter: "code"')} +let path='/avatars/credit-cards/{code}'.replace(new RegExp('{code}','g'),code);let payload={};if(width){payload.width=width} +if(height){payload.height=height} +if(quality){payload.quality=quality} +return http.get(path,{'content-type':'application/json'},payload)},getFavicon:function(url){if(url===undefined){throw new Error('Missing required parameter: "url"')} +let path='/avatars/favicon';let payload={};if(url){payload.url=url} +return http.get(path,{'content-type':'application/json'},payload)},getFlag:function(code,width=100,height=100,quality=100){if(code===undefined){throw new Error('Missing required parameter: "code"')} +let path='/avatars/flags/{code}'.replace(new RegExp('{code}','g'),code);let payload={};if(width){payload.width=width} +if(height){payload.height=height} +if(quality){payload.quality=quality} +return http.get(path,{'content-type':'application/json'},payload)},getImage:function(url,width=400,height=400){if(url===undefined){throw new Error('Missing required parameter: "url"')} +let path='/avatars/image';let payload={};if(url){payload.url=url} +if(width){payload.width=width} +if(height){payload.height=height} +return http.get(path,{'content-type':'application/json'},payload)},getQR:function(text,size=400,margin=1,download=0){if(text===undefined){throw new Error('Missing required parameter: "text"')} +let path='/avatars/qr';let payload={};if(text){payload.text=text} +if(size){payload.size=size} +if(margin){payload.margin=margin} +if(download){payload.download=download} +return http.get(path,{'content-type':'application/json'},payload)}};let database={listCollections:function(search='',limit=25,offset=0,orderType='ASC'){let path='/database';let payload={};if(search){payload.search=search} +if(limit){payload.limit=limit} +if(offset){payload.offset=offset} +if(orderType){payload.orderType=orderType} +return http.get(path,{'content-type':'application/json'},payload)},createCollection:function(name,read=[],write=[],rules=[]){if(name===undefined){throw new Error('Missing required parameter: "name"')} +let path='/database';let payload={};if(name){payload.name=name} +if(read){payload.read=read} +if(write){payload.write=write} +if(rules){payload.rules=rules} +return http.post(path,{'content-type':'application/json'},payload)},getCollection:function(collectionId){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"')} +let path='/database/{collectionId}'.replace(new RegExp('{collectionId}','g'),collectionId);let payload={};return http.get(path,{'content-type':'application/json'},payload)},updateCollection:function(collectionId,name,read=[],write=[],rules=[]){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"')} if(name===undefined){throw new Error('Missing required parameter: "name"')} -let path='/database/{collectionId}'.replace(new RegExp('{collectionId}','g'),collectionId);return http.put(path,{'content-type':'application/json'},{'name':name,'read':read,'write':write,'rules':rules})},deleteCollection:function(collectionId){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"')} -let path='/database/{collectionId}'.replace(new RegExp('{collectionId}','g'),collectionId);return http.delete(path,{'content-type':'application/json'},{})},listDocuments:function(collectionId,filters=[],offset=0,limit=50,orderField='$uid',orderType='ASC',orderCast='string',search='',first=0,last=0){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"')} -let path='/database/{collectionId}/documents'.replace(new RegExp('{collectionId}','g'),collectionId);return http.get(path,{'content-type':'application/json'},{'filters':filters,'offset':offset,'limit':limit,'order-field':orderField,'order-type':orderType,'order-cast':orderCast,'search':search,'first':first,'last':last})},createDocument:function(collectionId,data,read=[],write=[],parentDocument='',parentProperty='',parentPropertyType='assign'){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"')} +let path='/database/{collectionId}'.replace(new RegExp('{collectionId}','g'),collectionId);let payload={};if(name){payload.name=name} +if(read){payload.read=read} +if(write){payload.write=write} +if(rules){payload.rules=rules} +return http.put(path,{'content-type':'application/json'},payload)},deleteCollection:function(collectionId){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"')} +let path='/database/{collectionId}'.replace(new RegExp('{collectionId}','g'),collectionId);let payload={};return http.delete(path,{'content-type':'application/json'},payload)},listDocuments:function(collectionId,filters=[],offset=0,limit=50,orderField='$uid',orderType='ASC',orderCast='string',search='',first=0,last=0){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"')} +let path='/database/{collectionId}/documents'.replace(new RegExp('{collectionId}','g'),collectionId);let payload={};if(filters){payload.filters=filters} +if(offset){payload.offset=offset} +if(limit){payload.limit=limit} +if(orderField){payload['order-field']=orderField} +if(orderType){payload['order-type']=orderType} +if(orderCast){payload['order-cast']=orderCast} +if(search){payload.search=search} +if(first){payload.first=first} +if(last){payload.last=last} +return http.get(path,{'content-type':'application/json'},payload)},createDocument:function(collectionId,data,read=[],write=[],parentDocument='',parentProperty='',parentPropertyType='assign'){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"')} if(data===undefined){throw new Error('Missing required parameter: "data"')} -let path='/database/{collectionId}/documents'.replace(new RegExp('{collectionId}','g'),collectionId);return http.post(path,{'content-type':'application/json'},{'data':data,'read':read,'write':write,'parentDocument':parentDocument,'parentProperty':parentProperty,'parentPropertyType':parentPropertyType})},getDocument:function(collectionId,documentId){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"')} +let path='/database/{collectionId}/documents'.replace(new RegExp('{collectionId}','g'),collectionId);let payload={};if(data){payload.data=data} +if(read){payload.read=read} +if(write){payload.write=write} +if(parentDocument){payload.parentDocument=parentDocument} +if(parentProperty){payload.parentProperty=parentProperty} +if(parentPropertyType){payload.parentPropertyType=parentPropertyType} +return http.post(path,{'content-type':'application/json'},payload)},getDocument:function(collectionId,documentId){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"')} if(documentId===undefined){throw new Error('Missing required parameter: "documentId"')} -let path='/database/{collectionId}/documents/{documentId}'.replace(new RegExp('{collectionId}','g'),collectionId).replace(new RegExp('{documentId}','g'),documentId);return http.get(path,{'content-type':'application/json'},{})},updateDocument:function(collectionId,documentId,data,read=[],write=[]){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"')} +let path='/database/{collectionId}/documents/{documentId}'.replace(new RegExp('{collectionId}','g'),collectionId).replace(new RegExp('{documentId}','g'),documentId);let payload={};return http.get(path,{'content-type':'application/json'},payload)},updateDocument:function(collectionId,documentId,data,read=[],write=[]){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"')} if(documentId===undefined){throw new Error('Missing required parameter: "documentId"')} if(data===undefined){throw new Error('Missing required parameter: "data"')} -let path='/database/{collectionId}/documents/{documentId}'.replace(new RegExp('{collectionId}','g'),collectionId).replace(new RegExp('{documentId}','g'),documentId);return http.patch(path,{'content-type':'application/json'},{'data':data,'read':read,'write':write})},deleteDocument:function(collectionId,documentId){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"')} +let path='/database/{collectionId}/documents/{documentId}'.replace(new RegExp('{collectionId}','g'),collectionId).replace(new RegExp('{documentId}','g'),documentId);let payload={};if(data){payload.data=data} +if(read){payload.read=read} +if(write){payload.write=write} +return http.patch(path,{'content-type':'application/json'},payload)},deleteDocument:function(collectionId,documentId){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"')} if(documentId===undefined){throw new Error('Missing required parameter: "documentId"')} -let path='/database/{collectionId}/documents/{documentId}'.replace(new RegExp('{collectionId}','g'),collectionId).replace(new RegExp('{documentId}','g'),documentId);return http.delete(path,{'content-type':'application/json'},{})}};let locale={getLocale:function(){let path='/locale';return http.get(path,{'content-type':'application/json'},{})},getCountries:function(){let path='/locale/countries';return http.get(path,{'content-type':'application/json'},{})},getCountriesEU:function(){let path='/locale/countries/eu';return http.get(path,{'content-type':'application/json'},{})},getCountriesPhones:function(){let path='/locale/countries/phones';return http.get(path,{'content-type':'application/json'},{})},getCurrencies:function(){let path='/locale/currencies';return http.get(path,{'content-type':'application/json'},{})}};let projects={listProjects:function(){let path='/projects';return http.get(path,{'content-type':'application/json'},{})},createProject:function(name,teamId,description='',logo='',url='',legalName='',legalCountry='',legalState='',legalCity='',legalAddress='',legalTaxId=''){if(name===undefined){throw new Error('Missing required parameter: "name"')} +let path='/database/{collectionId}/documents/{documentId}'.replace(new RegExp('{collectionId}','g'),collectionId).replace(new RegExp('{documentId}','g'),documentId);let payload={};return http.delete(path,{'content-type':'application/json'},payload)}};let locale={getLocale:function(){let path='/locale';let payload={};return http.get(path,{'content-type':'application/json'},payload)},getCountries:function(){let path='/locale/countries';let payload={};return http.get(path,{'content-type':'application/json'},payload)},getCountriesEU:function(){let path='/locale/countries/eu';let payload={};return http.get(path,{'content-type':'application/json'},payload)},getCountriesPhones:function(){let path='/locale/countries/phones';let payload={};return http.get(path,{'content-type':'application/json'},payload)},getCurrencies:function(){let path='/locale/currencies';let payload={};return http.get(path,{'content-type':'application/json'},payload)}};let projects={listProjects:function(){let path='/projects';let payload={};return http.get(path,{'content-type':'application/json'},payload)},createProject:function(name,teamId,description='',logo='',url='',legalName='',legalCountry='',legalState='',legalCity='',legalAddress='',legalTaxId=''){if(name===undefined){throw new Error('Missing required parameter: "name"')} if(teamId===undefined){throw new Error('Missing required parameter: "teamId"')} -let path='/projects';return http.post(path,{'content-type':'application/json'},{'name':name,'teamId':teamId,'description':description,'logo':logo,'url':url,'legalName':legalName,'legalCountry':legalCountry,'legalState':legalState,'legalCity':legalCity,'legalAddress':legalAddress,'legalTaxId':legalTaxId})},getProject:function(projectId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"')} -let path='/projects/{projectId}'.replace(new RegExp('{projectId}','g'),projectId);return http.get(path,{'content-type':'application/json'},{})},updateProject:function(projectId,name,description='',logo='',url='',legalName='',legalCountry='',legalState='',legalCity='',legalAddress='',legalTaxId=''){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"')} +let path='/projects';let payload={};if(name){payload.name=name} +if(teamId){payload.teamId=teamId} +if(description){payload.description=description} +if(logo){payload.logo=logo} +if(url){payload.url=url} +if(legalName){payload.legalName=legalName} +if(legalCountry){payload.legalCountry=legalCountry} +if(legalState){payload.legalState=legalState} +if(legalCity){payload.legalCity=legalCity} +if(legalAddress){payload.legalAddress=legalAddress} +if(legalTaxId){payload.legalTaxId=legalTaxId} +return http.post(path,{'content-type':'application/json'},payload)},getProject:function(projectId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"')} +let path='/projects/{projectId}'.replace(new RegExp('{projectId}','g'),projectId);let payload={};return http.get(path,{'content-type':'application/json'},payload)},updateProject:function(projectId,name,description='',logo='',url='',legalName='',legalCountry='',legalState='',legalCity='',legalAddress='',legalTaxId=''){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"')} if(name===undefined){throw new Error('Missing required parameter: "name"')} -let path='/projects/{projectId}'.replace(new RegExp('{projectId}','g'),projectId);return http.patch(path,{'content-type':'application/json'},{'name':name,'description':description,'logo':logo,'url':url,'legalName':legalName,'legalCountry':legalCountry,'legalState':legalState,'legalCity':legalCity,'legalAddress':legalAddress,'legalTaxId':legalTaxId})},deleteProject:function(projectId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"')} -let path='/projects/{projectId}'.replace(new RegExp('{projectId}','g'),projectId);return http.delete(path,{'content-type':'application/json'},{})},listKeys:function(projectId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"')} -let path='/projects/{projectId}/keys'.replace(new RegExp('{projectId}','g'),projectId);return http.get(path,{'content-type':'application/json'},{})},createKey:function(projectId,name,scopes){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"')} +let path='/projects/{projectId}'.replace(new RegExp('{projectId}','g'),projectId);let payload={};if(name){payload.name=name} +if(description){payload.description=description} +if(logo){payload.logo=logo} +if(url){payload.url=url} +if(legalName){payload.legalName=legalName} +if(legalCountry){payload.legalCountry=legalCountry} +if(legalState){payload.legalState=legalState} +if(legalCity){payload.legalCity=legalCity} +if(legalAddress){payload.legalAddress=legalAddress} +if(legalTaxId){payload.legalTaxId=legalTaxId} +return http.patch(path,{'content-type':'application/json'},payload)},deleteProject:function(projectId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"')} +let path='/projects/{projectId}'.replace(new RegExp('{projectId}','g'),projectId);let payload={};return http.delete(path,{'content-type':'application/json'},payload)},listKeys:function(projectId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"')} +let path='/projects/{projectId}/keys'.replace(new RegExp('{projectId}','g'),projectId);let payload={};return http.get(path,{'content-type':'application/json'},payload)},createKey:function(projectId,name,scopes){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"')} if(name===undefined){throw new Error('Missing required parameter: "name"')} if(scopes===undefined){throw new Error('Missing required parameter: "scopes"')} -let path='/projects/{projectId}/keys'.replace(new RegExp('{projectId}','g'),projectId);return http.post(path,{'content-type':'application/json'},{'name':name,'scopes':scopes})},getKey:function(projectId,keyId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"')} +let path='/projects/{projectId}/keys'.replace(new RegExp('{projectId}','g'),projectId);let payload={};if(name){payload.name=name} +if(scopes){payload.scopes=scopes} +return http.post(path,{'content-type':'application/json'},payload)},getKey:function(projectId,keyId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"')} if(keyId===undefined){throw new Error('Missing required parameter: "keyId"')} -let path='/projects/{projectId}/keys/{keyId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{keyId}','g'),keyId);return http.get(path,{'content-type':'application/json'},{})},updateKey:function(projectId,keyId,name,scopes){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"')} +let path='/projects/{projectId}/keys/{keyId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{keyId}','g'),keyId);let payload={};return http.get(path,{'content-type':'application/json'},payload)},updateKey:function(projectId,keyId,name,scopes){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"')} if(keyId===undefined){throw new Error('Missing required parameter: "keyId"')} if(name===undefined){throw new Error('Missing required parameter: "name"')} if(scopes===undefined){throw new Error('Missing required parameter: "scopes"')} -let path='/projects/{projectId}/keys/{keyId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{keyId}','g'),keyId);return http.put(path,{'content-type':'application/json'},{'name':name,'scopes':scopes})},deleteKey:function(projectId,keyId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"')} +let path='/projects/{projectId}/keys/{keyId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{keyId}','g'),keyId);let payload={};if(name){payload.name=name} +if(scopes){payload.scopes=scopes} +return http.put(path,{'content-type':'application/json'},payload)},deleteKey:function(projectId,keyId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"')} if(keyId===undefined){throw new Error('Missing required parameter: "keyId"')} -let path='/projects/{projectId}/keys/{keyId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{keyId}','g'),keyId);return http.delete(path,{'content-type':'application/json'},{})},updateProjectOAuth:function(projectId,provider,appId='',secret=''){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"')} +let path='/projects/{projectId}/keys/{keyId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{keyId}','g'),keyId);let payload={};return http.delete(path,{'content-type':'application/json'},payload)},updateProjectOAuth:function(projectId,provider,appId='',secret=''){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"')} if(provider===undefined){throw new Error('Missing required parameter: "provider"')} -let path='/projects/{projectId}/oauth'.replace(new RegExp('{projectId}','g'),projectId);return http.patch(path,{'content-type':'application/json'},{'provider':provider,'appId':appId,'secret':secret})},listPlatforms:function(projectId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"')} -let path='/projects/{projectId}/platforms'.replace(new RegExp('{projectId}','g'),projectId);return http.get(path,{'content-type':'application/json'},{})},createPlatform:function(projectId,type,name,key='',store='',url=''){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"')} +let path='/projects/{projectId}/oauth'.replace(new RegExp('{projectId}','g'),projectId);let payload={};if(provider){payload.provider=provider} +if(appId){payload.appId=appId} +if(secret){payload.secret=secret} +return http.patch(path,{'content-type':'application/json'},payload)},listPlatforms:function(projectId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"')} +let path='/projects/{projectId}/platforms'.replace(new RegExp('{projectId}','g'),projectId);let payload={};return http.get(path,{'content-type':'application/json'},payload)},createPlatform:function(projectId,type,name,key='',store='',url=''){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"')} if(type===undefined){throw new Error('Missing required parameter: "type"')} if(name===undefined){throw new Error('Missing required parameter: "name"')} -let path='/projects/{projectId}/platforms'.replace(new RegExp('{projectId}','g'),projectId);return http.post(path,{'content-type':'application/json'},{'type':type,'name':name,'key':key,'store':store,'url':url})},getPlatform:function(projectId,platformId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"')} +let path='/projects/{projectId}/platforms'.replace(new RegExp('{projectId}','g'),projectId);let payload={};if(type){payload.type=type} +if(name){payload.name=name} +if(key){payload.key=key} +if(store){payload.store=store} +if(url){payload.url=url} +return http.post(path,{'content-type':'application/json'},payload)},getPlatform:function(projectId,platformId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"')} if(platformId===undefined){throw new Error('Missing required parameter: "platformId"')} -let path='/projects/{projectId}/platforms/{platformId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{platformId}','g'),platformId);return http.get(path,{'content-type':'application/json'},{})},updatePlatform:function(projectId,platformId,name,key='',store='',url=''){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"')} +let path='/projects/{projectId}/platforms/{platformId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{platformId}','g'),platformId);let payload={};return http.get(path,{'content-type':'application/json'},payload)},updatePlatform:function(projectId,platformId,name,key='',store='',url=''){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"')} if(platformId===undefined){throw new Error('Missing required parameter: "platformId"')} if(name===undefined){throw new Error('Missing required parameter: "name"')} -let path='/projects/{projectId}/platforms/{platformId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{platformId}','g'),platformId);return http.put(path,{'content-type':'application/json'},{'name':name,'key':key,'store':store,'url':url})},deletePlatform:function(projectId,platformId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"')} +let path='/projects/{projectId}/platforms/{platformId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{platformId}','g'),platformId);let payload={};if(name){payload.name=name} +if(key){payload.key=key} +if(store){payload.store=store} +if(url){payload.url=url} +return http.put(path,{'content-type':'application/json'},payload)},deletePlatform:function(projectId,platformId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"')} if(platformId===undefined){throw new Error('Missing required parameter: "platformId"')} -let path='/projects/{projectId}/platforms/{platformId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{platformId}','g'),platformId);return http.delete(path,{'content-type':'application/json'},{})},listTasks:function(projectId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"')} -let path='/projects/{projectId}/tasks'.replace(new RegExp('{projectId}','g'),projectId);return http.get(path,{'content-type':'application/json'},{})},createTask:function(projectId,name,status,schedule,security,httpMethod,httpUrl,httpHeaders=[],httpUser='',httpPass=''){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"')} +let path='/projects/{projectId}/platforms/{platformId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{platformId}','g'),platformId);let payload={};return http.delete(path,{'content-type':'application/json'},payload)},listTasks:function(projectId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"')} +let path='/projects/{projectId}/tasks'.replace(new RegExp('{projectId}','g'),projectId);let payload={};return http.get(path,{'content-type':'application/json'},payload)},createTask:function(projectId,name,status,schedule,security,httpMethod,httpUrl,httpHeaders=[],httpUser='',httpPass=''){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"')} if(name===undefined){throw new Error('Missing required parameter: "name"')} if(status===undefined){throw new Error('Missing required parameter: "status"')} if(schedule===undefined){throw new Error('Missing required parameter: "schedule"')} if(security===undefined){throw new Error('Missing required parameter: "security"')} if(httpMethod===undefined){throw new Error('Missing required parameter: "httpMethod"')} if(httpUrl===undefined){throw new Error('Missing required parameter: "httpUrl"')} -let path='/projects/{projectId}/tasks'.replace(new RegExp('{projectId}','g'),projectId);return http.post(path,{'content-type':'application/json'},{'name':name,'status':status,'schedule':schedule,'security':security,'httpMethod':httpMethod,'httpUrl':httpUrl,'httpHeaders':httpHeaders,'httpUser':httpUser,'httpPass':httpPass})},getTask:function(projectId,taskId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"')} +let path='/projects/{projectId}/tasks'.replace(new RegExp('{projectId}','g'),projectId);let payload={};if(name){payload.name=name} +if(status){payload.status=status} +if(schedule){payload.schedule=schedule} +if(security){payload.security=security} +if(httpMethod){payload.httpMethod=httpMethod} +if(httpUrl){payload.httpUrl=httpUrl} +if(httpHeaders){payload.httpHeaders=httpHeaders} +if(httpUser){payload.httpUser=httpUser} +if(httpPass){payload.httpPass=httpPass} +return http.post(path,{'content-type':'application/json'},payload)},getTask:function(projectId,taskId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"')} if(taskId===undefined){throw new Error('Missing required parameter: "taskId"')} -let path='/projects/{projectId}/tasks/{taskId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{taskId}','g'),taskId);return http.get(path,{'content-type':'application/json'},{})},updateTask:function(projectId,taskId,name,status,schedule,security,httpMethod,httpUrl,httpHeaders=[],httpUser='',httpPass=''){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"')} +let path='/projects/{projectId}/tasks/{taskId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{taskId}','g'),taskId);let payload={};return http.get(path,{'content-type':'application/json'},payload)},updateTask:function(projectId,taskId,name,status,schedule,security,httpMethod,httpUrl,httpHeaders=[],httpUser='',httpPass=''){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"')} if(taskId===undefined){throw new Error('Missing required parameter: "taskId"')} if(name===undefined){throw new Error('Missing required parameter: "name"')} if(status===undefined){throw new Error('Missing required parameter: "status"')} @@ -105,60 +225,126 @@ if(schedule===undefined){throw new Error('Missing required parameter: "schedule" if(security===undefined){throw new Error('Missing required parameter: "security"')} if(httpMethod===undefined){throw new Error('Missing required parameter: "httpMethod"')} if(httpUrl===undefined){throw new Error('Missing required parameter: "httpUrl"')} -let path='/projects/{projectId}/tasks/{taskId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{taskId}','g'),taskId);return http.put(path,{'content-type':'application/json'},{'name':name,'status':status,'schedule':schedule,'security':security,'httpMethod':httpMethod,'httpUrl':httpUrl,'httpHeaders':httpHeaders,'httpUser':httpUser,'httpPass':httpPass})},deleteTask:function(projectId,taskId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"')} +let path='/projects/{projectId}/tasks/{taskId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{taskId}','g'),taskId);let payload={};if(name){payload.name=name} +if(status){payload.status=status} +if(schedule){payload.schedule=schedule} +if(security){payload.security=security} +if(httpMethod){payload.httpMethod=httpMethod} +if(httpUrl){payload.httpUrl=httpUrl} +if(httpHeaders){payload.httpHeaders=httpHeaders} +if(httpUser){payload.httpUser=httpUser} +if(httpPass){payload.httpPass=httpPass} +return http.put(path,{'content-type':'application/json'},payload)},deleteTask:function(projectId,taskId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"')} if(taskId===undefined){throw new Error('Missing required parameter: "taskId"')} -let path='/projects/{projectId}/tasks/{taskId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{taskId}','g'),taskId);return http.delete(path,{'content-type':'application/json'},{})},getProjectUsage:function(projectId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"')} -let path='/projects/{projectId}/usage'.replace(new RegExp('{projectId}','g'),projectId);return http.get(path,{'content-type':'application/json'},{})},listWebhooks:function(projectId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"')} -let path='/projects/{projectId}/webhooks'.replace(new RegExp('{projectId}','g'),projectId);return http.get(path,{'content-type':'application/json'},{})},createWebhook:function(projectId,name,events,url,security,httpUser='',httpPass=''){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"')} +let path='/projects/{projectId}/tasks/{taskId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{taskId}','g'),taskId);let payload={};return http.delete(path,{'content-type':'application/json'},payload)},getProjectUsage:function(projectId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"')} +let path='/projects/{projectId}/usage'.replace(new RegExp('{projectId}','g'),projectId);let payload={};return http.get(path,{'content-type':'application/json'},payload)},listWebhooks:function(projectId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"')} +let path='/projects/{projectId}/webhooks'.replace(new RegExp('{projectId}','g'),projectId);let payload={};return http.get(path,{'content-type':'application/json'},payload)},createWebhook:function(projectId,name,events,url,security,httpUser='',httpPass=''){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"')} if(name===undefined){throw new Error('Missing required parameter: "name"')} if(events===undefined){throw new Error('Missing required parameter: "events"')} if(url===undefined){throw new Error('Missing required parameter: "url"')} if(security===undefined){throw new Error('Missing required parameter: "security"')} -let path='/projects/{projectId}/webhooks'.replace(new RegExp('{projectId}','g'),projectId);return http.post(path,{'content-type':'application/json'},{'name':name,'events':events,'url':url,'security':security,'httpUser':httpUser,'httpPass':httpPass})},getWebhook:function(projectId,webhookId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"')} +let path='/projects/{projectId}/webhooks'.replace(new RegExp('{projectId}','g'),projectId);let payload={};if(name){payload.name=name} +if(events){payload.events=events} +if(url){payload.url=url} +if(security){payload.security=security} +if(httpUser){payload.httpUser=httpUser} +if(httpPass){payload.httpPass=httpPass} +return http.post(path,{'content-type':'application/json'},payload)},getWebhook:function(projectId,webhookId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"')} if(webhookId===undefined){throw new Error('Missing required parameter: "webhookId"')} -let path='/projects/{projectId}/webhooks/{webhookId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{webhookId}','g'),webhookId);return http.get(path,{'content-type':'application/json'},{})},updateWebhook:function(projectId,webhookId,name,events,url,security,httpUser='',httpPass=''){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"')} +let path='/projects/{projectId}/webhooks/{webhookId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{webhookId}','g'),webhookId);let payload={};return http.get(path,{'content-type':'application/json'},payload)},updateWebhook:function(projectId,webhookId,name,events,url,security,httpUser='',httpPass=''){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"')} if(webhookId===undefined){throw new Error('Missing required parameter: "webhookId"')} if(name===undefined){throw new Error('Missing required parameter: "name"')} if(events===undefined){throw new Error('Missing required parameter: "events"')} if(url===undefined){throw new Error('Missing required parameter: "url"')} if(security===undefined){throw new Error('Missing required parameter: "security"')} -let path='/projects/{projectId}/webhooks/{webhookId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{webhookId}','g'),webhookId);return http.put(path,{'content-type':'application/json'},{'name':name,'events':events,'url':url,'security':security,'httpUser':httpUser,'httpPass':httpPass})},deleteWebhook:function(projectId,webhookId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"')} +let path='/projects/{projectId}/webhooks/{webhookId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{webhookId}','g'),webhookId);let payload={};if(name){payload.name=name} +if(events){payload.events=events} +if(url){payload.url=url} +if(security){payload.security=security} +if(httpUser){payload.httpUser=httpUser} +if(httpPass){payload.httpPass=httpPass} +return http.put(path,{'content-type':'application/json'},payload)},deleteWebhook:function(projectId,webhookId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"')} if(webhookId===undefined){throw new Error('Missing required parameter: "webhookId"')} -let path='/projects/{projectId}/webhooks/{webhookId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{webhookId}','g'),webhookId);return http.delete(path,{'content-type':'application/json'},{})}};let storage={listFiles:function(search='',limit=25,offset=0,orderType='ASC'){let path='/storage/files';return http.get(path,{'content-type':'application/json'},{'search':search,'limit':limit,'offset':offset,'orderType':orderType})},createFile:function(files,read=[],write=[],folderId=''){if(files===undefined){throw new Error('Missing required parameter: "files"')} -let path='/storage/files';return http.post(path,{'content-type':'multipart/form-data'},{'files':files,'read':read,'write':write,'folderId':folderId})},getFile:function(fileId){if(fileId===undefined){throw new Error('Missing required parameter: "fileId"')} -let path='/storage/files/{fileId}'.replace(new RegExp('{fileId}','g'),fileId);return http.get(path,{'content-type':'application/json'},{})},updateFile:function(fileId,read=[],write=[],folderId=''){if(fileId===undefined){throw new Error('Missing required parameter: "fileId"')} -let path='/storage/files/{fileId}'.replace(new RegExp('{fileId}','g'),fileId);return http.put(path,{'content-type':'application/json'},{'read':read,'write':write,'folderId':folderId})},deleteFile:function(fileId){if(fileId===undefined){throw new Error('Missing required parameter: "fileId"')} -let path='/storage/files/{fileId}'.replace(new RegExp('{fileId}','g'),fileId);return http.delete(path,{'content-type':'application/json'},{})},getFileDownload:function(fileId){if(fileId===undefined){throw new Error('Missing required parameter: "fileId"')} -let path='/storage/files/{fileId}/download'.replace(new RegExp('{fileId}','g'),fileId);return http.get(path,{'content-type':'application/json'},{})},getFilePreview:function(fileId,width=0,height=0,quality=100,background='',output=''){if(fileId===undefined){throw new Error('Missing required parameter: "fileId"')} -let path='/storage/files/{fileId}/preview'.replace(new RegExp('{fileId}','g'),fileId);return http.get(path,{'content-type':'application/json'},{'width':width,'height':height,'quality':quality,'background':background,'output':output})},getFileView:function(fileId,as=''){if(fileId===undefined){throw new Error('Missing required parameter: "fileId"')} -let path='/storage/files/{fileId}/view'.replace(new RegExp('{fileId}','g'),fileId);return http.get(path,{'content-type':'application/json'},{'as':as})}};let teams={listTeams:function(search='',limit=25,offset=0,orderType='ASC'){let path='/teams';return http.get(path,{'content-type':'application/json'},{'search':search,'limit':limit,'offset':offset,'orderType':orderType})},createTeam:function(name,roles=["owner"]){if(name===undefined){throw new Error('Missing required parameter: "name"')} -let path='/teams';return http.post(path,{'content-type':'application/json'},{'name':name,'roles':roles})},getTeam:function(teamId){if(teamId===undefined){throw new Error('Missing required parameter: "teamId"')} -let path='/teams/{teamId}'.replace(new RegExp('{teamId}','g'),teamId);return http.get(path,{'content-type':'application/json'},{})},updateTeam:function(teamId,name){if(teamId===undefined){throw new Error('Missing required parameter: "teamId"')} +let path='/projects/{projectId}/webhooks/{webhookId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{webhookId}','g'),webhookId);let payload={};return http.delete(path,{'content-type':'application/json'},payload)}};let storage={listFiles:function(search='',limit=25,offset=0,orderType='ASC'){let path='/storage/files';let payload={};if(search){payload.search=search} +if(limit){payload.limit=limit} +if(offset){payload.offset=offset} +if(orderType){payload.orderType=orderType} +return http.get(path,{'content-type':'application/json'},payload)},createFile:function(files,read=[],write=[],folderId=''){if(files===undefined){throw new Error('Missing required parameter: "files"')} +let path='/storage/files';let payload={};if(files){payload.files=files} +if(read){payload.read=read} +if(write){payload.write=write} +if(folderId){payload.folderId=folderId} +return http.post(path,{'content-type':'multipart/form-data'},payload)},getFile:function(fileId){if(fileId===undefined){throw new Error('Missing required parameter: "fileId"')} +let path='/storage/files/{fileId}'.replace(new RegExp('{fileId}','g'),fileId);let payload={};return http.get(path,{'content-type':'application/json'},payload)},updateFile:function(fileId,read=[],write=[],folderId=''){if(fileId===undefined){throw new Error('Missing required parameter: "fileId"')} +let path='/storage/files/{fileId}'.replace(new RegExp('{fileId}','g'),fileId);let payload={};if(read){payload.read=read} +if(write){payload.write=write} +if(folderId){payload.folderId=folderId} +return http.put(path,{'content-type':'application/json'},payload)},deleteFile:function(fileId){if(fileId===undefined){throw new Error('Missing required parameter: "fileId"')} +let path='/storage/files/{fileId}'.replace(new RegExp('{fileId}','g'),fileId);let payload={};return http.delete(path,{'content-type':'application/json'},payload)},getFileDownload:function(fileId){if(fileId===undefined){throw new Error('Missing required parameter: "fileId"')} +let path='/storage/files/{fileId}/download'.replace(new RegExp('{fileId}','g'),fileId);let payload={};return http.get(path,{'content-type':'application/json'},payload)},getFilePreview:function(fileId,width=0,height=0,quality=100,background='',output=''){if(fileId===undefined){throw new Error('Missing required parameter: "fileId"')} +let path='/storage/files/{fileId}/preview'.replace(new RegExp('{fileId}','g'),fileId);let payload={};if(width){payload.width=width} +if(height){payload.height=height} +if(quality){payload.quality=quality} +if(background){payload.background=background} +if(output){payload.output=output} +return http.get(path,{'content-type':'application/json'},payload)},getFileView:function(fileId,as=''){if(fileId===undefined){throw new Error('Missing required parameter: "fileId"')} +let path='/storage/files/{fileId}/view'.replace(new RegExp('{fileId}','g'),fileId);let payload={};if(as){payload.as=as} +return http.get(path,{'content-type':'application/json'},payload)}};let teams={listTeams:function(search='',limit=25,offset=0,orderType='ASC'){let path='/teams';let payload={};if(search){payload.search=search} +if(limit){payload.limit=limit} +if(offset){payload.offset=offset} +if(orderType){payload.orderType=orderType} +return http.get(path,{'content-type':'application/json'},payload)},createTeam:function(name,roles=["owner"]){if(name===undefined){throw new Error('Missing required parameter: "name"')} +let path='/teams';let payload={};if(name){payload.name=name} +if(roles){payload.roles=roles} +return http.post(path,{'content-type':'application/json'},payload)},getTeam:function(teamId){if(teamId===undefined){throw new Error('Missing required parameter: "teamId"')} +let path='/teams/{teamId}'.replace(new RegExp('{teamId}','g'),teamId);let payload={};return http.get(path,{'content-type':'application/json'},payload)},updateTeam:function(teamId,name){if(teamId===undefined){throw new Error('Missing required parameter: "teamId"')} if(name===undefined){throw new Error('Missing required parameter: "name"')} -let path='/teams/{teamId}'.replace(new RegExp('{teamId}','g'),teamId);return http.put(path,{'content-type':'application/json'},{'name':name})},deleteTeam:function(teamId){if(teamId===undefined){throw new Error('Missing required parameter: "teamId"')} -let path='/teams/{teamId}'.replace(new RegExp('{teamId}','g'),teamId);return http.delete(path,{'content-type':'application/json'},{})},getTeamMembers:function(teamId){if(teamId===undefined){throw new Error('Missing required parameter: "teamId"')} -let path='/teams/{teamId}/members'.replace(new RegExp('{teamId}','g'),teamId);return http.get(path,{'content-type':'application/json'},{})},createTeamMembership:function(teamId,email,roles,redirect,name=''){if(teamId===undefined){throw new Error('Missing required parameter: "teamId"')} +let path='/teams/{teamId}'.replace(new RegExp('{teamId}','g'),teamId);let payload={};if(name){payload.name=name} +return http.put(path,{'content-type':'application/json'},payload)},deleteTeam:function(teamId){if(teamId===undefined){throw new Error('Missing required parameter: "teamId"')} +let path='/teams/{teamId}'.replace(new RegExp('{teamId}','g'),teamId);let payload={};return http.delete(path,{'content-type':'application/json'},payload)},getTeamMembers:function(teamId){if(teamId===undefined){throw new Error('Missing required parameter: "teamId"')} +let path='/teams/{teamId}/members'.replace(new RegExp('{teamId}','g'),teamId);let payload={};return http.get(path,{'content-type':'application/json'},payload)},createTeamMembership:function(teamId,email,roles,redirect,name=''){if(teamId===undefined){throw new Error('Missing required parameter: "teamId"')} if(email===undefined){throw new Error('Missing required parameter: "email"')} if(roles===undefined){throw new Error('Missing required parameter: "roles"')} if(redirect===undefined){throw new Error('Missing required parameter: "redirect"')} -let path='/teams/{teamId}/memberships'.replace(new RegExp('{teamId}','g'),teamId);return http.post(path,{'content-type':'application/json'},{'email':email,'name':name,'roles':roles,'redirect':redirect})},deleteTeamMembership:function(teamId,inviteId){if(teamId===undefined){throw new Error('Missing required parameter: "teamId"')} +let path='/teams/{teamId}/memberships'.replace(new RegExp('{teamId}','g'),teamId);let payload={};if(email){payload.email=email} +if(name){payload.name=name} +if(roles){payload.roles=roles} +if(redirect){payload.redirect=redirect} +return http.post(path,{'content-type':'application/json'},payload)},deleteTeamMembership:function(teamId,inviteId){if(teamId===undefined){throw new Error('Missing required parameter: "teamId"')} if(inviteId===undefined){throw new Error('Missing required parameter: "inviteId"')} -let path='/teams/{teamId}/memberships/{inviteId}'.replace(new RegExp('{teamId}','g'),teamId).replace(new RegExp('{inviteId}','g'),inviteId);return http.delete(path,{'content-type':'application/json'},{})},createTeamMembershipResend:function(teamId,inviteId,redirect){if(teamId===undefined){throw new Error('Missing required parameter: "teamId"')} +let path='/teams/{teamId}/memberships/{inviteId}'.replace(new RegExp('{teamId}','g'),teamId).replace(new RegExp('{inviteId}','g'),inviteId);let payload={};return http.delete(path,{'content-type':'application/json'},payload)},createTeamMembershipResend:function(teamId,inviteId,redirect){if(teamId===undefined){throw new Error('Missing required parameter: "teamId"')} if(inviteId===undefined){throw new Error('Missing required parameter: "inviteId"')} if(redirect===undefined){throw new Error('Missing required parameter: "redirect"')} -let path='/teams/{teamId}/memberships/{inviteId}/resend'.replace(new RegExp('{teamId}','g'),teamId).replace(new RegExp('{inviteId}','g'),inviteId);return http.post(path,{'content-type':'application/json'},{'redirect':redirect})},updateTeamMembershipStatus:function(teamId,inviteId,userId,secret,success='',failure=''){if(teamId===undefined){throw new Error('Missing required parameter: "teamId"')} +let path='/teams/{teamId}/memberships/{inviteId}/resend'.replace(new RegExp('{teamId}','g'),teamId).replace(new RegExp('{inviteId}','g'),inviteId);let payload={};if(redirect){payload.redirect=redirect} +return http.post(path,{'content-type':'application/json'},payload)},updateTeamMembershipStatus:function(teamId,inviteId,userId,secret,success='',failure=''){if(teamId===undefined){throw new Error('Missing required parameter: "teamId"')} if(inviteId===undefined){throw new Error('Missing required parameter: "inviteId"')} if(userId===undefined){throw new Error('Missing required parameter: "userId"')} if(secret===undefined){throw new Error('Missing required parameter: "secret"')} -let path='/teams/{teamId}/memberships/{inviteId}/status'.replace(new RegExp('{teamId}','g'),teamId).replace(new RegExp('{inviteId}','g'),inviteId);return iframe('patch',path,{project:config.project,'userId':userId,'secret':secret,'success':success,'failure':failure})}};let users={listUsers:function(search='',limit=25,offset=0,orderType='ASC'){let path='/users';return http.get(path,{'content-type':'application/json'},{'search':search,'limit':limit,'offset':offset,'orderType':orderType})},createUser:function(email,password,name=''){if(email===undefined){throw new Error('Missing required parameter: "email"')} +let path='/teams/{teamId}/memberships/{inviteId}/status'.replace(new RegExp('{teamId}','g'),teamId).replace(new RegExp('{inviteId}','g'),inviteId);let payload={};if(userId){payload.userId=userId} +if(secret){payload.secret=secret} +if(success){payload.success=success} +if(failure){payload.failure=failure} +payload.project=config.project;return iframe('patch',path,payload)}};let users={listUsers:function(search='',limit=25,offset=0,orderType='ASC'){let path='/users';let payload={};if(search){payload.search=search} +if(limit){payload.limit=limit} +if(offset){payload.offset=offset} +if(orderType){payload.orderType=orderType} +return http.get(path,{'content-type':'application/json'},payload)},createUser:function(email,password,name=''){if(email===undefined){throw new Error('Missing required parameter: "email"')} if(password===undefined){throw new Error('Missing required parameter: "password"')} -let path='/users';return http.post(path,{'content-type':'application/json'},{'email':email,'password':password,'name':name})},getUser:function(userId){if(userId===undefined){throw new Error('Missing required parameter: "userId"')} -let path='/users/{userId}'.replace(new RegExp('{userId}','g'),userId);return http.get(path,{'content-type':'application/json'},{})},getUserLogs:function(userId){if(userId===undefined){throw new Error('Missing required parameter: "userId"')} -let path='/users/{userId}/logs'.replace(new RegExp('{userId}','g'),userId);return http.get(path,{'content-type':'application/json'},{})},getUserPrefs:function(userId){if(userId===undefined){throw new Error('Missing required parameter: "userId"')} -let path='/users/{userId}/prefs'.replace(new RegExp('{userId}','g'),userId);return http.get(path,{'content-type':'application/json'},{})},getUserSessions:function(userId){if(userId===undefined){throw new Error('Missing required parameter: "userId"')} -let path='/users/{userId}/sessions'.replace(new RegExp('{userId}','g'),userId);return http.get(path,{'content-type':'application/json'},{})},deleteUserSessions:function(userId){if(userId===undefined){throw new Error('Missing required parameter: "userId"')} -let path='/users/{userId}/sessions'.replace(new RegExp('{userId}','g'),userId);return http.delete(path,{'content-type':'application/json'},{})},deleteUsersSession:function(userId,sessionId){if(userId===undefined){throw new Error('Missing required parameter: "userId"')} +let path='/users';let payload={};if(email){payload.email=email} +if(password){payload.password=password} +if(name){payload.name=name} +return http.post(path,{'content-type':'application/json'},payload)},getUser:function(userId){if(userId===undefined){throw new Error('Missing required parameter: "userId"')} +let path='/users/{userId}'.replace(new RegExp('{userId}','g'),userId);let payload={};return http.get(path,{'content-type':'application/json'},payload)},getUserLogs:function(userId){if(userId===undefined){throw new Error('Missing required parameter: "userId"')} +let path='/users/{userId}/logs'.replace(new RegExp('{userId}','g'),userId);let payload={};return http.get(path,{'content-type':'application/json'},payload)},getUserPrefs:function(userId){if(userId===undefined){throw new Error('Missing required parameter: "userId"')} +let path='/users/{userId}/prefs'.replace(new RegExp('{userId}','g'),userId);let payload={};return http.get(path,{'content-type':'application/json'},payload)},updateUserPrefs:function(userId,prefs){if(userId===undefined){throw new Error('Missing required parameter: "userId"')} +if(prefs===undefined){throw new Error('Missing required parameter: "prefs"')} +let path='/users/{userId}/prefs'.replace(new RegExp('{userId}','g'),userId);let payload={};if(prefs){payload.prefs=prefs} +return http.patch(path,{'content-type':'application/json'},payload)},getUserSessions:function(userId){if(userId===undefined){throw new Error('Missing required parameter: "userId"')} +let path='/users/{userId}/sessions'.replace(new RegExp('{userId}','g'),userId);let payload={};return http.get(path,{'content-type':'application/json'},payload)},deleteUserSessions:function(userId){if(userId===undefined){throw new Error('Missing required parameter: "userId"')} +let path='/users/{userId}/sessions'.replace(new RegExp('{userId}','g'),userId);let payload={};return http.delete(path,{'content-type':'application/json'},payload)},deleteUserSession:function(userId,sessionId){if(userId===undefined){throw new Error('Missing required parameter: "userId"')} if(sessionId===undefined){throw new Error('Missing required parameter: "sessionId"')} -let path='/users/{userId}/sessions/:session'.replace(new RegExp('{userId}','g'),userId);return http.delete(path,{'content-type':'application/json'},{'sessionId':sessionId})},updateUserStatus:function(userId,status){if(userId===undefined){throw new Error('Missing required parameter: "userId"')} +let path='/users/{userId}/sessions/:session'.replace(new RegExp('{userId}','g'),userId);let payload={};if(sessionId){payload.sessionId=sessionId} +return http.delete(path,{'content-type':'application/json'},payload)},updateUserStatus:function(userId,status){if(userId===undefined){throw new Error('Missing required parameter: "userId"')} if(status===undefined){throw new Error('Missing required parameter: "status"')} -let path='/users/{userId}/status'.replace(new RegExp('{userId}','g'),userId);return http.patch(path,{'content-type':'application/json'},{'status':status})}};return{setEndpoint:setEndpoint,setProject:setProject,setKey:setKey,setLocale:setLocale,setMode:setMode,account:account,auth:auth,avatars:avatars,database:database,locale:locale,projects:projects,storage:storage,teams:teams,users:users}}})(window) \ No newline at end of file +let path='/users/{userId}/status'.replace(new RegExp('{userId}','g'),userId);let payload={};if(status){payload.status=status} +return http.patch(path,{'content-type':'application/json'},payload)}};return{setEndpoint:setEndpoint,setProject:setProject,setKey:setKey,setLocale:setLocale,setMode:setMode,account:account,auth:auth,avatars:avatars,database:database,locale:locale,projects:projects,storage:storage,teams:teams,users:users}};if(typeof module!=="undefined"){module.exports=window.Appwrite}})((typeof window!=="undefined")?window:{}) \ No newline at end of file diff --git a/app/sdks/node/README.md b/app/sdks/node/README.md index 29cf410fd..286b14bc9 100644 --- a/app/sdks/node/README.md +++ b/app/sdks/node/README.md @@ -1,7 +1,7 @@ # Appwrite SDK for NodeJS ![License](https://img.shields.io/github/license/appwrite/sdk-for-node.svg?v=1) -![Version](https://img.shields.io/badge/api%20version-latest-blue.svg?v=1) +![Version](https://img.shields.io/badge/api%20version-0.2.0-blue.svg?v=1) **This SDK is compatible with Appwrite server version 0.2.0. For older versions, please check previous releases.** diff --git a/app/sdks/node/docs/examples/users/delete-user-session.md b/app/sdks/node/docs/examples/users/delete-user-session.md new file mode 100644 index 000000000..dab704e2d --- /dev/null +++ b/app/sdks/node/docs/examples/users/delete-user-session.md @@ -0,0 +1,19 @@ +const sdk = require('node-appwrite'); + +// Init SDK +let client = new sdk.Client(); + +let users = new sdk.Users(client); + +client + .setProject('') + .setKey('') +; + +let promise = users.deleteUserSession('[USER_ID]', '[SESSION_ID]'); + +promise.then(function (response) { + console.log(response); +}, function (error) { + console.log(error); +}); \ No newline at end of file diff --git a/app/sdks/node/docs/examples/users/update-user-prefs.md b/app/sdks/node/docs/examples/users/update-user-prefs.md new file mode 100644 index 000000000..beacba0b0 --- /dev/null +++ b/app/sdks/node/docs/examples/users/update-user-prefs.md @@ -0,0 +1,19 @@ +const sdk = require('node-appwrite'); + +// Init SDK +let client = new sdk.Client(); + +let users = new sdk.Users(client); + +client + .setProject('') + .setKey('') +; + +let promise = users.updateUserPrefs('[USER_ID]', '{}'); + +promise.then(function (response) { + console.log(response); +}, function (error) { + console.log(error); +}); \ No newline at end of file diff --git a/app/sdks/node/lib/client.js b/app/sdks/node/lib/client.js index 07deb786a..f3329fe08 100644 --- a/app/sdks/node/lib/client.js +++ b/app/sdks/node/lib/client.js @@ -4,7 +4,7 @@ const request = require('request-promise-native'); class Client { constructor() { - this.endpoint = 'https://https://appwrite.io/v1'; + this.endpoint = 'https://appwrite.io/v1'; this.headers = { 'content-type': '', 'x-sdk-version': 'appwrite:nodejs:1.0.26', @@ -15,7 +15,7 @@ class Client { /** * Set Project * - * Your Appwrite project ID. You can find your project ID in your Appwrite console project settings. + * Your Appwrite project ID * * @param string value * @@ -30,7 +30,7 @@ class Client { /** * Set Key * - * Your Appwrite project secret key. You can can create a new API key from your Appwrite console API keys dashboard. + * Your Appwrite project secret key * * @param string value * diff --git a/app/sdks/node/lib/services/auth.js b/app/sdks/node/lib/services/auth.js index e8bdd2bc2..f31d24b01 100644 --- a/app/sdks/node/lib/services/auth.js +++ b/app/sdks/node/lib/services/auth.js @@ -14,7 +14,7 @@ class Auth extends Service { * the only valid redirect URL's are the once from domains you have set when * added your platforms in the console interface. * - * When accessing this route using JavaScript from the browser, success and + * When accessing this route using Javascript from the browser, success and * failure parameter URLs are required. Appwrite server will respond with a * 301 redirect status code and will set the user session cookie. This * behavior is enforced because modern browsers are limiting 3rd party cookies @@ -170,7 +170,7 @@ class Auth extends Service { * the only valid redirect URL's are the once from domains you have set when * added your platforms in the console interface. * - * When accessing this route using JavaScript from the browser, success and + * When accessing this route using Javascript from the browser, success and * failure parameter URLs are required. Appwrite server will respond with a * 301 redirect status code and will set the user session cookie. This * behavior is enforced because modern browsers are limiting 3rd party cookies diff --git a/app/sdks/node/lib/services/locale.js b/app/sdks/node/lib/services/locale.js index 5231e1a1e..0a9ffad1a 100644 --- a/app/sdks/node/lib/services/locale.js +++ b/app/sdks/node/lib/services/locale.js @@ -76,9 +76,9 @@ class Locale extends Service { /** * List of currencies * - * List of all currencies, including currency symbol, name, plural, and - * decimal digits for all major and minor currencies. You can use the locale - * header to get the data in supported language. + * List of all currencies, including currency symol, name, plural, and decimal + * digits for all major and minor currencies. You can use the locale header to + * get the data in supported language. * * @throws Exception * @return {} diff --git a/app/sdks/node/lib/services/users.js b/app/sdks/node/lib/services/users.js index c378e329f..6367acad4 100644 --- a/app/sdks/node/lib/services/users.js +++ b/app/sdks/node/lib/services/users.js @@ -100,6 +100,26 @@ class Users extends Service { }); } + /** + * Update Account Prefs + * + * Update user preferences by its unique ID. You can pass only the specific + * settings you wish to update. + * + * @param string userId + * @param string prefs + * @throws Exception + * @return {} + */ + async updateUserPrefs(userId, prefs) { + let path = '/users/{userId}/prefs'.replace(new RegExp('{userId}', 'g'), userId); + + return await this.client.call('patch', path, {'content-type': 'application/json'}, + { + 'prefs': prefs + }); + } + /** * Get User Sessions * @@ -144,7 +164,7 @@ class Users extends Service { * @throws Exception * @return {} */ - async deleteUsersSession(userId, sessionId) { + async deleteUserSession(userId, sessionId) { let path = '/users/{userId}/sessions/:session'.replace(new RegExp('{userId}', 'g'), userId); return await this.client.call('delete', path, {'content-type': 'application/json'}, diff --git a/app/sdks/php/README.md b/app/sdks/php/README.md index 50f218e0d..62f8ddf67 100644 --- a/app/sdks/php/README.md +++ b/app/sdks/php/README.md @@ -1,7 +1,7 @@ # Appwrite SDK for PHP ![License](https://img.shields.io/github/license/appwrite/sdk-for-php.svg?v=1) -![Version](https://img.shields.io/badge/api%20version-latest-blue.svg?v=1) +![Version](https://img.shields.io/badge/api%20version-0.2.0-blue.svg?v=1) **This SDK is compatible with Appwrite server version 0.2.0. For older versions, please check previous releases.** @@ -13,7 +13,7 @@ Appwrite backend as a service cuts up to 70% of the time and costs required for ## Installation -To install via [Composer](https://getcomposer.org/): +To install via [Composer](http://getcomposer.org/): ```bash composer require appwrite/appwrite @@ -21,4 +21,4 @@ composer require appwrite/appwrite ## License -Please see the [BSD-3-Clause license](https://raw.githubusercontent.com/appwrite/appwrite/master/LICENSE) file for more information. +Please see the [BSD-3-Clause license](https://raw.githubusercontent.com/appwrite/appwrite/master/LICENSE) file for more information. \ No newline at end of file diff --git a/app/sdks/php/docs/account.md b/app/sdks/php/docs/account.md index d1772d26c..a18d978e6 100644 --- a/app/sdks/php/docs/account.md +++ b/app/sdks/php/docs/account.md @@ -3,7 +3,7 @@ ## Get Account ```http request -GET https://https://appwrite.io/v1/account +GET https://appwrite.io/v1/account ``` ** Get currently logged in user data as JSON object. ** @@ -11,7 +11,7 @@ GET https://https://appwrite.io/v1/account ## Delete Account ```http request -DELETE https://https://appwrite.io/v1/account +DELETE https://appwrite.io/v1/account ``` ** Delete currently logged in user account. ** @@ -19,7 +19,7 @@ DELETE https://https://appwrite.io/v1/account ## Update Account Email ```http request -PATCH https://https://appwrite.io/v1/account/email +PATCH https://appwrite.io/v1/account/email ``` ** Update currently logged in user account email address. After changing user address, user confirmation status is being reset and a new confirmation mail is sent. For security measures, user password is required to complete this request. ** @@ -34,7 +34,7 @@ PATCH https://https://appwrite.io/v1/account/email ## Update Account Name ```http request -PATCH https://https://appwrite.io/v1/account/name +PATCH https://appwrite.io/v1/account/name ``` ** Update currently logged in user account name. ** @@ -48,7 +48,7 @@ PATCH https://https://appwrite.io/v1/account/name ## Update Account Password ```http request -PATCH https://https://appwrite.io/v1/account/password +PATCH https://appwrite.io/v1/account/password ``` ** Update currently logged in user password. For validation, user is required to pass the password twice. ** @@ -63,7 +63,7 @@ PATCH https://https://appwrite.io/v1/account/password ## Get Account Preferences ```http request -GET https://https://appwrite.io/v1/account/prefs +GET https://appwrite.io/v1/account/prefs ``` ** Get currently logged in user preferences key-value object. ** @@ -71,7 +71,7 @@ GET https://https://appwrite.io/v1/account/prefs ## Update Account Prefs ```http request -PATCH https://https://appwrite.io/v1/account/prefs +PATCH https://appwrite.io/v1/account/prefs ``` ** Update currently logged in user account preferences. You can pass only the specific settings you wish to update. ** @@ -85,7 +85,7 @@ PATCH https://https://appwrite.io/v1/account/prefs ## Get Account Security Log ```http request -GET https://https://appwrite.io/v1/account/security +GET https://appwrite.io/v1/account/security ``` ** Get currently logged in user list of latest security activity logs. Each log returns user IP address, location and date and time of log. ** @@ -93,7 +93,7 @@ GET https://https://appwrite.io/v1/account/security ## Get Account Active Sessions ```http request -GET https://https://appwrite.io/v1/account/sessions +GET https://appwrite.io/v1/account/sessions ``` ** Get currently logged in user list of active sessions across different devices. ** diff --git a/app/sdks/php/docs/auth.md b/app/sdks/php/docs/auth.md index 5cf248197..19fd6d4a0 100644 --- a/app/sdks/php/docs/auth.md +++ b/app/sdks/php/docs/auth.md @@ -3,14 +3,14 @@ ## Login User ```http request -POST https://https://appwrite.io/v1/auth/login +POST https://appwrite.io/v1/auth/login ``` ** Allow the user to login into his account by providing a valid email and password combination. Use the success and failure arguments to provide a redirect URL\'s back to your app when login is completed. Please notice that in order to avoid a [Redirect Attacks](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URL's are the once from domains you have set when added your platforms in the console interface. -When accessing this route using JavaScript from the browser, success and failure parameter URLs are required. Appwrite server will respond with a 301 redirect status code and will set the user session cookie. This behavior is enforced because modern browsers are limiting 3rd party cookies in XHR of fetch requests to protect user privacy. ** +When accessing this route using Javascript from the browser, success and failure parameter URLs are required. Appwrite server will respond with a 301 redirect status code and will set the user session cookie. This behavior is enforced because modern browsers are limiting 3rd party cookies in XHR of fetch requests to protect user privacy. ** ### Parameters @@ -24,7 +24,7 @@ When accessing this route using JavaScript from the browser, success and failure ## Logout Current Session ```http request -DELETE https://https://appwrite.io/v1/auth/logout +DELETE https://appwrite.io/v1/auth/logout ``` ** Use this endpoint to log out the currently logged in user from his account. When succeed this endpoint will delete the user session and remove the session secret cookie from the user client. ** @@ -32,7 +32,7 @@ DELETE https://https://appwrite.io/v1/auth/logout ## Logout Specific Session ```http request -DELETE https://https://appwrite.io/v1/auth/logout/{id} +DELETE https://appwrite.io/v1/auth/logout/{id} ``` ** Use this endpoint to log out the currently logged in user from all his account sessions across all his different devices. When using the option id argument, only the session unique ID provider will be deleted. ** @@ -46,7 +46,7 @@ DELETE https://https://appwrite.io/v1/auth/logout/{id} ## OAuth Login ```http request -GET https://https://appwrite.io/v1/auth/oauth/{provider} +GET https://appwrite.io/v1/auth/oauth/{provider} ``` ### Parameters @@ -60,7 +60,7 @@ GET https://https://appwrite.io/v1/auth/oauth/{provider} ## Password Recovery ```http request -POST https://https://appwrite.io/v1/auth/recovery +POST https://appwrite.io/v1/auth/recovery ``` ** Sends the user an email with a temporary secret token for password reset. When the user clicks the confirmation link he is redirected back to your app password reset redirect URL with a secret token and email address values attached to the URL query string. Use the query string params to submit a request to the /auth/password/reset endpoint to complete the process. ** @@ -75,7 +75,7 @@ POST https://https://appwrite.io/v1/auth/recovery ## Password Reset ```http request -PUT https://https://appwrite.io/v1/auth/recovery/reset +PUT https://appwrite.io/v1/auth/recovery/reset ``` ** Use this endpoint to complete the user account password reset. Both the **userId** and **token** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the /auth/recovery endpoint. @@ -94,7 +94,7 @@ Please notice that in order to avoid a [Redirect Attacks](https://github.com/OWA ## Register User ```http request -POST https://https://appwrite.io/v1/auth/register +POST https://appwrite.io/v1/auth/register ``` ** Use this endpoint to allow a new user to register an account in your project. Use the success and failure URL's to redirect users back to your application after signup completes. @@ -103,7 +103,7 @@ If registration completes successfully user will be sent with a confirmation ema Please notice that in order to avoid a [Redirect Attacks](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/Unvalidated_Redirects_and_Forwards_Cheat_Sheet.md) the only valid redirect URL's are the once from domains you have set when added your platforms in the console interface. -When accessing this route using JavaScript from the browser, success and failure parameter URLs are required. Appwrite server will respond with a 301 redirect status code and will set the user session cookie. This behavior is enforced because modern browsers are limiting 3rd party cookies in XHR of fetch requests to protect user privacy. ** +When accessing this route using Javascript from the browser, success and failure parameter URLs are required. Appwrite server will respond with a 301 redirect status code and will set the user session cookie. This behavior is enforced because modern browsers are limiting 3rd party cookies in XHR of fetch requests to protect user privacy. ** ### Parameters @@ -119,7 +119,7 @@ When accessing this route using JavaScript from the browser, success and failure ## Confirm User ```http request -POST https://https://appwrite.io/v1/auth/register/confirm +POST https://appwrite.io/v1/auth/register/confirm ``` ** Use this endpoint to complete the confirmation of the user account email address. Both the **userId** and **token** arguments will be passed as query parameters to the redirect URL you have provided when sending your request to the /auth/register endpoint. ** @@ -134,7 +134,7 @@ POST https://https://appwrite.io/v1/auth/register/confirm ## Resend Confirmation ```http request -POST https://https://appwrite.io/v1/auth/register/confirm/resend +POST https://appwrite.io/v1/auth/register/confirm/resend ``` ** This endpoint allows the user to request your app to resend him his email confirmation message. The redirect arguments acts the same way as in /auth/register endpoint. diff --git a/app/sdks/php/docs/avatars.md b/app/sdks/php/docs/avatars.md index 11a7beedd..9c1c3018a 100644 --- a/app/sdks/php/docs/avatars.md +++ b/app/sdks/php/docs/avatars.md @@ -3,7 +3,7 @@ ## Get Browser Icon ```http request -GET https://https://appwrite.io/v1/avatars/browsers/{code} +GET https://appwrite.io/v1/avatars/browsers/{code} ``` ** You can use this endpoint to show different browser icons to your users, The code argument receives the browser code as appear in your user /account/sessions endpoint. Use width, height and quality arguments to change the output settings. ** @@ -20,7 +20,7 @@ GET https://https://appwrite.io/v1/avatars/browsers/{code} ## Get Credit Card Icon ```http request -GET https://https://appwrite.io/v1/avatars/credit-cards/{code} +GET https://appwrite.io/v1/avatars/credit-cards/{code} ``` ** Need to display your users with your billing method or there payment methods? The credit card endpoint will return you the icon of the credit card provider you need. Use width, height and quality arguments to change the output settings. ** @@ -37,7 +37,7 @@ GET https://https://appwrite.io/v1/avatars/credit-cards/{code} ## Get Favicon ```http request -GET https://https://appwrite.io/v1/avatars/favicon +GET https://appwrite.io/v1/avatars/favicon ``` ** Use this endpoint to fetch the favorite icon (AKA favicon) of a any remote website URL. ** @@ -51,7 +51,7 @@ GET https://https://appwrite.io/v1/avatars/favicon ## Get Country Flag ```http request -GET https://https://appwrite.io/v1/avatars/flags/{code} +GET https://appwrite.io/v1/avatars/flags/{code} ``` ** You can use this endpoint to show different country flags icons to your users, The code argument receives the a 2 letter country code. Use width, height and quality arguments to change the output settings. ** @@ -68,7 +68,7 @@ GET https://https://appwrite.io/v1/avatars/flags/{code} ## Get Image from URL ```http request -GET https://https://appwrite.io/v1/avatars/image +GET https://appwrite.io/v1/avatars/image ``` ** Use this endpoint to fetch a remote image URL and crop it to any image size you want. This endpoint is very useful if you need to crop and display remote images in your app or in cases, you want to make sure a 3rd party image is properly served using a TLS protocol. ** @@ -84,7 +84,7 @@ GET https://https://appwrite.io/v1/avatars/image ## Text to QR Generator ```http request -GET https://https://appwrite.io/v1/avatars/qr +GET https://appwrite.io/v1/avatars/qr ``` ** Converts a given plain text to a QR code image. You can use the query parameters to change the size and style of the resulting image. ** diff --git a/app/sdks/php/docs/database.md b/app/sdks/php/docs/database.md index 33d8e2d9b..3ab8bda82 100644 --- a/app/sdks/php/docs/database.md +++ b/app/sdks/php/docs/database.md @@ -3,7 +3,7 @@ ## List Collections ```http request -GET https://https://appwrite.io/v1/database +GET https://appwrite.io/v1/database ``` ** Get a list of all the user collections. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project collections. [Learn more about different API modes](/docs/modes). ** @@ -20,7 +20,7 @@ GET https://https://appwrite.io/v1/database ## Create Collection ```http request -POST https://https://appwrite.io/v1/database +POST https://appwrite.io/v1/database ``` ** Create a new Collection. ** @@ -37,7 +37,7 @@ POST https://https://appwrite.io/v1/database ## Get Collection ```http request -GET https://https://appwrite.io/v1/database/{collectionId} +GET https://appwrite.io/v1/database/{collectionId} ``` ** Get collection by its unique ID. This endpoint response returns a JSON object with the collection metadata. ** @@ -51,7 +51,7 @@ GET https://https://appwrite.io/v1/database/{collectionId} ## Update Collection ```http request -PUT https://https://appwrite.io/v1/database/{collectionId} +PUT https://appwrite.io/v1/database/{collectionId} ``` ** Update collection by its unique ID. ** @@ -69,7 +69,7 @@ PUT https://https://appwrite.io/v1/database/{collectionId} ## Delete Collection ```http request -DELETE https://https://appwrite.io/v1/database/{collectionId} +DELETE https://appwrite.io/v1/database/{collectionId} ``` ** Delete a collection by its unique ID. Only users with write permissions have access to delete this resource. ** @@ -83,7 +83,7 @@ DELETE https://https://appwrite.io/v1/database/{collectionId} ## List Documents ```http request -GET https://https://appwrite.io/v1/database/{collectionId}/documents +GET https://appwrite.io/v1/database/{collectionId}/documents ``` ** Get a list of all the user documents. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project documents. [Learn more about different API modes](/docs/modes). ** @@ -106,7 +106,7 @@ GET https://https://appwrite.io/v1/database/{collectionId}/documents ## Create Document ```http request -POST https://https://appwrite.io/v1/database/{collectionId}/documents +POST https://appwrite.io/v1/database/{collectionId}/documents ``` ** Create a new Document. ** @@ -126,7 +126,7 @@ POST https://https://appwrite.io/v1/database/{collectionId}/documents ## Get Document ```http request -GET https://https://appwrite.io/v1/database/{collectionId}/documents/{documentId} +GET https://appwrite.io/v1/database/{collectionId}/documents/{documentId} ``` ** Get document by its unique ID. This endpoint response returns a JSON object with the document data. ** @@ -141,7 +141,7 @@ GET https://https://appwrite.io/v1/database/{collectionId}/documents/{documentId ## Update Document ```http request -PATCH https://https://appwrite.io/v1/database/{collectionId}/documents/{documentId} +PATCH https://appwrite.io/v1/database/{collectionId}/documents/{documentId} ``` ### Parameters @@ -157,7 +157,7 @@ PATCH https://https://appwrite.io/v1/database/{collectionId}/documents/{document ## Delete Document ```http request -DELETE https://https://appwrite.io/v1/database/{collectionId}/documents/{documentId} +DELETE https://appwrite.io/v1/database/{collectionId}/documents/{documentId} ``` ** Delete document by its unique ID. This endpoint deletes only the parent documents, his attributes and relations to other documents. Child documents **will not** be deleted. ** diff --git a/app/sdks/php/docs/examples/projects/create-task.md b/app/sdks/php/docs/examples/projects/create-task.md index fab9e2765..436ebc6f0 100644 --- a/app/sdks/php/docs/examples/projects/create-task.md +++ b/app/sdks/php/docs/examples/projects/create-task.md @@ -12,4 +12,4 @@ $client $projects = new Projects($client); -$result = $projects->createTask('[PROJECT_ID]', '[NAME]', 'play', '', 0, 'GET', 'https://example.com'); \ No newline at end of file +$result = $projects->createTask('[PROJECT_ID]', '[NAME]', 'play', '', 1, 'GET', 'https://example.com'); \ No newline at end of file diff --git a/app/sdks/php/docs/examples/projects/update-webhook.md b/app/sdks/php/docs/examples/projects/update-webhook.md index a7e42dcce..6f176a01f 100644 --- a/app/sdks/php/docs/examples/projects/update-webhook.md +++ b/app/sdks/php/docs/examples/projects/update-webhook.md @@ -12,4 +12,4 @@ $client $projects = new Projects($client); -$result = $projects->updateWebhook('[PROJECT_ID]', '[WEBHOOK_ID]', '[NAME]', [], '[URL]', 0); \ No newline at end of file +$result = $projects->updateWebhook('[PROJECT_ID]', '[WEBHOOK_ID]', '[NAME]', [], '[URL]', 1); \ No newline at end of file diff --git a/app/sdks/php/docs/examples/users/delete-user-session.md b/app/sdks/php/docs/examples/users/delete-user-session.md new file mode 100644 index 000000000..28ad6dd16 --- /dev/null +++ b/app/sdks/php/docs/examples/users/delete-user-session.md @@ -0,0 +1,15 @@ +setProject('') + ->setKey('') +; + +$users = new Users($client); + +$result = $users->deleteUserSession('[USER_ID]', '[SESSION_ID]'); \ No newline at end of file diff --git a/app/sdks/php/docs/examples/users/update-user-prefs.md b/app/sdks/php/docs/examples/users/update-user-prefs.md new file mode 100644 index 000000000..073df70bd --- /dev/null +++ b/app/sdks/php/docs/examples/users/update-user-prefs.md @@ -0,0 +1,15 @@ +setProject('') + ->setKey('') +; + +$users = new Users($client); + +$result = $users->updateUserPrefs('[USER_ID]', '{}'); \ No newline at end of file diff --git a/app/sdks/php/docs/locale.md b/app/sdks/php/docs/locale.md index 5ea8ab37f..91956eee3 100644 --- a/app/sdks/php/docs/locale.md +++ b/app/sdks/php/docs/locale.md @@ -3,7 +3,7 @@ ## Get User Locale ```http request -GET https://https://appwrite.io/v1/locale +GET https://appwrite.io/v1/locale ``` ** Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in supported language. ** @@ -11,7 +11,7 @@ GET https://https://appwrite.io/v1/locale ## List Countries ```http request -GET https://https://appwrite.io/v1/locale/countries +GET https://appwrite.io/v1/locale/countries ``` ** List of all countries. You can use the locale header to get the data in supported language. ** @@ -19,7 +19,7 @@ GET https://https://appwrite.io/v1/locale/countries ## List EU Countries ```http request -GET https://https://appwrite.io/v1/locale/countries/eu +GET https://appwrite.io/v1/locale/countries/eu ``` ** List of all countries that are currently members of the EU. You can use the locale header to get the data in supported language. UK brexit date is currently set to 2019-10-31 and will be updated if and when needed. ** @@ -27,7 +27,7 @@ GET https://https://appwrite.io/v1/locale/countries/eu ## List Countries Phone Codes ```http request -GET https://https://appwrite.io/v1/locale/countries/phones +GET https://appwrite.io/v1/locale/countries/phones ``` ** List of all countries phone codes. You can use the locale header to get the data in supported language. ** @@ -35,8 +35,8 @@ GET https://https://appwrite.io/v1/locale/countries/phones ## List of currencies ```http request -GET https://https://appwrite.io/v1/locale/currencies +GET https://appwrite.io/v1/locale/currencies ``` -** List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in supported language. ** +** List of all currencies, including currency symol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in supported language. ** diff --git a/app/sdks/php/docs/projects.md b/app/sdks/php/docs/projects.md index 6db3e1b51..bc4026970 100644 --- a/app/sdks/php/docs/projects.md +++ b/app/sdks/php/docs/projects.md @@ -3,13 +3,13 @@ ## List Projects ```http request -GET https://https://appwrite.io/v1/projects +GET https://appwrite.io/v1/projects ``` ## Create Project ```http request -POST https://https://appwrite.io/v1/projects +POST https://appwrite.io/v1/projects ``` ### Parameters @@ -31,7 +31,7 @@ POST https://https://appwrite.io/v1/projects ## Get Project ```http request -GET https://https://appwrite.io/v1/projects/{projectId} +GET https://appwrite.io/v1/projects/{projectId} ``` ### Parameters @@ -43,7 +43,7 @@ GET https://https://appwrite.io/v1/projects/{projectId} ## Update Project ```http request -PATCH https://https://appwrite.io/v1/projects/{projectId} +PATCH https://appwrite.io/v1/projects/{projectId} ``` ### Parameters @@ -65,7 +65,7 @@ PATCH https://https://appwrite.io/v1/projects/{projectId} ## Delete Project ```http request -DELETE https://https://appwrite.io/v1/projects/{projectId} +DELETE https://appwrite.io/v1/projects/{projectId} ``` ### Parameters @@ -77,7 +77,7 @@ DELETE https://https://appwrite.io/v1/projects/{projectId} ## List Keys ```http request -GET https://https://appwrite.io/v1/projects/{projectId}/keys +GET https://appwrite.io/v1/projects/{projectId}/keys ``` ### Parameters @@ -89,7 +89,7 @@ GET https://https://appwrite.io/v1/projects/{projectId}/keys ## Create Key ```http request -POST https://https://appwrite.io/v1/projects/{projectId}/keys +POST https://appwrite.io/v1/projects/{projectId}/keys ``` ### Parameters @@ -103,7 +103,7 @@ POST https://https://appwrite.io/v1/projects/{projectId}/keys ## Get Key ```http request -GET https://https://appwrite.io/v1/projects/{projectId}/keys/{keyId} +GET https://appwrite.io/v1/projects/{projectId}/keys/{keyId} ``` ### Parameters @@ -116,7 +116,7 @@ GET https://https://appwrite.io/v1/projects/{projectId}/keys/{keyId} ## Update Key ```http request -PUT https://https://appwrite.io/v1/projects/{projectId}/keys/{keyId} +PUT https://appwrite.io/v1/projects/{projectId}/keys/{keyId} ``` ### Parameters @@ -131,7 +131,7 @@ PUT https://https://appwrite.io/v1/projects/{projectId}/keys/{keyId} ## Delete Key ```http request -DELETE https://https://appwrite.io/v1/projects/{projectId}/keys/{keyId} +DELETE https://appwrite.io/v1/projects/{projectId}/keys/{keyId} ``` ### Parameters @@ -144,7 +144,7 @@ DELETE https://https://appwrite.io/v1/projects/{projectId}/keys/{keyId} ## Update Project OAuth ```http request -PATCH https://https://appwrite.io/v1/projects/{projectId}/oauth +PATCH https://appwrite.io/v1/projects/{projectId}/oauth ``` ### Parameters @@ -159,7 +159,7 @@ PATCH https://https://appwrite.io/v1/projects/{projectId}/oauth ## List Platforms ```http request -GET https://https://appwrite.io/v1/projects/{projectId}/platforms +GET https://appwrite.io/v1/projects/{projectId}/platforms ``` ### Parameters @@ -171,7 +171,7 @@ GET https://https://appwrite.io/v1/projects/{projectId}/platforms ## Create Platform ```http request -POST https://https://appwrite.io/v1/projects/{projectId}/platforms +POST https://appwrite.io/v1/projects/{projectId}/platforms ``` ### Parameters @@ -188,7 +188,7 @@ POST https://https://appwrite.io/v1/projects/{projectId}/platforms ## Get Platform ```http request -GET https://https://appwrite.io/v1/projects/{projectId}/platforms/{platformId} +GET https://appwrite.io/v1/projects/{projectId}/platforms/{platformId} ``` ### Parameters @@ -201,7 +201,7 @@ GET https://https://appwrite.io/v1/projects/{projectId}/platforms/{platformId} ## Update Platform ```http request -PUT https://https://appwrite.io/v1/projects/{projectId}/platforms/{platformId} +PUT https://appwrite.io/v1/projects/{projectId}/platforms/{platformId} ``` ### Parameters @@ -218,7 +218,7 @@ PUT https://https://appwrite.io/v1/projects/{projectId}/platforms/{platformId} ## Delete Platform ```http request -DELETE https://https://appwrite.io/v1/projects/{projectId}/platforms/{platformId} +DELETE https://appwrite.io/v1/projects/{projectId}/platforms/{platformId} ``` ### Parameters @@ -231,7 +231,7 @@ DELETE https://https://appwrite.io/v1/projects/{projectId}/platforms/{platformId ## List Tasks ```http request -GET https://https://appwrite.io/v1/projects/{projectId}/tasks +GET https://appwrite.io/v1/projects/{projectId}/tasks ``` ### Parameters @@ -243,7 +243,7 @@ GET https://https://appwrite.io/v1/projects/{projectId}/tasks ## Create Task ```http request -POST https://https://appwrite.io/v1/projects/{projectId}/tasks +POST https://appwrite.io/v1/projects/{projectId}/tasks ``` ### Parameters @@ -264,7 +264,7 @@ POST https://https://appwrite.io/v1/projects/{projectId}/tasks ## Get Task ```http request -GET https://https://appwrite.io/v1/projects/{projectId}/tasks/{taskId} +GET https://appwrite.io/v1/projects/{projectId}/tasks/{taskId} ``` ### Parameters @@ -277,7 +277,7 @@ GET https://https://appwrite.io/v1/projects/{projectId}/tasks/{taskId} ## Update Task ```http request -PUT https://https://appwrite.io/v1/projects/{projectId}/tasks/{taskId} +PUT https://appwrite.io/v1/projects/{projectId}/tasks/{taskId} ``` ### Parameters @@ -299,7 +299,7 @@ PUT https://https://appwrite.io/v1/projects/{projectId}/tasks/{taskId} ## Delete Task ```http request -DELETE https://https://appwrite.io/v1/projects/{projectId}/tasks/{taskId} +DELETE https://appwrite.io/v1/projects/{projectId}/tasks/{taskId} ``` ### Parameters @@ -312,7 +312,7 @@ DELETE https://https://appwrite.io/v1/projects/{projectId}/tasks/{taskId} ## Get Project ```http request -GET https://https://appwrite.io/v1/projects/{projectId}/usage +GET https://appwrite.io/v1/projects/{projectId}/usage ``` ### Parameters @@ -324,7 +324,7 @@ GET https://https://appwrite.io/v1/projects/{projectId}/usage ## List Webhooks ```http request -GET https://https://appwrite.io/v1/projects/{projectId}/webhooks +GET https://appwrite.io/v1/projects/{projectId}/webhooks ``` ### Parameters @@ -336,7 +336,7 @@ GET https://https://appwrite.io/v1/projects/{projectId}/webhooks ## Create Webhook ```http request -POST https://https://appwrite.io/v1/projects/{projectId}/webhooks +POST https://appwrite.io/v1/projects/{projectId}/webhooks ``` ### Parameters @@ -354,7 +354,7 @@ POST https://https://appwrite.io/v1/projects/{projectId}/webhooks ## Get Webhook ```http request -GET https://https://appwrite.io/v1/projects/{projectId}/webhooks/{webhookId} +GET https://appwrite.io/v1/projects/{projectId}/webhooks/{webhookId} ``` ### Parameters @@ -367,7 +367,7 @@ GET https://https://appwrite.io/v1/projects/{projectId}/webhooks/{webhookId} ## Update Webhook ```http request -PUT https://https://appwrite.io/v1/projects/{projectId}/webhooks/{webhookId} +PUT https://appwrite.io/v1/projects/{projectId}/webhooks/{webhookId} ``` ### Parameters @@ -386,7 +386,7 @@ PUT https://https://appwrite.io/v1/projects/{projectId}/webhooks/{webhookId} ## Delete Webhook ```http request -DELETE https://https://appwrite.io/v1/projects/{projectId}/webhooks/{webhookId} +DELETE https://appwrite.io/v1/projects/{projectId}/webhooks/{webhookId} ``` ### Parameters diff --git a/app/sdks/php/docs/storage.md b/app/sdks/php/docs/storage.md index fd9268ef8..177357eea 100644 --- a/app/sdks/php/docs/storage.md +++ b/app/sdks/php/docs/storage.md @@ -3,7 +3,7 @@ ## List Files ```http request -GET https://https://appwrite.io/v1/storage/files +GET https://appwrite.io/v1/storage/files ``` ** Get a list of all the user files. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project files. [Learn more about different API modes](/docs/modes). ** @@ -20,7 +20,7 @@ GET https://https://appwrite.io/v1/storage/files ## Create File ```http request -POST https://https://appwrite.io/v1/storage/files +POST https://appwrite.io/v1/storage/files ``` ** Create a new file. The user who creates the file will automatically be assigned to read and write access unless he has passed custom values for read and write arguments. ** @@ -37,7 +37,7 @@ POST https://https://appwrite.io/v1/storage/files ## Get File ```http request -GET https://https://appwrite.io/v1/storage/files/{fileId} +GET https://appwrite.io/v1/storage/files/{fileId} ``` ** Get file by its unique ID. This endpoint response returns a JSON object with the file metadata. ** @@ -51,7 +51,7 @@ GET https://https://appwrite.io/v1/storage/files/{fileId} ## Update File ```http request -PUT https://https://appwrite.io/v1/storage/files/{fileId} +PUT https://appwrite.io/v1/storage/files/{fileId} ``` ** Update file by its unique ID. Only users with write permissions have access to update this resource. ** @@ -68,7 +68,7 @@ PUT https://https://appwrite.io/v1/storage/files/{fileId} ## Delete File ```http request -DELETE https://https://appwrite.io/v1/storage/files/{fileId} +DELETE https://appwrite.io/v1/storage/files/{fileId} ``` ** Delete a file by its unique ID. Only users with write permissions have access to delete this resource. ** @@ -82,7 +82,7 @@ DELETE https://https://appwrite.io/v1/storage/files/{fileId} ## Get File for Download ```http request -GET https://https://appwrite.io/v1/storage/files/{fileId}/download +GET https://appwrite.io/v1/storage/files/{fileId}/download ``` ** Get file content by its unique ID. The endpoint response return with a 'Content-Disposition: attachment' header that tells the browser to start downloading the file to user downloads directory. ** @@ -96,7 +96,7 @@ GET https://https://appwrite.io/v1/storage/files/{fileId}/download ## Get File Preview ```http request -GET https://https://appwrite.io/v1/storage/files/{fileId}/preview +GET https://appwrite.io/v1/storage/files/{fileId}/preview ``` ** Get file preview image. Currently, this method supports preview for image files (jpg, png, and gif), other supported formats, like pdf, docs, slides, and spreadsheets will return file icon image. You can also pass query string arguments for cutting and resizing your preview image. ** @@ -115,7 +115,7 @@ GET https://https://appwrite.io/v1/storage/files/{fileId}/preview ## Get File for View ```http request -GET https://https://appwrite.io/v1/storage/files/{fileId}/view +GET https://appwrite.io/v1/storage/files/{fileId}/view ``` ** Get file content by its unique ID. This endpoint is similar to the download method but returns with no 'Content-Disposition: attachment' header. ** diff --git a/app/sdks/php/docs/teams.md b/app/sdks/php/docs/teams.md index e71ca83e8..8d6e7f232 100644 --- a/app/sdks/php/docs/teams.md +++ b/app/sdks/php/docs/teams.md @@ -3,7 +3,7 @@ ## List Teams ```http request -GET https://https://appwrite.io/v1/teams +GET https://appwrite.io/v1/teams ``` ** Get a list of all the current user teams. You can use the query params to filter your results. On admin mode, this endpoint will return a list of all of the project teams. [Learn more about different API modes](/docs/modes). ** @@ -20,7 +20,7 @@ GET https://https://appwrite.io/v1/teams ## Create Team ```http request -POST https://https://appwrite.io/v1/teams +POST https://appwrite.io/v1/teams ``` ** Create a new team. The user who creates the team will automatically be assigned as the owner of the team. The team owner can invite new members, who will be able add new owners and update or delete the team from your project. ** @@ -35,7 +35,7 @@ POST https://https://appwrite.io/v1/teams ## Get Team ```http request -GET https://https://appwrite.io/v1/teams/{teamId} +GET https://appwrite.io/v1/teams/{teamId} ``` ** Get team by its unique ID. All team members have read access for this resource. ** @@ -49,7 +49,7 @@ GET https://https://appwrite.io/v1/teams/{teamId} ## Update Team ```http request -PUT https://https://appwrite.io/v1/teams/{teamId} +PUT https://appwrite.io/v1/teams/{teamId} ``` ** Update team by its unique ID. Only team owners have write access for this resource. ** @@ -64,7 +64,7 @@ PUT https://https://appwrite.io/v1/teams/{teamId} ## Delete Team ```http request -DELETE https://https://appwrite.io/v1/teams/{teamId} +DELETE https://appwrite.io/v1/teams/{teamId} ``` ** Delete team by its unique ID. Only team owners have write access for this resource. ** @@ -78,7 +78,7 @@ DELETE https://https://appwrite.io/v1/teams/{teamId} ## Get Team Members ```http request -GET https://https://appwrite.io/v1/teams/{teamId}/members +GET https://appwrite.io/v1/teams/{teamId}/members ``` ** Get team members by the team unique ID. All team members have read access for this list of resources. ** @@ -92,7 +92,7 @@ GET https://https://appwrite.io/v1/teams/{teamId}/members ## Create Team Membership ```http request -POST https://https://appwrite.io/v1/teams/{teamId}/memberships +POST https://appwrite.io/v1/teams/{teamId}/memberships ``` ** Use this endpoint to invite a new member to your team. An email with a link to join the team will be sent to the new member email address. If member doesn't exists in the project it will be automatically created. @@ -114,7 +114,7 @@ Please notice that in order to avoid a [Redirect Attacks](https://github.com/OWA ## Delete Team Membership ```http request -DELETE https://https://appwrite.io/v1/teams/{teamId}/memberships/{inviteId} +DELETE https://appwrite.io/v1/teams/{teamId}/memberships/{inviteId} ``` ** This endpoint allows a user to leave a team or for a team owner to delete the membership of any other team member. ** @@ -129,7 +129,7 @@ DELETE https://https://appwrite.io/v1/teams/{teamId}/memberships/{inviteId} ## Create Team Membership (Resend) ```http request -POST https://https://appwrite.io/v1/teams/{teamId}/memberships/{inviteId}/resend +POST https://appwrite.io/v1/teams/{teamId}/memberships/{inviteId}/resend ``` ** Use this endpoint to resend your invitation email for a user to join a team. ** @@ -145,7 +145,7 @@ POST https://https://appwrite.io/v1/teams/{teamId}/memberships/{inviteId}/resend ## Update Team Membership Status ```http request -PATCH https://https://appwrite.io/v1/teams/{teamId}/memberships/{inviteId}/status +PATCH https://appwrite.io/v1/teams/{teamId}/memberships/{inviteId}/status ``` ** Use this endpoint to let user accept an invitation to join a team after he is being redirect back to your app from the invitation email. Use the success and failure URL's to redirect users back to your application after the request completes. diff --git a/app/sdks/php/docs/users.md b/app/sdks/php/docs/users.md index abd22e488..dba2aa35d 100644 --- a/app/sdks/php/docs/users.md +++ b/app/sdks/php/docs/users.md @@ -3,7 +3,7 @@ ## List Users ```http request -GET https://https://appwrite.io/v1/users +GET https://appwrite.io/v1/users ``` ** Get a list of all the project users. You can use the query params to filter your results. ** @@ -20,7 +20,7 @@ GET https://https://appwrite.io/v1/users ## Create User ```http request -POST https://https://appwrite.io/v1/users +POST https://appwrite.io/v1/users ``` ** Create a new user. ** @@ -36,7 +36,7 @@ POST https://https://appwrite.io/v1/users ## Get User ```http request -GET https://https://appwrite.io/v1/users/{userId} +GET https://appwrite.io/v1/users/{userId} ``` ** Get user by its unique ID. ** @@ -50,7 +50,7 @@ GET https://https://appwrite.io/v1/users/{userId} ## Get User Logs ```http request -GET https://https://appwrite.io/v1/users/{userId}/logs +GET https://appwrite.io/v1/users/{userId}/logs ``` ** Get user activity logs list by its unique ID. ** @@ -64,7 +64,7 @@ GET https://https://appwrite.io/v1/users/{userId}/logs ## Get User Prefs ```http request -GET https://https://appwrite.io/v1/users/{userId}/prefs +GET https://appwrite.io/v1/users/{userId}/prefs ``` ** Get user preferences by its unique ID. ** @@ -75,10 +75,25 @@ GET https://https://appwrite.io/v1/users/{userId}/prefs | --- | --- | --- | --- | | userId | string | **Required** User unique ID. | | +## Update Account Prefs + +```http request +PATCH https://appwrite.io/v1/users/{userId}/prefs +``` + +** Update user preferences by its unique ID. You can pass only the specific settings you wish to update. ** + +### Parameters + +| Field Name | Type | Description | Default | +| --- | --- | --- | --- | +| userId | string | **Required** User unique ID. | | +| prefs | string | Prefs key-value JSON object string. | | + ## Get User Sessions ```http request -GET https://https://appwrite.io/v1/users/{userId}/sessions +GET https://appwrite.io/v1/users/{userId}/sessions ``` ** Get user sessions list by its unique ID. ** @@ -92,7 +107,7 @@ GET https://https://appwrite.io/v1/users/{userId}/sessions ## Delete User Sessions ```http request -DELETE https://https://appwrite.io/v1/users/{userId}/sessions +DELETE https://appwrite.io/v1/users/{userId}/sessions ``` ** Delete all user sessions by its unique ID. ** @@ -106,7 +121,7 @@ DELETE https://https://appwrite.io/v1/users/{userId}/sessions ## Delete User Session ```http request -DELETE https://https://appwrite.io/v1/users/{userId}/sessions/:session +DELETE https://appwrite.io/v1/users/{userId}/sessions/:session ``` ** Delete user sessions by its unique ID. ** @@ -121,7 +136,7 @@ DELETE https://https://appwrite.io/v1/users/{userId}/sessions/:session ## Update user status ```http request -PATCH https://https://appwrite.io/v1/users/{userId}/status +PATCH https://appwrite.io/v1/users/{userId}/status ``` ** Update user status by its unique ID. ** diff --git a/app/sdks/php/src/Appwrite/Client.php b/app/sdks/php/src/Appwrite/Client.php index 0a07f6588..29240ec49 100644 --- a/app/sdks/php/src/Appwrite/Client.php +++ b/app/sdks/php/src/Appwrite/Client.php @@ -28,7 +28,7 @@ class Client * * @var string */ - protected $endpoint = 'https://https://appwrite.io/v1'; + protected $endpoint = 'https://appwrite.io/v1'; /** * Global Headers @@ -50,7 +50,7 @@ class Client /** * Set Project * - * Your Appwrite project ID. You can find your project ID in your Appwrite console project settings. + * Your Appwrite project ID * * @param string $value * @@ -66,7 +66,7 @@ class Client /** * Set Key * - * Your Appwrite project secret key. You can can create a new API key from your Appwrite console API keys dashboard. + * Your Appwrite project secret key * * @param string $value * diff --git a/app/sdks/php/src/Appwrite/Services/Auth.php b/app/sdks/php/src/Appwrite/Services/Auth.php index aa0c32c3f..dae305144 100644 --- a/app/sdks/php/src/Appwrite/Services/Auth.php +++ b/app/sdks/php/src/Appwrite/Services/Auth.php @@ -20,7 +20,7 @@ class Auth extends Service * the only valid redirect URL's are the once from domains you have set when * added your platforms in the console interface. * - * When accessing this route using JavaScript from the browser, success and + * When accessing this route using Javascript from the browser, success and * failure parameter URLs are required. Appwrite server will respond with a * 301 redirect status code and will set the user session cookie. This * behavior is enforced because modern browsers are limiting 3rd party cookies @@ -188,7 +188,7 @@ class Auth extends Service * the only valid redirect URL's are the once from domains you have set when * added your platforms in the console interface. * - * When accessing this route using JavaScript from the browser, success and + * When accessing this route using Javascript from the browser, success and * failure parameter URLs are required. Appwrite server will respond with a * 301 redirect status code and will set the user session cookie. This * behavior is enforced because modern browsers are limiting 3rd party cookies diff --git a/app/sdks/php/src/Appwrite/Services/Locale.php b/app/sdks/php/src/Appwrite/Services/Locale.php index b03c1c3e7..1ae5ae042 100644 --- a/app/sdks/php/src/Appwrite/Services/Locale.php +++ b/app/sdks/php/src/Appwrite/Services/Locale.php @@ -90,9 +90,9 @@ class Locale extends Service /** * List of currencies * - * List of all currencies, including currency symbol, name, plural, and - * decimal digits for all major and minor currencies. You can use the locale - * header to get the data in supported language. + * List of all currencies, including currency symol, name, plural, and decimal + * digits for all major and minor currencies. You can use the locale header to + * get the data in supported language. * * @throws Exception * @return array diff --git a/app/sdks/php/src/Appwrite/Services/Users.php b/app/sdks/php/src/Appwrite/Services/Users.php index 3b893c0e9..89d97f189 100644 --- a/app/sdks/php/src/Appwrite/Services/Users.php +++ b/app/sdks/php/src/Appwrite/Services/Users.php @@ -116,6 +116,28 @@ class Users extends Service ], $params); } + /** + * Update Account Prefs + * + * Update user preferences by its unique ID. You can pass only the specific + * settings you wish to update. + * + * @param string $userId + * @param string $prefs + * @throws Exception + * @return array + */ + public function updateUserPrefs($userId, $prefs) + { + $path = str_replace(['{userId}'], [$userId], '/users/{userId}/prefs'); + $params = []; + + $params['prefs'] = $prefs; + + return $this->client->call(Client::METHOD_PATCH, $path, [ + ], $params); + } + /** * Get User Sessions * @@ -164,7 +186,7 @@ class Users extends Service * @throws Exception * @return array */ - public function deleteUsersSession($userId, $sessionId) + public function deleteUserSession($userId, $sessionId) { $path = str_replace(['{userId}'], [$userId], '/users/{userId}/sessions/:session'); $params = []; diff --git a/app/sdks/python/README.md b/app/sdks/python/README.md index 2ced831bf..16f76cf3b 100644 --- a/app/sdks/python/README.md +++ b/app/sdks/python/README.md @@ -1,7 +1,7 @@ # Appwrite SDK for Python ![License](https://img.shields.io/github/license/appwrite/sdk-for-python.svg?v=1) -![Version](https://img.shields.io/badge/api%20version-latest-blue.svg?v=1) +![Version](https://img.shields.io/badge/api%20version-0.2.0-blue.svg?v=1) **WORK IN PROGRESS - NOT READY FOR USAGE - Want to help us improve this client SDK? Send a pull request to Appwrite [SDK generator repository](https://github.com/appwrite/sdk-generator).** diff --git a/app/sdks/python/appwrite/client.py b/app/sdks/python/appwrite/client.py index 0de0b4834..835c3ba01 100644 --- a/app/sdks/python/appwrite/client.py +++ b/app/sdks/python/appwrite/client.py @@ -4,7 +4,7 @@ import requests class Client: def __init__(self): self._self_signed = False - self._endpoint = 'https://https://appwrite.io/v1' + self._endpoint = 'https://appwrite.io/v1' self._global_headers = { 'content-type': '', 'x-sdk-version': 'appwrite:python:1.0.0', @@ -23,13 +23,13 @@ class Client: return self def set_project(self, value): - """Your Appwrite project ID. You can find your project ID in your Appwrite console project settings.""" + """Your Appwrite project ID""" self._global_headers['x-appwrite-project'] = value.lower() return self def set_key(self, value): - """Your Appwrite project secret key. You can can create a new API key from your Appwrite console API keys dashboard.""" + """Your Appwrite project secret key""" self._global_headers['x-appwrite-key'] = value.lower() return self diff --git a/app/sdks/python/appwrite/services/users.py b/app/sdks/python/appwrite/services/users.py index 33e26d7d5..abafb6aa1 100644 --- a/app/sdks/python/appwrite/services/users.py +++ b/app/sdks/python/appwrite/services/users.py @@ -58,6 +58,17 @@ class Users(Service): return self.client.call('get', path, { }, params) + def update_user_prefs(self, user_id, prefs): + """Update Account Prefs""" + + params = {} + path = '/users/{userId}/prefs' + path.replace('{userId}', user_id) + params['prefs'] = prefs + + return self.client.call('patch', path, { + }, params) + def get_user_sessions(self, user_id): """Get User Sessions""" @@ -78,7 +89,7 @@ class Users(Service): return self.client.call('delete', path, { }, params) - def delete_users_session(self, user_id, session_id): + def delete_user_session(self, user_id, session_id): """Delete User Session""" params = {} diff --git a/app/sdks/ruby/README.md b/app/sdks/ruby/README.md index 4124c7550..600f40a33 100644 --- a/app/sdks/ruby/README.md +++ b/app/sdks/ruby/README.md @@ -1,7 +1,7 @@ # Appwrite SDK for Ruby ![License](https://img.shields.io/github/license/appwrite/sdk-for-ruby.svg?v=1) -![Version](https://img.shields.io/badge/api%20version-latest-blue.svg?v=1) +![Version](https://img.shields.io/badge/api%20version-0.2.0-blue.svg?v=1) **WORK IN PROGRESS - NOT READY FOR USAGE - Want to help us improve this client SDK? Send a pull request to Appwrite [SDK generator repository](https://github.com/appwrite/sdk-generator).** diff --git a/app/sdks/ruby/lib/appwrite/services/users.rb b/app/sdks/ruby/lib/appwrite/services/users.rb index eed594d00..b2ffc4fd0 100644 --- a/app/sdks/ruby/lib/appwrite/services/users.rb +++ b/app/sdks/ruby/lib/appwrite/services/users.rb @@ -61,6 +61,18 @@ module Appwrite }, params); end + def update_user_prefs(user_id:, prefs:) + path = '/users/{userId}/prefs' + .gsub('{user_id}', user_id) + + params = { + 'prefs': prefs + } + + return @client.call('patch', path, { + }, params); + end + def get_user_sessions(user_id:) path = '/users/{userId}/sessions' .gsub('{user_id}', user_id) @@ -83,7 +95,7 @@ module Appwrite }, params); end - def delete_users_session(user_id:, session_id:) + def delete_user_session(user_id:, session_id:) path = '/users/{userId}/sessions/:session' .gsub('{user_id}', user_id) diff --git a/app/tasks/sdks.php b/app/tasks/sdks.php index 8f2cd6043..313b0fb77 100644 --- a/app/tasks/sdks.php +++ b/app/tasks/sdks.php @@ -45,16 +45,18 @@ $cli 'gitRepoName' => 'sdk-for-php', 'gitUserName' => 'appwrite', 'warning' => $warning, + 'readme' => false, 'platform' => 'server', ], 'js' => [ - 'version' => '1.0.22', + 'version' => '1.0.23', 'result' => __DIR__.'/../sdks/js/', 'gitURL' => 'https://github.com/appwrite/sdk-for-js.git', 'gitRepo' => 'git@github.com:appwrite/sdk-for-js.git', 'gitRepoName' => 'sdk-for-js', 'gitUserName' => 'appwrite', 'warning' => $warning, + 'readme' => realpath(__DIR__ . '/../../docs/sdks/js.md'), 'platform' => 'client', ], 'node' => [ @@ -65,6 +67,7 @@ $cli 'gitRepoName' => 'sdk-for-node', 'gitUserName' => 'appwrite', 'warning' => $warning, + 'readme' => false, 'platform' => 'server', ], 'python' => [ @@ -75,6 +78,7 @@ $cli 'gitRepoName' => 'sdk-for-python', 'gitUserName' => 'appwrite', 'warning' => '**WORK IN PROGRESS - NOT READY FOR USAGE - Want to help us improve this client SDK? Send a pull request to Appwrite [SDK generator repository](https://github.com/appwrite/sdk-generator).**', + 'readme' => false, 'platform' => 'server', ], 'ruby' => [ @@ -85,6 +89,7 @@ $cli 'gitRepoName' => 'sdk-for-ruby', 'gitUserName' => 'appwrite', 'warning' => '**WORK IN PROGRESS - NOT READY FOR USAGE - Want to help us improve this client SDK? Send a pull request to Appwrite [SDK generator repository](https://github.com/appwrite/sdk-generator).**', + 'readme' => false, 'platform' => 'server', ], 'dart' => [ @@ -95,6 +100,7 @@ $cli 'gitRepoName' => 'sdk-for-dart', 'gitUserName' => 'appwrite', 'warning' => '**WORK IN PROGRESS - NOT READY FOR USAGE - Want to help us improve this client SDK? Send a pull request to Appwrite [SDK generator repository](https://github.com/appwrite/sdk-generator).**', + 'readme' => false, 'platform' => 'client', ], ]; @@ -176,8 +182,8 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ->setShareURL('http://appwrite.io') ->setShareTags('JS,javascript,reactjs,angular,ios,android') ->setShareVia('appwrite_io') - //->setWarning('**WORK IN PROGRESS - NOT READY FOR USAGE**') ->setWarning($client['warning']) + ->setReadme(($client['readme'] && file_exists($client['readme'])) ? file_get_contents($client['readme']) : '') ; $target = __DIR__.'/../sdks/git/'.$name; diff --git a/app/views/console/account/index.phtml b/app/views/console/account/index.phtml index 6686cf5e5..25d67b62c 100644 --- a/app/views/console/account/index.phtml +++ b/app/views/console/account/index.phtml @@ -238,7 +238,7 @@ data-event="submit" data-success="trigger,redirect" data-success-param-trigger-events="session-delete" - data-success-redirect-url="/" + data-success-param-redirect-url="/" data-failure="alert" data-failure-param-alert-text="Logout from All Sessions Failed" data-failure-param-alert-classname="error"> diff --git a/app/views/home/auth/confirm.phtml b/app/views/home/auth/confirm.phtml index f7f43bb21..ddc9a1b81 100644 --- a/app/views/home/auth/confirm.phtml +++ b/app/views/home/auth/confirm.phtml @@ -6,7 +6,7 @@ data-param-token="{{router.params.token}}" data-param-user-id="{{router.params.userId}}" data-success="redirect,alert,trigger" - data-success-redirect-url="/console" + data-success-param-redirect-url="/console" data-success-alert="Confirmation Completed Successfully" data-success-triggers="account.update" data-failure="alert" diff --git a/app/views/home/auth/recovery/reset.phtml b/app/views/home/auth/recovery/reset.phtml index 6aa1897c9..bb039d011 100644 --- a/app/views/home/auth/recovery/reset.phtml +++ b/app/views/home/auth/recovery/reset.phtml @@ -13,8 +13,8 @@ data-scope="console" data-event="submit" data-success="alert,redirect" - data-success-alert="Password Reset Completed" - data-success-redirect-url="/auth/signin" + data-success-param-alert="Password Reset Completed" + data-success-param-url="/auth/signin" data-failure="alert" data-failure-param-alert-text="Password Reset Failed" data-failure-param-alert-classname="error"> diff --git a/app/views/home/auth/signup.phtml b/app/views/home/auth/signup.phtml index f0882531f..40caeeb55 100644 --- a/app/views/home/auth/signup.phtml +++ b/app/views/home/auth/signup.phtml @@ -13,7 +13,7 @@ data-event="submit" data-success="trigger,redirect" data-success-param-trigger-events="auth-register" - data-success-redirect-url="/console/setup" + data-success-param-redirect-url="/console/setup" data-failure="alert" data-failure-param-alert-text="Registration Failed. Please try again later" data-failure-param-alert-classname="error"> diff --git a/composer.lock b/composer.lock index 365bdd5a2..8412ef11f 100644 --- a/composer.lock +++ b/composer.lock @@ -12,12 +12,12 @@ "source": { "type": "git", "url": "https://github.com/appwrite/sdk-for-php.git", - "reference": "ab0fe8f5669e6a8fc7a8d5e8c711f939412fb33e" + "reference": "ac310ede83c8520c038fdab6e646322eb634d9e3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/appwrite/sdk-for-php/zipball/ab0fe8f5669e6a8fc7a8d5e8c711f939412fb33e", - "reference": "ab0fe8f5669e6a8fc7a8d5e8c711f939412fb33e", + "url": "https://api.github.com/repos/appwrite/sdk-for-php/zipball/ac310ede83c8520c038fdab6e646322eb634d9e3", + "reference": "ac310ede83c8520c038fdab6e646322eb634d9e3", "shasum": "" }, "require": { @@ -39,7 +39,7 @@ "BSD-3-Clause" ], "description": "Appwrite backend as a service cuts up to 70% of the time and costs required for building a modern application. We abstract and simplify common development tasks behind a REST APIs, to help you develop your app in a fast and secure way. For full API documentation and tutorials go to [https://appwrite.io/docs](https://appwrite.io/docs)", - "time": "2019-10-03T22:07:26+00:00" + "time": "2019-10-09T10:26:29+00:00" }, { "name": "appwrite/php-clamav", @@ -92,7 +92,7 @@ "source": { "type": "git", "url": "https://github.com/appwrite/sdk-generator", - "reference": "0ece44cf81c04ebb8784a60830b088238189ec78" + "reference": "45d82c2c53c38926a45c5e153aaa4794860954a0" }, "require": { "ext-curl": "*", @@ -122,7 +122,7 @@ } ], "description": "Appwrite PHP library for generating API SDKs for multiple programming languages and platforms", - "time": "2019-10-04 05:50:53" + "time": "2019-10-09 14:12:31" }, { "name": "bacon/bacon-qr-code", @@ -1440,12 +1440,12 @@ "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "4625774716e3737580e407a02e53ff4defd3cdfa" + "reference": "23419a940881f50525515726eec7507792ace5e0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/4625774716e3737580e407a02e53ff4defd3cdfa", - "reference": "4625774716e3737580e407a02e53ff4defd3cdfa", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/23419a940881f50525515726eec7507792ace5e0", + "reference": "23419a940881f50525515726eec7507792ace5e0", "shasum": "" }, "require": { @@ -1499,7 +1499,7 @@ "keywords": [ "templating" ], - "time": "2019-10-01T10:31:38+00:00" + "time": "2019-10-05T16:44:39+00:00" }, { "name": "utopia-php/abuse", @@ -2409,12 +2409,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff" + "reference": "36bdcb91de0484f77e256fd3d6119dcf7171c164" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/995192df77f63a59e47f025390d2d1fdf8f425ff", - "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/36bdcb91de0484f77e256fd3d6119dcf7171c164", + "reference": "36bdcb91de0484f77e256fd3d6119dcf7171c164", "shasum": "" }, "require": { @@ -2450,7 +2450,7 @@ "keywords": [ "tokenizer" ], - "time": "2019-09-17T06:23:10+00:00" + "time": "2019-10-05T05:20:56+00:00" }, { "name": "phpunit/phpunit", diff --git a/docker-compose.yml b/docker-compose.yml index fd9632f0a..34e7954ae 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -6,6 +6,7 @@ services: restart: unless-stopped volumes: - ./app:/usr/share/nginx/html/app + - ./docs:/usr/share/nginx/html/docs - ./public:/usr/share/nginx/html/public - ./src:/usr/share/nginx/html/src - ./vendor:/usr/share/nginx/html/vendor diff --git a/docs/examples/javascript/auth/login.md b/docs/examples/javascript/auth/login.md new file mode 100644 index 000000000..30d74d258 --- /dev/null +++ b/docs/examples/javascript/auth/login.md @@ -0,0 +1 @@ +test \ No newline at end of file diff --git a/docs/examples/javascript/auth/oauth.md b/docs/examples/javascript/auth/oauth.md new file mode 100644 index 000000000..4f67a836c --- /dev/null +++ b/docs/examples/javascript/auth/oauth.md @@ -0,0 +1 @@ +test 1 \ No newline at end of file diff --git a/docs/examples/javascript/auth/register.md b/docs/examples/javascript/auth/register.md new file mode 100644 index 000000000..81403e41b --- /dev/null +++ b/docs/examples/javascript/auth/register.md @@ -0,0 +1 @@ +test 2 \ No newline at end of file diff --git a/docs/references/users/delete-users-session.md b/docs/references/users/delete-user-session.md similarity index 100% rename from docs/references/users/delete-users-session.md rename to docs/references/users/delete-user-session.md diff --git a/docs/references/users/update-user-prefs.md b/docs/references/users/update-user-prefs.md new file mode 100644 index 000000000..b61a54c6a --- /dev/null +++ b/docs/references/users/update-user-prefs.md @@ -0,0 +1 @@ +Update user preferences by its unique ID. You can pass only the specific settings you wish to update. \ No newline at end of file diff --git a/docs/sdks/js.md b/docs/sdks/js.md new file mode 100644 index 000000000..8ab72889e --- /dev/null +++ b/docs/sdks/js.md @@ -0,0 +1,15 @@ +## Getting Started + +Initialise the Appwrite SDK in your code, and setup your API credentials: + +```js + +// Init your JS SDK +var appwrite = new Appwrite(); + +appwrite + .setEndpoint('http://localhost/v1') // Set only when using self-hosted solution + .setProject('455x34dfkj') // Your Appwrite Project UID +; + +``` diff --git a/docs/services/account.md b/docs/services/account.md index cecc3e239..54985c7de 100644 --- a/docs/services/account.md +++ b/docs/services/account.md @@ -1 +1,5 @@ -The account service allow you to fetch and update information related to the currently logged in user. You can also retrieve a list of all the user sessions across different devices and a security log with the account recent activity. \ No newline at end of file +The account service allows you to fetch and update information related to the currently logged-in user. You can use the service to retrieve a list of all the user sessions across different devices and a security log with the recent account activity. + +Using the account service, you can also allow the logged-in user to update his account name, email, or passwords. + +This service also exposes an endpoint to save and read [user preferences](/docs/account#updatePrefs) as a key-value object. This feature is handy if you want to allow extra customization in your app. Common usage for this feature may include saving the user preferred locale, timezone, or custom app theme. The usage of this feature is only limited only by your imagination. \ No newline at end of file diff --git a/docs/services/auth.md b/docs/services/auth.md index ea2f2bcb9..8e18022b2 100644 --- a/docs/services/auth.md +++ b/docs/services/auth.md @@ -1,3 +1,3 @@ -The authentication service allows you to verify users accounts using basic email and password login or with a supported OAuth provider. The auth service also exposes methods to confirm users email account and recover users forgotten passwords. +The authentication service allows you to verify users' accounts using basic email and password login or with a supported OAuth provider. The auth service also exposes methods to confirm users' email account and recover users forgotten passwords. -You can review our currently available OAuth providers from your project console under the **'users'** menu. \ No newline at end of file +You can review and enable our currently available OAuth providers from your project console under the **'users -> providers'** menu. \ No newline at end of file diff --git a/docs/services/avatars.md b/docs/services/avatars.md index a0475bce9..e0ed2ebbc 100644 --- a/docs/services/avatars.md +++ b/docs/services/avatars.md @@ -1 +1,5 @@ -The avatars service aims to help you complete common and recitative tasks related to your app images, icons and avatars. Using this service we hope to save you some precious time and help you focus on solving your app real challenges. \ No newline at end of file +The avatars service aims to help you complete everyday tasks related to your app images, icons, and avatars. Using this service, we hope to save you some precious time and help you focus on solving your real app challenges. + +The Avatars service allows you to fetch countries' flags, browser icons, payment methods logos, websites favicons, generate QR codes, and manipulate remote images URLs. + +All endpoints in this service allow you to resize, crop, and change the output image quality to best fit in your app both in terms of look and performance. \ No newline at end of file diff --git a/docs/services/database.md b/docs/services/database.md index 84a0aa1b0..30a0f314e 100644 --- a/docs/services/database.md +++ b/docs/services/database.md @@ -1,7 +1,5 @@ -The database service allows you to create structured document collections, query and filter lists of documents and manage an advanced set of read and write access. - +The database service allows you to create structured document collections, query and filter lists of documents, and manage an advanced set of read and write access. All the data in the database service is stored in JSON format. The service also allows you to nest child documents and use advanced filters to search and query the database just like you would with a classic graph database. - -By leveraging the database permission management you can assign read or write access to the database documents for a specific user, team, user role or even grant public access to all visitors of your project. You can learn more about [how Appwrite handles permissions and role access control](/docs/permissions). \ No newline at end of file +By leveraging the database permission management, you can assign read or write access to the database documents for a specific user, team, user role, or even grant public access to all visitors to your project. You can learn more about [how Appwrite handles permissions and role access control](/docs/permissions). \ No newline at end of file diff --git a/docs/services/locale.md b/docs/services/locale.md index 060d45bf2..12cde8b8c 100644 --- a/docs/services/locale.md +++ b/docs/services/locale.md @@ -1 +1,5 @@ -The locale service allow you customize your app based on your user location. Get your user location, IP address, list of countries names, phone codes, currencies and more. This product includes GeoLite2 data created by MaxMind, available from [https://www.maxmind.com](https://www.maxmind.com). \ No newline at end of file +The locale service allows you to customize your app based on your users' location. Using this service, you can get your users' location, IP address, list of countries and continents names, phone codes, currencies, and more. + +The user service supports multiple locales. This feature allows you to fetch countries and continents information in your app language. To switch locales, all you need to do is pass the 'X-Appwrite-Locale' header or set the 'setLocale' method using any of our available SDKs. [View here the list of available locales](https://github.com/appwrite/appwrite/blob/master/app/init.php#L13). + +This product includes GeoLite2 data created by MaxMind, available from [https://www.maxmind.com](https://www.maxmind.com). \ No newline at end of file diff --git a/docs/services/storage.md b/docs/services/storage.md index 77253b4ee..822715463 100644 --- a/docs/services/storage.md +++ b/docs/services/storage.md @@ -2,4 +2,4 @@ The storage service allows you to manage your project files. You can upload, vie Each file is granted read and write permissions to manage who has access to view or manage it. You can also learn more about how to manage your [resources permissions](/docs/permissions). - You can also use the storage file preview endpoint to show the app users preview images of your files. The preview endpoint also allows you to manipulate the resulting image, so it will fit perfectly inside your app. \ No newline at end of file + You can also use the storage service file preview endpoint to show the app users' preview images of your files. The preview endpoint also allows you to manipulate the resulting image so that it will fit perfectly inside your app in terms of size and style. \ No newline at end of file diff --git a/docs/services/teams.md b/docs/services/teams.md index a074be96e..729975a02 100644 --- a/docs/services/teams.md +++ b/docs/services/teams.md @@ -1,3 +1,3 @@ -The teams' service allows you to group together users of your project and allow them to share read and write access to your project resources, such as, database documents or storage files. +The teams' service allows you to group users of your project and will enable them to share read and write access to your project resources, such as database documents or storage files. -Each user who creates a team becomes the team owner and can delegate the ownership role by inviting a new team member. Only team owners can invite new users to the team. \ No newline at end of file +Each user who creates a team becomes the team owner and can delegate the ownership role by inviting a new team member. Only team owners can invite new users to their team. \ No newline at end of file diff --git a/docs/services/users.md b/docs/services/users.md index b1d24362c..c3dba6dbe 100644 --- a/docs/services/users.md +++ b/docs/services/users.md @@ -1 +1 @@ -The users' service allows you to to manage your users in admin mode, you can search, block and view your users' current sessions and latest activity. \ No newline at end of file +The users' service allows you to manage your users in admin mode (AKA server-side integration). Use this service to search, block, and view your Users info, current sessions, and latest activities. You can also use the Users service to edit your users' preferences and personal info. \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 081a3b7fd..c3b9685a2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -834,9 +834,9 @@ } }, "appwrite": { - "version": "1.0.22", - "resolved": "https://registry.npmjs.org/appwrite/-/appwrite-1.0.22.tgz", - "integrity": "sha512-ofwb9opdkoY+AV8W2AkZY1z7gAqRlBZhbFj4ZMC9+UYhRAtLfaGnuyfRaWIKMFt7DII2Or261newdlwL/R2NsQ==", + "version": "1.0.23", + "resolved": "https://registry.npmjs.org/appwrite/-/appwrite-1.0.23.tgz", + "integrity": "sha512-L1kLLkrjy0xPOd3lgjN+ZWDbzCLXNaGIWaijypv9ty7Rzu+gkktKPfQ6mp4TdBOubQoOTvTveZd+7DiMRUXrXQ==", "dev": true }, "archy": { diff --git a/package.json b/package.json index d106d2ce2..29308a8b4 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "license": "BSD-3-Clause", "repository": "public", "devDependencies": { - "appwrite": "^1.0.22", + "appwrite": "^1.0.23", "gulp": "^4.0.0", "gulp-clean-css": "^4.0.0", "gulp-concat": "2.5.2", diff --git a/public/dist/scripts/app-all.js b/public/dist/scripts/app-all.js index 6cb864f00..058fc3d18 100644 --- a/public/dist/scripts/app-all.js +++ b/public/dist/scripts/app-all.js @@ -1,11 +1,11 @@ -(function(window){window.Appwrite=function(){let config={endpoint:'https://appwrite.test/v1',project:'',key:'',locale:'',mode:'',};let setEndpoint=function(endpoint){config.endpoint=endpoint;return this;};let setProject=function(value) +(function(window){'use strict';window.Appwrite=function(){let config={endpoint:'https://appwrite.io/v1',project:'',key:'',locale:'',mode:'',};let setEndpoint=function(endpoint){config.endpoint=endpoint;return this;};let setProject=function(value) {http.addGlobalHeader('X-Appwrite-Project',value);config.project=value;return this;};let setKey=function(value) {http.addGlobalHeader('X-Appwrite-Key',value);config.key=value;return this;};let setLocale=function(value) {http.addGlobalHeader('X-Appwrite-Locale',value);config.locale=value;return this;};let setMode=function(value) {http.addGlobalHeader('X-Appwrite-Mode',value);config.mode=value;return this;};let http=function(document){let globalParams=[],globalHeaders=[];let addParam=function(url,param,value){let a=document.createElement('a'),regex=/(?:\?|&|&)+([^=]+)(?:=([^&]*))*/g;let match,str=[];a.href=url;param=encodeURIComponent(param);while(match=regex.exec(a.search))if(param!==match[1])str.push(match[1]+(match[2]?"="+match[2]:""));str.push(param+(value?"="+encodeURIComponent(value):""));a.search=str.join("&");return a.href;};let buildQuery=function(params){let str=[];for(let p in params){if(Array.isArray(params[p])){for(let index=0;index=request.status){let data=request.response;let contentType=this.getResponseHeader('content-type')||'';contentType=contentType.substring(0,contentType.indexOf(';'));switch(contentType){case'application/json':data=JSON.parse(data);break;} resolve(data);}else{reject(new Error(request.statusText));}};if(progress){request.addEventListener('progress',progress);request.upload.addEventListener('progress',progress,false);} request.onerror=function(){reject(new Error("Network Error"));};request.send(params);})};return{'get':function(path,headers={},params={}){return call('GET',path+((Object.keys(params).length>0)?'?'+buildQuery(params):''),headers,{});},'post':function(path,headers={},params={},progress=null){return call('POST',path,headers,params,progress);},'put':function(path,headers={},params={},progress=null){return call('PUT',path,headers,params,progress);},'patch':function(path,headers={},params={},progress=null){return call('PATCH',path,headers,params,progress);},'delete':function(path,headers={},params={},progress=null){return call('DELETE',path,headers,params,progress);},'addGlobalParam':addGlobalParam,'addGlobalHeader':addGlobalHeader}}(window.document);let iframe=function(method,url,params){let form=document.createElement('form');form.setAttribute('method',method);form.setAttribute('action',config.endpoint+url);for(let key in params){if(params.hasOwnProperty(key)){let hiddenField=document.createElement("input");hiddenField.setAttribute("type","hidden");hiddenField.setAttribute("name",key);hiddenField.setAttribute("value",params[key]);form.appendChild(hiddenField);}} -document.body.appendChild(form);return form.submit();};let account={get:function(){let path='/account';return http.get(path,{'content-type':'application/json'},{});},delete:function(){let path='/account';return http.delete(path,{'content-type':'application/json'},{});},updateEmail:function(email,password){if(email===undefined){throw new Error('Missing required parameter: "email"');} +document.body.appendChild(form);return form.submit();};let account={get:function(){let path='/account';let payload={};return http.get(path,{'content-type':'application/json'},payload);},delete:function(){let path='/account';let payload={};return http.delete(path,{'content-type':'application/json'},payload);},updateEmail:function(email,password){if(email===undefined){throw new Error('Missing required parameter: "email"');} if(password===undefined){throw new Error('Missing required parameter: "password"');} -let path='/account/email';return http.patch(path,{'content-type':'application/json'},{'email':email,'password':password});},updateName:function(name){if(name===undefined){throw new Error('Missing required parameter: "name"');} -let path='/account/name';return http.patch(path,{'content-type':'application/json'},{'name':name});},updatePassword:function(password,oldPassword){if(password===undefined){throw new Error('Missing required parameter: "password"');} +let path='/account/email';let payload={};if(email){payload['email']=email;} +if(password){payload['password']=password;} +return http.patch(path,{'content-type':'application/json'},payload);},updateName:function(name){if(name===undefined){throw new Error('Missing required parameter: "name"');} +let path='/account/name';let payload={};if(name){payload['name']=name;} +return http.patch(path,{'content-type':'application/json'},payload);},updatePassword:function(password,oldPassword){if(password===undefined){throw new Error('Missing required parameter: "password"');} if(oldPassword===undefined){throw new Error('Missing required parameter: "oldPassword"');} -let path='/account/password';return http.patch(path,{'content-type':'application/json'},{'password':password,'old-password':oldPassword});},getPrefs:function(){let path='/account/prefs';return http.get(path,{'content-type':'application/json'},{});},updatePrefs:function(prefs){if(prefs===undefined){throw new Error('Missing required parameter: "prefs"');} -let path='/account/prefs';return http.patch(path,{'content-type':'application/json'},{'prefs':prefs});},getSecurity:function(){let path='/account/security';return http.get(path,{'content-type':'application/json'},{});},getSessions:function(){let path='/account/sessions';return http.get(path,{'content-type':'application/json'},{});}};let auth={login:function(email,password,success,failure){if(email===undefined){throw new Error('Missing required parameter: "email"');} +let path='/account/password';let payload={};if(password){payload['password']=password;} +if(oldPassword){payload['old-password']=oldPassword;} +return http.patch(path,{'content-type':'application/json'},payload);},getPrefs:function(){let path='/account/prefs';let payload={};return http.get(path,{'content-type':'application/json'},payload);},updatePrefs:function(prefs){if(prefs===undefined){throw new Error('Missing required parameter: "prefs"');} +let path='/account/prefs';let payload={};if(prefs){payload['prefs']=prefs;} +return http.patch(path,{'content-type':'application/json'},payload);},getSecurity:function(){let path='/account/security';let payload={};return http.get(path,{'content-type':'application/json'},payload);},getSessions:function(){let path='/account/sessions';let payload={};return http.get(path,{'content-type':'application/json'},payload);}};let auth={login:function(email,password,success,failure){if(email===undefined){throw new Error('Missing required parameter: "email"');} if(password===undefined){throw new Error('Missing required parameter: "password"');} if(success===undefined){throw new Error('Missing required parameter: "success"');} if(failure===undefined){throw new Error('Missing required parameter: "failure"');} -let path='/auth/login';return iframe('post',path,{project:config.project,'email':email,'password':password,'success':success,'failure':failure});},logout:function(){let path='/auth/logout';return http.delete(path,{'content-type':'application/json'},{});},logoutBySession:function(id){if(id===undefined){throw new Error('Missing required parameter: "id"');} -let path='/auth/logout/{id}'.replace(new RegExp('{id}','g'),id);return http.delete(path,{'content-type':'application/json'},{});},oauthCallback:function(projectId,provider,code,state=''){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} -if(provider===undefined){throw new Error('Missing required parameter: "provider"');} -if(code===undefined){throw new Error('Missing required parameter: "code"');} -let path='/auth/oauth/callback/{provider}/{projectId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{provider}','g'),provider);return http.get(path,{'content-type':'application/json'},{'code':code,'state':state});},oauth:function(provider,success='',failure=''){if(provider===undefined){throw new Error('Missing required parameter: "provider"');} -let path='/auth/oauth/{provider}'.replace(new RegExp('{provider}','g'),provider);return http.get(path,{'content-type':'application/json'},{'success':success,'failure':failure});},recovery:function(email,redirect){if(email===undefined){throw new Error('Missing required parameter: "email"');} -if(redirect===undefined){throw new Error('Missing required parameter: "redirect"');} -let path='/auth/recovery';return http.post(path,{'content-type':'application/json'},{'email':email,'redirect':redirect});},recoveryReset:function(userId,token,passwordA,passwordB){if(userId===undefined){throw new Error('Missing required parameter: "userId"');} +let path='/auth/login';let payload={};if(email){payload['email']=email;} +if(password){payload['password']=password;} +if(success){payload['success']=success;} +if(failure){payload['failure']=failure;} +return http.post(path,{'content-type':'application/json'},payload);},logout:function(){let path='/auth/logout';let payload={};return http.delete(path,{'content-type':'application/json'},payload);},logoutBySession:function(id){if(id===undefined){throw new Error('Missing required parameter: "id"');} +let path='/auth/logout/{id}'.replace(new RegExp('{id}','g'),id);let payload={};return http.delete(path,{'content-type':'application/json'},payload);},oauth:function(provider,success='',failure=''){if(provider===undefined){throw new Error('Missing required parameter: "provider"');} +let path='/auth/oauth/{provider}'.replace(new RegExp('{provider}','g'),provider);let payload={};if(success){payload['success']=success;} +if(failure){payload['failure']=failure;} +return http.get(path,{'content-type':'application/json'},payload);},recovery:function(email,reset){if(email===undefined){throw new Error('Missing required parameter: "email"');} +if(reset===undefined){throw new Error('Missing required parameter: "reset"');} +let path='/auth/recovery';let payload={};if(email){payload['email']=email;} +if(reset){payload['reset']=reset;} +return http.post(path,{'content-type':'application/json'},payload);},recoveryReset:function(userId,token,passwordA,passwordB){if(userId===undefined){throw new Error('Missing required parameter: "userId"');} if(token===undefined){throw new Error('Missing required parameter: "token"');} if(passwordA===undefined){throw new Error('Missing required parameter: "passwordA"');} if(passwordB===undefined){throw new Error('Missing required parameter: "passwordB"');} -let path='/auth/recovery/reset';return http.put(path,{'content-type':'application/json'},{'userId':userId,'token':token,'password-a':passwordA,'password-b':passwordB});},register:function(email,password,confirm,success,failure,name=''){if(email===undefined){throw new Error('Missing required parameter: "email"');} +let path='/auth/recovery/reset';let payload={};if(userId){payload['userId']=userId;} +if(token){payload['token']=token;} +if(passwordA){payload['password-a']=passwordA;} +if(passwordB){payload['password-b']=passwordB;} +return http.put(path,{'content-type':'application/json'},payload);},register:function(email,password,confirm,success='',failure='',name=''){if(email===undefined){throw new Error('Missing required parameter: "email"');} if(password===undefined){throw new Error('Missing required parameter: "password"');} if(confirm===undefined){throw new Error('Missing required parameter: "confirm"');} -if(success===undefined){throw new Error('Missing required parameter: "success"');} -if(failure===undefined){throw new Error('Missing required parameter: "failure"');} -let path='/auth/register';return iframe('post',path,{project:config.project,'email':email,'password':password,'confirm':confirm,'success':success,'failure':failure,'name':name});},confirm:function(userId,token){if(userId===undefined){throw new Error('Missing required parameter: "userId"');} +let path='/auth/register';let payload={};if(email){payload['email']=email;} +if(password){payload['password']=password;} +if(confirm){payload['confirm']=confirm;} +if(success){payload['success']=success;} +if(failure){payload['failure']=failure;} +if(name){payload['name']=name;} +return http.post(path,{'content-type':'application/json'},payload);},confirm:function(userId,token){if(userId===undefined){throw new Error('Missing required parameter: "userId"');} if(token===undefined){throw new Error('Missing required parameter: "token"');} -let path='/auth/register/confirm';return http.post(path,{'content-type':'application/json'},{'userId':userId,'token':token});},confirmResend:function(confirm){if(confirm===undefined){throw new Error('Missing required parameter: "confirm"');} -let path='/auth/register/confirm/resend';return http.post(path,{'content-type':'application/json'},{'confirm':confirm});}};let avatars={getBrowser:function(code,width=100,height=100,quality=100){if(code===undefined){throw new Error('Missing required parameter: "code"');} -let path='/avatars/browsers/{code}'.replace(new RegExp('{code}','g'),code);return http.get(path,{'content-type':'application/json'},{'width':width,'height':height,'quality':quality});},getCreditCard:function(code,width=100,height=100,quality=100){if(code===undefined){throw new Error('Missing required parameter: "code"');} -let path='/avatars/credit-cards/{code}'.replace(new RegExp('{code}','g'),code);return http.get(path,{'content-type':'application/json'},{'width':width,'height':height,'quality':quality});},getFavicon:function(url){if(url===undefined){throw new Error('Missing required parameter: "url"');} -let path='/avatars/favicon';return http.get(path,{'content-type':'application/json'},{'url':url});},getFlag:function(code,width=100,height=100,quality=100){if(code===undefined){throw new Error('Missing required parameter: "code"');} -let path='/avatars/flags/{code}'.replace(new RegExp('{code}','g'),code);return http.get(path,{'content-type':'application/json'},{'width':width,'height':height,'quality':quality});},getImage:function(url,width=400,height=400){if(url===undefined){throw new Error('Missing required parameter: "url"');} -let path='/avatars/image';return http.get(path,{'content-type':'application/json'},{'url':url,'width':width,'height':height});},getQR:function(text,size=400,margin=1,download=0){if(text===undefined){throw new Error('Missing required parameter: "text"');} -let path='/avatars/qr';return http.get(path,{'content-type':'application/json'},{'text':text,'size':size,'margin':margin,'download':download});}};let database={listCollections:function(search='',limit=25,offset=0,orderType='ASC'){let path='/database';return http.get(path,{'content-type':'application/json'},{'search':search,'limit':limit,'offset':offset,'orderType':orderType});},createCollection:function(name,read=[],write=[],rules=[]){if(name===undefined){throw new Error('Missing required parameter: "name"');} -let path='/database';return http.post(path,{'content-type':'application/json'},{'name':name,'read':read,'write':write,'rules':rules});},getCollection:function(collectionId){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"');} -let path='/database/{collectionId}'.replace(new RegExp('{collectionId}','g'),collectionId);return http.get(path,{'content-type':'application/json'},{});},updateCollection:function(collectionId,name,read=[],write=[],rules=[]){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"');} +let path='/auth/register/confirm';let payload={};if(userId){payload['userId']=userId;} +if(token){payload['token']=token;} +return http.post(path,{'content-type':'application/json'},payload);},confirmResend:function(confirm){if(confirm===undefined){throw new Error('Missing required parameter: "confirm"');} +let path='/auth/register/confirm/resend';let payload={};if(confirm){payload['confirm']=confirm;} +return http.post(path,{'content-type':'application/json'},payload);}};let avatars={getBrowser:function(code,width=100,height=100,quality=100){if(code===undefined){throw new Error('Missing required parameter: "code"');} +let path='/avatars/browsers/{code}'.replace(new RegExp('{code}','g'),code);let payload={};if(width){payload['width']=width;} +if(height){payload['height']=height;} +if(quality){payload['quality']=quality;} +return http.get(path,{'content-type':'application/json'},payload);},getCreditCard:function(code,width=100,height=100,quality=100){if(code===undefined){throw new Error('Missing required parameter: "code"');} +let path='/avatars/credit-cards/{code}'.replace(new RegExp('{code}','g'),code);let payload={};if(width){payload['width']=width;} +if(height){payload['height']=height;} +if(quality){payload['quality']=quality;} +return http.get(path,{'content-type':'application/json'},payload);},getFavicon:function(url){if(url===undefined){throw new Error('Missing required parameter: "url"');} +let path='/avatars/favicon';let payload={};if(url){payload['url']=url;} +return http.get(path,{'content-type':'application/json'},payload);},getFlag:function(code,width=100,height=100,quality=100){if(code===undefined){throw new Error('Missing required parameter: "code"');} +let path='/avatars/flags/{code}'.replace(new RegExp('{code}','g'),code);let payload={};if(width){payload['width']=width;} +if(height){payload['height']=height;} +if(quality){payload['quality']=quality;} +return http.get(path,{'content-type':'application/json'},payload);},getImage:function(url,width=400,height=400){if(url===undefined){throw new Error('Missing required parameter: "url"');} +let path='/avatars/image';let payload={};if(url){payload['url']=url;} +if(width){payload['width']=width;} +if(height){payload['height']=height;} +return http.get(path,{'content-type':'application/json'},payload);},getQR:function(text,size=400,margin=1,download=0){if(text===undefined){throw new Error('Missing required parameter: "text"');} +let path='/avatars/qr';let payload={};if(text){payload['text']=text;} +if(size){payload['size']=size;} +if(margin){payload['margin']=margin;} +if(download){payload['download']=download;} +return http.get(path,{'content-type':'application/json'},payload);}};let database={listCollections:function(search='',limit=25,offset=0,orderType='ASC'){let path='/database';let payload={};if(search){payload['search']=search;} +if(limit){payload['limit']=limit;} +if(offset){payload['offset']=offset;} +if(orderType){payload['orderType']=orderType;} +return http.get(path,{'content-type':'application/json'},payload);},createCollection:function(name,read=[],write=[],rules=[]){if(name===undefined){throw new Error('Missing required parameter: "name"');} +let path='/database';let payload={};if(name){payload['name']=name;} +if(read){payload['read']=read;} +if(write){payload['write']=write;} +if(rules){payload['rules']=rules;} +return http.post(path,{'content-type':'application/json'},payload);},getCollection:function(collectionId){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"');} +let path='/database/{collectionId}'.replace(new RegExp('{collectionId}','g'),collectionId);let payload={};return http.get(path,{'content-type':'application/json'},payload);},updateCollection:function(collectionId,name,read=[],write=[],rules=[]){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"');} if(name===undefined){throw new Error('Missing required parameter: "name"');} -let path='/database/{collectionId}'.replace(new RegExp('{collectionId}','g'),collectionId);return http.put(path,{'content-type':'application/json'},{'name':name,'read':read,'write':write,'rules':rules});},deleteCollection:function(collectionId){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"');} -let path='/database/{collectionId}'.replace(new RegExp('{collectionId}','g'),collectionId);return http.delete(path,{'content-type':'application/json'},{});},listDocuments:function(collectionId,filters=[],offset=0,limit=50,orderField='$uid',orderType='ASC',orderCast='string',search='',first=0,last=0){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"');} -let path='/database/{collectionId}/documents'.replace(new RegExp('{collectionId}','g'),collectionId);return http.get(path,{'content-type':'application/json'},{'filters':filters,'offset':offset,'limit':limit,'order-field':orderField,'order-type':orderType,'order-cast':orderCast,'search':search,'first':first,'last':last});},createDocument:function(collectionId,data,read=[],write=[],parentDocument='',parentProperty='',parentPropertyType='assign'){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"');} +let path='/database/{collectionId}'.replace(new RegExp('{collectionId}','g'),collectionId);let payload={};if(name){payload['name']=name;} +if(read){payload['read']=read;} +if(write){payload['write']=write;} +if(rules){payload['rules']=rules;} +return http.put(path,{'content-type':'application/json'},payload);},deleteCollection:function(collectionId){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"');} +let path='/database/{collectionId}'.replace(new RegExp('{collectionId}','g'),collectionId);let payload={};return http.delete(path,{'content-type':'application/json'},payload);},listDocuments:function(collectionId,filters=[],offset=0,limit=50,orderField='$uid',orderType='ASC',orderCast='string',search='',first=0,last=0){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"');} +let path='/database/{collectionId}/documents'.replace(new RegExp('{collectionId}','g'),collectionId);let payload={};if(filters){payload['filters']=filters;} +if(offset){payload['offset']=offset;} +if(limit){payload['limit']=limit;} +if(orderField){payload['order-field']=orderField;} +if(orderType){payload['order-type']=orderType;} +if(orderCast){payload['order-cast']=orderCast;} +if(search){payload['search']=search;} +if(first){payload['first']=first;} +if(last){payload['last']=last;} +return http.get(path,{'content-type':'application/json'},payload);},createDocument:function(collectionId,data,read=[],write=[],parentDocument='',parentProperty='',parentPropertyType='assign'){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"');} if(data===undefined){throw new Error('Missing required parameter: "data"');} -let path='/database/{collectionId}/documents'.replace(new RegExp('{collectionId}','g'),collectionId);return http.post(path,{'content-type':'application/json'},{'data':data,'read':read,'write':write,'parentDocument':parentDocument,'parentProperty':parentProperty,'parentPropertyType':parentPropertyType});},getDocument:function(collectionId,documentId){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"');} +let path='/database/{collectionId}/documents'.replace(new RegExp('{collectionId}','g'),collectionId);let payload={};if(data){payload['data']=data;} +if(read){payload['read']=read;} +if(write){payload['write']=write;} +if(parentDocument){payload['parentDocument']=parentDocument;} +if(parentProperty){payload['parentProperty']=parentProperty;} +if(parentPropertyType){payload['parentPropertyType']=parentPropertyType;} +return http.post(path,{'content-type':'application/json'},payload);},getDocument:function(collectionId,documentId){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"');} if(documentId===undefined){throw new Error('Missing required parameter: "documentId"');} -let path='/database/{collectionId}/documents/{documentId}'.replace(new RegExp('{collectionId}','g'),collectionId).replace(new RegExp('{documentId}','g'),documentId);return http.get(path,{'content-type':'application/json'},{});},updateDocument:function(collectionId,documentId,data,read=[],write=[]){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"');} +let path='/database/{collectionId}/documents/{documentId}'.replace(new RegExp('{collectionId}','g'),collectionId).replace(new RegExp('{documentId}','g'),documentId);let payload={};return http.get(path,{'content-type':'application/json'},payload);},updateDocument:function(collectionId,documentId,data,read=[],write=[]){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"');} if(documentId===undefined){throw new Error('Missing required parameter: "documentId"');} if(data===undefined){throw new Error('Missing required parameter: "data"');} -let path='/database/{collectionId}/documents/{documentId}'.replace(new RegExp('{collectionId}','g'),collectionId).replace(new RegExp('{documentId}','g'),documentId);return http.patch(path,{'content-type':'application/json'},{'data':data,'read':read,'write':write});},deleteDocument:function(collectionId,documentId){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"');} +let path='/database/{collectionId}/documents/{documentId}'.replace(new RegExp('{collectionId}','g'),collectionId).replace(new RegExp('{documentId}','g'),documentId);let payload={};if(data){payload['data']=data;} +if(read){payload['read']=read;} +if(write){payload['write']=write;} +return http.patch(path,{'content-type':'application/json'},payload);},deleteDocument:function(collectionId,documentId){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"');} if(documentId===undefined){throw new Error('Missing required parameter: "documentId"');} -let path='/database/{collectionId}/documents/{documentId}'.replace(new RegExp('{collectionId}','g'),collectionId).replace(new RegExp('{documentId}','g'),documentId);return http.delete(path,{'content-type':'application/json'},{});}};let locale={getLocale:function(){let path='/locale';return http.get(path,{'content-type':'application/json'},{});},getCountries:function(){let path='/locale/countries';return http.get(path,{'content-type':'application/json'},{});},getCountriesEU:function(){let path='/locale/countries/eu';return http.get(path,{'content-type':'application/json'},{});},getCountriesPhones:function(){let path='/locale/countries/phones';return http.get(path,{'content-type':'application/json'},{});},getCurrencies:function(){let path='/locale/currencies';return http.get(path,{'content-type':'application/json'},{});}};let projects={listProjects:function(){let path='/projects';return http.get(path,{'content-type':'application/json'},{});},createProject:function(name,teamId,description='',logo='',url='',legalName='',legalCountry='',legalState='',legalCity='',legalAddress='',legalTaxId=''){if(name===undefined){throw new Error('Missing required parameter: "name"');} +let path='/database/{collectionId}/documents/{documentId}'.replace(new RegExp('{collectionId}','g'),collectionId).replace(new RegExp('{documentId}','g'),documentId);let payload={};return http.delete(path,{'content-type':'application/json'},payload);}};let locale={getLocale:function(){let path='/locale';let payload={};return http.get(path,{'content-type':'application/json'},payload);},getCountries:function(){let path='/locale/countries';let payload={};return http.get(path,{'content-type':'application/json'},payload);},getCountriesEU:function(){let path='/locale/countries/eu';let payload={};return http.get(path,{'content-type':'application/json'},payload);},getCountriesPhones:function(){let path='/locale/countries/phones';let payload={};return http.get(path,{'content-type':'application/json'},payload);},getCurrencies:function(){let path='/locale/currencies';let payload={};return http.get(path,{'content-type':'application/json'},payload);}};let projects={listProjects:function(){let path='/projects';let payload={};return http.get(path,{'content-type':'application/json'},payload);},createProject:function(name,teamId,description='',logo='',url='',legalName='',legalCountry='',legalState='',legalCity='',legalAddress='',legalTaxId=''){if(name===undefined){throw new Error('Missing required parameter: "name"');} if(teamId===undefined){throw new Error('Missing required parameter: "teamId"');} -let path='/projects';return http.post(path,{'content-type':'application/json'},{'name':name,'teamId':teamId,'description':description,'logo':logo,'url':url,'legalName':legalName,'legalCountry':legalCountry,'legalState':legalState,'legalCity':legalCity,'legalAddress':legalAddress,'legalTaxId':legalTaxId});},getProject:function(projectId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} -let path='/projects/{projectId}'.replace(new RegExp('{projectId}','g'),projectId);return http.get(path,{'content-type':'application/json'},{});},updateProject:function(projectId,name,description='',logo='',url='',legalName='',legalCountry='',legalState='',legalCity='',legalAddress='',legalTaxId=''){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} +let path='/projects';let payload={};if(name){payload['name']=name;} +if(teamId){payload['teamId']=teamId;} +if(description){payload['description']=description;} +if(logo){payload['logo']=logo;} +if(url){payload['url']=url;} +if(legalName){payload['legalName']=legalName;} +if(legalCountry){payload['legalCountry']=legalCountry;} +if(legalState){payload['legalState']=legalState;} +if(legalCity){payload['legalCity']=legalCity;} +if(legalAddress){payload['legalAddress']=legalAddress;} +if(legalTaxId){payload['legalTaxId']=legalTaxId;} +return http.post(path,{'content-type':'application/json'},payload);},getProject:function(projectId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} +let path='/projects/{projectId}'.replace(new RegExp('{projectId}','g'),projectId);let payload={};return http.get(path,{'content-type':'application/json'},payload);},updateProject:function(projectId,name,description='',logo='',url='',legalName='',legalCountry='',legalState='',legalCity='',legalAddress='',legalTaxId=''){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} if(name===undefined){throw new Error('Missing required parameter: "name"');} -let path='/projects/{projectId}'.replace(new RegExp('{projectId}','g'),projectId);return http.patch(path,{'content-type':'application/json'},{'name':name,'description':description,'logo':logo,'url':url,'legalName':legalName,'legalCountry':legalCountry,'legalState':legalState,'legalCity':legalCity,'legalAddress':legalAddress,'legalTaxId':legalTaxId});},deleteProject:function(projectId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} -let path='/projects/{projectId}'.replace(new RegExp('{projectId}','g'),projectId);return http.delete(path,{'content-type':'application/json'},{});},listKeys:function(projectId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} -let path='/projects/{projectId}/keys'.replace(new RegExp('{projectId}','g'),projectId);return http.get(path,{'content-type':'application/json'},{});},createKey:function(projectId,name,scopes){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} +let path='/projects/{projectId}'.replace(new RegExp('{projectId}','g'),projectId);let payload={};if(name){payload['name']=name;} +if(description){payload['description']=description;} +if(logo){payload['logo']=logo;} +if(url){payload['url']=url;} +if(legalName){payload['legalName']=legalName;} +if(legalCountry){payload['legalCountry']=legalCountry;} +if(legalState){payload['legalState']=legalState;} +if(legalCity){payload['legalCity']=legalCity;} +if(legalAddress){payload['legalAddress']=legalAddress;} +if(legalTaxId){payload['legalTaxId']=legalTaxId;} +return http.patch(path,{'content-type':'application/json'},payload);},deleteProject:function(projectId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} +let path='/projects/{projectId}'.replace(new RegExp('{projectId}','g'),projectId);let payload={};return http.delete(path,{'content-type':'application/json'},payload);},listKeys:function(projectId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} +let path='/projects/{projectId}/keys'.replace(new RegExp('{projectId}','g'),projectId);let payload={};return http.get(path,{'content-type':'application/json'},payload);},createKey:function(projectId,name,scopes){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} if(name===undefined){throw new Error('Missing required parameter: "name"');} if(scopes===undefined){throw new Error('Missing required parameter: "scopes"');} -let path='/projects/{projectId}/keys'.replace(new RegExp('{projectId}','g'),projectId);return http.post(path,{'content-type':'application/json'},{'name':name,'scopes':scopes});},getKey:function(projectId,keyId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} +let path='/projects/{projectId}/keys'.replace(new RegExp('{projectId}','g'),projectId);let payload={};if(name){payload['name']=name;} +if(scopes){payload['scopes']=scopes;} +return http.post(path,{'content-type':'application/json'},payload);},getKey:function(projectId,keyId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} if(keyId===undefined){throw new Error('Missing required parameter: "keyId"');} -let path='/projects/{projectId}/keys/{keyId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{keyId}','g'),keyId);return http.get(path,{'content-type':'application/json'},{});},updateKey:function(projectId,keyId,name,scopes){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} +let path='/projects/{projectId}/keys/{keyId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{keyId}','g'),keyId);let payload={};return http.get(path,{'content-type':'application/json'},payload);},updateKey:function(projectId,keyId,name,scopes){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} if(keyId===undefined){throw new Error('Missing required parameter: "keyId"');} if(name===undefined){throw new Error('Missing required parameter: "name"');} if(scopes===undefined){throw new Error('Missing required parameter: "scopes"');} -let path='/projects/{projectId}/keys/{keyId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{keyId}','g'),keyId);return http.put(path,{'content-type':'application/json'},{'name':name,'scopes':scopes});},deleteKey:function(projectId,keyId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} +let path='/projects/{projectId}/keys/{keyId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{keyId}','g'),keyId);let payload={};if(name){payload['name']=name;} +if(scopes){payload['scopes']=scopes;} +return http.put(path,{'content-type':'application/json'},payload);},deleteKey:function(projectId,keyId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} if(keyId===undefined){throw new Error('Missing required parameter: "keyId"');} -let path='/projects/{projectId}/keys/{keyId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{keyId}','g'),keyId);return http.delete(path,{'content-type':'application/json'},{});},updateProjectOAuth:function(projectId,provider,appId='',secret=''){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} +let path='/projects/{projectId}/keys/{keyId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{keyId}','g'),keyId);let payload={};return http.delete(path,{'content-type':'application/json'},payload);},updateProjectOAuth:function(projectId,provider,appId='',secret=''){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} if(provider===undefined){throw new Error('Missing required parameter: "provider"');} -let path='/projects/{projectId}/oauth'.replace(new RegExp('{projectId}','g'),projectId);return http.patch(path,{'content-type':'application/json'},{'provider':provider,'appId':appId,'secret':secret});},listPlatforms:function(projectId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} -let path='/projects/{projectId}/platforms'.replace(new RegExp('{projectId}','g'),projectId);return http.get(path,{'content-type':'application/json'},{});},createPlatform:function(projectId,type,name,key='',store='',url=''){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} +let path='/projects/{projectId}/oauth'.replace(new RegExp('{projectId}','g'),projectId);let payload={};if(provider){payload['provider']=provider;} +if(appId){payload['appId']=appId;} +if(secret){payload['secret']=secret;} +return http.patch(path,{'content-type':'application/json'},payload);},listPlatforms:function(projectId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} +let path='/projects/{projectId}/platforms'.replace(new RegExp('{projectId}','g'),projectId);let payload={};return http.get(path,{'content-type':'application/json'},payload);},createPlatform:function(projectId,type,name,key='',store='',url=''){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} if(type===undefined){throw new Error('Missing required parameter: "type"');} if(name===undefined){throw new Error('Missing required parameter: "name"');} -let path='/projects/{projectId}/platforms'.replace(new RegExp('{projectId}','g'),projectId);return http.post(path,{'content-type':'application/json'},{'type':type,'name':name,'key':key,'store':store,'url':url});},getPlatform:function(projectId,platformId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} +let path='/projects/{projectId}/platforms'.replace(new RegExp('{projectId}','g'),projectId);let payload={};if(type){payload['type']=type;} +if(name){payload['name']=name;} +if(key){payload['key']=key;} +if(store){payload['store']=store;} +if(url){payload['url']=url;} +return http.post(path,{'content-type':'application/json'},payload);},getPlatform:function(projectId,platformId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} if(platformId===undefined){throw new Error('Missing required parameter: "platformId"');} -let path='/projects/{projectId}/platforms/{platformId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{platformId}','g'),platformId);return http.get(path,{'content-type':'application/json'},{});},updatePlatform:function(projectId,platformId,name,key='',store='',url=''){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} +let path='/projects/{projectId}/platforms/{platformId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{platformId}','g'),platformId);let payload={};return http.get(path,{'content-type':'application/json'},payload);},updatePlatform:function(projectId,platformId,name,key='',store='',url=''){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} if(platformId===undefined){throw new Error('Missing required parameter: "platformId"');} if(name===undefined){throw new Error('Missing required parameter: "name"');} -let path='/projects/{projectId}/platforms/{platformId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{platformId}','g'),platformId);return http.put(path,{'content-type':'application/json'},{'name':name,'key':key,'store':store,'url':url});},deletePlatform:function(projectId,platformId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} +let path='/projects/{projectId}/platforms/{platformId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{platformId}','g'),platformId);let payload={};if(name){payload['name']=name;} +if(key){payload['key']=key;} +if(store){payload['store']=store;} +if(url){payload['url']=url;} +return http.put(path,{'content-type':'application/json'},payload);},deletePlatform:function(projectId,platformId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} if(platformId===undefined){throw new Error('Missing required parameter: "platformId"');} -let path='/projects/{projectId}/platforms/{platformId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{platformId}','g'),platformId);return http.delete(path,{'content-type':'application/json'},{});},listTasks:function(projectId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} -let path='/projects/{projectId}/tasks'.replace(new RegExp('{projectId}','g'),projectId);return http.get(path,{'content-type':'application/json'},{});},createTask:function(projectId,name,status,schedule,security,httpMethod,httpUrl,httpHeaders=[],httpUser='',httpPass=''){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} +let path='/projects/{projectId}/platforms/{platformId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{platformId}','g'),platformId);let payload={};return http.delete(path,{'content-type':'application/json'},payload);},listTasks:function(projectId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} +let path='/projects/{projectId}/tasks'.replace(new RegExp('{projectId}','g'),projectId);let payload={};return http.get(path,{'content-type':'application/json'},payload);},createTask:function(projectId,name,status,schedule,security,httpMethod,httpUrl,httpHeaders=[],httpUser='',httpPass=''){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} if(name===undefined){throw new Error('Missing required parameter: "name"');} if(status===undefined){throw new Error('Missing required parameter: "status"');} if(schedule===undefined){throw new Error('Missing required parameter: "schedule"');} if(security===undefined){throw new Error('Missing required parameter: "security"');} if(httpMethod===undefined){throw new Error('Missing required parameter: "httpMethod"');} if(httpUrl===undefined){throw new Error('Missing required parameter: "httpUrl"');} -let path='/projects/{projectId}/tasks'.replace(new RegExp('{projectId}','g'),projectId);return http.post(path,{'content-type':'application/json'},{'name':name,'status':status,'schedule':schedule,'security':security,'httpMethod':httpMethod,'httpUrl':httpUrl,'httpHeaders':httpHeaders,'httpUser':httpUser,'httpPass':httpPass});},getTask:function(projectId,taskId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} +let path='/projects/{projectId}/tasks'.replace(new RegExp('{projectId}','g'),projectId);let payload={};if(name){payload['name']=name;} +if(status){payload['status']=status;} +if(schedule){payload['schedule']=schedule;} +if(security){payload['security']=security;} +if(httpMethod){payload['httpMethod']=httpMethod;} +if(httpUrl){payload['httpUrl']=httpUrl;} +if(httpHeaders){payload['httpHeaders']=httpHeaders;} +if(httpUser){payload['httpUser']=httpUser;} +if(httpPass){payload['httpPass']=httpPass;} +return http.post(path,{'content-type':'application/json'},payload);},getTask:function(projectId,taskId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} if(taskId===undefined){throw new Error('Missing required parameter: "taskId"');} -let path='/projects/{projectId}/tasks/{taskId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{taskId}','g'),taskId);return http.get(path,{'content-type':'application/json'},{});},updateTask:function(projectId,taskId,name,status,schedule,security,httpMethod,httpUrl,httpHeaders=[],httpUser='',httpPass=''){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} +let path='/projects/{projectId}/tasks/{taskId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{taskId}','g'),taskId);let payload={};return http.get(path,{'content-type':'application/json'},payload);},updateTask:function(projectId,taskId,name,status,schedule,security,httpMethod,httpUrl,httpHeaders=[],httpUser='',httpPass=''){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} if(taskId===undefined){throw new Error('Missing required parameter: "taskId"');} if(name===undefined){throw new Error('Missing required parameter: "name"');} if(status===undefined){throw new Error('Missing required parameter: "status"');} @@ -116,63 +231,129 @@ if(schedule===undefined){throw new Error('Missing required parameter: "schedule" if(security===undefined){throw new Error('Missing required parameter: "security"');} if(httpMethod===undefined){throw new Error('Missing required parameter: "httpMethod"');} if(httpUrl===undefined){throw new Error('Missing required parameter: "httpUrl"');} -let path='/projects/{projectId}/tasks/{taskId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{taskId}','g'),taskId);return http.put(path,{'content-type':'application/json'},{'name':name,'status':status,'schedule':schedule,'security':security,'httpMethod':httpMethod,'httpUrl':httpUrl,'httpHeaders':httpHeaders,'httpUser':httpUser,'httpPass':httpPass});},deleteTask:function(projectId,taskId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} +let path='/projects/{projectId}/tasks/{taskId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{taskId}','g'),taskId);let payload={};if(name){payload['name']=name;} +if(status){payload['status']=status;} +if(schedule){payload['schedule']=schedule;} +if(security){payload['security']=security;} +if(httpMethod){payload['httpMethod']=httpMethod;} +if(httpUrl){payload['httpUrl']=httpUrl;} +if(httpHeaders){payload['httpHeaders']=httpHeaders;} +if(httpUser){payload['httpUser']=httpUser;} +if(httpPass){payload['httpPass']=httpPass;} +return http.put(path,{'content-type':'application/json'},payload);},deleteTask:function(projectId,taskId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} if(taskId===undefined){throw new Error('Missing required parameter: "taskId"');} -let path='/projects/{projectId}/tasks/{taskId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{taskId}','g'),taskId);return http.delete(path,{'content-type':'application/json'},{});},getProjectUsage:function(projectId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} -let path='/projects/{projectId}/usage'.replace(new RegExp('{projectId}','g'),projectId);return http.get(path,{'content-type':'application/json'},{});},listWebhooks:function(projectId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} -let path='/projects/{projectId}/webhooks'.replace(new RegExp('{projectId}','g'),projectId);return http.get(path,{'content-type':'application/json'},{});},createWebhook:function(projectId,name,events,url,security,httpUser='',httpPass=''){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} +let path='/projects/{projectId}/tasks/{taskId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{taskId}','g'),taskId);let payload={};return http.delete(path,{'content-type':'application/json'},payload);},getProjectUsage:function(projectId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} +let path='/projects/{projectId}/usage'.replace(new RegExp('{projectId}','g'),projectId);let payload={};return http.get(path,{'content-type':'application/json'},payload);},listWebhooks:function(projectId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} +let path='/projects/{projectId}/webhooks'.replace(new RegExp('{projectId}','g'),projectId);let payload={};return http.get(path,{'content-type':'application/json'},payload);},createWebhook:function(projectId,name,events,url,security,httpUser='',httpPass=''){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} if(name===undefined){throw new Error('Missing required parameter: "name"');} if(events===undefined){throw new Error('Missing required parameter: "events"');} if(url===undefined){throw new Error('Missing required parameter: "url"');} if(security===undefined){throw new Error('Missing required parameter: "security"');} -let path='/projects/{projectId}/webhooks'.replace(new RegExp('{projectId}','g'),projectId);return http.post(path,{'content-type':'application/json'},{'name':name,'events':events,'url':url,'security':security,'httpUser':httpUser,'httpPass':httpPass});},getWebhook:function(projectId,webhookId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} +let path='/projects/{projectId}/webhooks'.replace(new RegExp('{projectId}','g'),projectId);let payload={};if(name){payload['name']=name;} +if(events){payload['events']=events;} +if(url){payload['url']=url;} +if(security){payload['security']=security;} +if(httpUser){payload['httpUser']=httpUser;} +if(httpPass){payload['httpPass']=httpPass;} +return http.post(path,{'content-type':'application/json'},payload);},getWebhook:function(projectId,webhookId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} if(webhookId===undefined){throw new Error('Missing required parameter: "webhookId"');} -let path='/projects/{projectId}/webhooks/{webhookId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{webhookId}','g'),webhookId);return http.get(path,{'content-type':'application/json'},{});},updateWebhook:function(projectId,webhookId,name,events,url,security,httpUser='',httpPass=''){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} +let path='/projects/{projectId}/webhooks/{webhookId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{webhookId}','g'),webhookId);let payload={};return http.get(path,{'content-type':'application/json'},payload);},updateWebhook:function(projectId,webhookId,name,events,url,security,httpUser='',httpPass=''){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} if(webhookId===undefined){throw new Error('Missing required parameter: "webhookId"');} if(name===undefined){throw new Error('Missing required parameter: "name"');} if(events===undefined){throw new Error('Missing required parameter: "events"');} if(url===undefined){throw new Error('Missing required parameter: "url"');} if(security===undefined){throw new Error('Missing required parameter: "security"');} -let path='/projects/{projectId}/webhooks/{webhookId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{webhookId}','g'),webhookId);return http.put(path,{'content-type':'application/json'},{'name':name,'events':events,'url':url,'security':security,'httpUser':httpUser,'httpPass':httpPass});},deleteWebhook:function(projectId,webhookId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} +let path='/projects/{projectId}/webhooks/{webhookId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{webhookId}','g'),webhookId);let payload={};if(name){payload['name']=name;} +if(events){payload['events']=events;} +if(url){payload['url']=url;} +if(security){payload['security']=security;} +if(httpUser){payload['httpUser']=httpUser;} +if(httpPass){payload['httpPass']=httpPass;} +return http.put(path,{'content-type':'application/json'},payload);},deleteWebhook:function(projectId,webhookId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} if(webhookId===undefined){throw new Error('Missing required parameter: "webhookId"');} -let path='/projects/{projectId}/webhooks/{webhookId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{webhookId}','g'),webhookId);return http.delete(path,{'content-type':'application/json'},{});}};let storage={listFiles:function(search='',limit=25,offset=0,orderType='ASC'){let path='/storage/files';return http.get(path,{'content-type':'application/json'},{'search':search,'limit':limit,'offset':offset,'orderType':orderType});},createFile:function(files,read=[],write=[],folderId=''){if(files===undefined){throw new Error('Missing required parameter: "files"');} -let path='/storage/files';return http.post(path,{'content-type':'multipart/form-data'},{'files':files,'read':read,'write':write,'folderId':folderId});},getFile:function(fileId){if(fileId===undefined){throw new Error('Missing required parameter: "fileId"');} -let path='/storage/files/{fileId}'.replace(new RegExp('{fileId}','g'),fileId);return http.get(path,{'content-type':'application/json'},{});},updateFile:function(fileId,read=[],write=[],folderId=''){if(fileId===undefined){throw new Error('Missing required parameter: "fileId"');} -let path='/storage/files/{fileId}'.replace(new RegExp('{fileId}','g'),fileId);return http.put(path,{'content-type':'application/json'},{'read':read,'write':write,'folderId':folderId});},deleteFile:function(fileId){if(fileId===undefined){throw new Error('Missing required parameter: "fileId"');} -let path='/storage/files/{fileId}'.replace(new RegExp('{fileId}','g'),fileId);return http.delete(path,{'content-type':'application/json'},{});},getFileDownload:function(fileId){if(fileId===undefined){throw new Error('Missing required parameter: "fileId"');} -let path='/storage/files/{fileId}/download'.replace(new RegExp('{fileId}','g'),fileId);return http.get(path,{'content-type':'application/json'},{});},getFilePreview:function(fileId,width=0,height=0,quality=100,background='',output=''){if(fileId===undefined){throw new Error('Missing required parameter: "fileId"');} -let path='/storage/files/{fileId}/preview'.replace(new RegExp('{fileId}','g'),fileId);return http.get(path,{'content-type':'application/json'},{'width':width,'height':height,'quality':quality,'background':background,'output':output});},getFileView:function(fileId,as=''){if(fileId===undefined){throw new Error('Missing required parameter: "fileId"');} -let path='/storage/files/{fileId}/view'.replace(new RegExp('{fileId}','g'),fileId);return http.get(path,{'content-type':'application/json'},{'as':as});}};let teams={listTeams:function(search='',limit=25,offset=0,orderType='ASC'){let path='/teams';return http.get(path,{'content-type':'application/json'},{'search':search,'limit':limit,'offset':offset,'orderType':orderType});},createTeam:function(name,roles=["owner"]){if(name===undefined){throw new Error('Missing required parameter: "name"');} -let path='/teams';return http.post(path,{'content-type':'application/json'},{'name':name,'roles':roles});},getTeam:function(teamId){if(teamId===undefined){throw new Error('Missing required parameter: "teamId"');} -let path='/teams/{teamId}'.replace(new RegExp('{teamId}','g'),teamId);return http.get(path,{'content-type':'application/json'},{});},updateTeam:function(teamId,name){if(teamId===undefined){throw new Error('Missing required parameter: "teamId"');} +let path='/projects/{projectId}/webhooks/{webhookId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{webhookId}','g'),webhookId);let payload={};return http.delete(path,{'content-type':'application/json'},payload);}};let storage={listFiles:function(search='',limit=25,offset=0,orderType='ASC'){let path='/storage/files';let payload={};if(search){payload['search']=search;} +if(limit){payload['limit']=limit;} +if(offset){payload['offset']=offset;} +if(orderType){payload['orderType']=orderType;} +return http.get(path,{'content-type':'application/json'},payload);},createFile:function(files,read=[],write=[],folderId=''){if(files===undefined){throw new Error('Missing required parameter: "files"');} +let path='/storage/files';let payload={};if(files){payload['files']=files;} +if(read){payload['read']=read;} +if(write){payload['write']=write;} +if(folderId){payload['folderId']=folderId;} +return http.post(path,{'content-type':'multipart/form-data'},payload);},getFile:function(fileId){if(fileId===undefined){throw new Error('Missing required parameter: "fileId"');} +let path='/storage/files/{fileId}'.replace(new RegExp('{fileId}','g'),fileId);let payload={};return http.get(path,{'content-type':'application/json'},payload);},updateFile:function(fileId,read=[],write=[],folderId=''){if(fileId===undefined){throw new Error('Missing required parameter: "fileId"');} +let path='/storage/files/{fileId}'.replace(new RegExp('{fileId}','g'),fileId);let payload={};if(read){payload['read']=read;} +if(write){payload['write']=write;} +if(folderId){payload['folderId']=folderId;} +return http.put(path,{'content-type':'application/json'},payload);},deleteFile:function(fileId){if(fileId===undefined){throw new Error('Missing required parameter: "fileId"');} +let path='/storage/files/{fileId}'.replace(new RegExp('{fileId}','g'),fileId);let payload={};return http.delete(path,{'content-type':'application/json'},payload);},getFileDownload:function(fileId){if(fileId===undefined){throw new Error('Missing required parameter: "fileId"');} +let path='/storage/files/{fileId}/download'.replace(new RegExp('{fileId}','g'),fileId);let payload={};return http.get(path,{'content-type':'application/json'},payload);},getFilePreview:function(fileId,width=0,height=0,quality=100,background='',output=''){if(fileId===undefined){throw new Error('Missing required parameter: "fileId"');} +let path='/storage/files/{fileId}/preview'.replace(new RegExp('{fileId}','g'),fileId);let payload={};if(width){payload['width']=width;} +if(height){payload['height']=height;} +if(quality){payload['quality']=quality;} +if(background){payload['background']=background;} +if(output){payload['output']=output;} +return http.get(path,{'content-type':'application/json'},payload);},getFileView:function(fileId,as=''){if(fileId===undefined){throw new Error('Missing required parameter: "fileId"');} +let path='/storage/files/{fileId}/view'.replace(new RegExp('{fileId}','g'),fileId);let payload={};if(as){payload['as']=as;} +return http.get(path,{'content-type':'application/json'},payload);}};let teams={listTeams:function(search='',limit=25,offset=0,orderType='ASC'){let path='/teams';let payload={};if(search){payload['search']=search;} +if(limit){payload['limit']=limit;} +if(offset){payload['offset']=offset;} +if(orderType){payload['orderType']=orderType;} +return http.get(path,{'content-type':'application/json'},payload);},createTeam:function(name,roles=["owner"]){if(name===undefined){throw new Error('Missing required parameter: "name"');} +let path='/teams';let payload={};if(name){payload['name']=name;} +if(roles){payload['roles']=roles;} +return http.post(path,{'content-type':'application/json'},payload);},getTeam:function(teamId){if(teamId===undefined){throw new Error('Missing required parameter: "teamId"');} +let path='/teams/{teamId}'.replace(new RegExp('{teamId}','g'),teamId);let payload={};return http.get(path,{'content-type':'application/json'},payload);},updateTeam:function(teamId,name){if(teamId===undefined){throw new Error('Missing required parameter: "teamId"');} if(name===undefined){throw new Error('Missing required parameter: "name"');} -let path='/teams/{teamId}'.replace(new RegExp('{teamId}','g'),teamId);return http.put(path,{'content-type':'application/json'},{'name':name});},deleteTeam:function(teamId){if(teamId===undefined){throw new Error('Missing required parameter: "teamId"');} -let path='/teams/{teamId}'.replace(new RegExp('{teamId}','g'),teamId);return http.delete(path,{'content-type':'application/json'},{});},getTeamMembers:function(teamId){if(teamId===undefined){throw new Error('Missing required parameter: "teamId"');} -let path='/teams/{teamId}/members'.replace(new RegExp('{teamId}','g'),teamId);return http.get(path,{'content-type':'application/json'},{});},createTeamMembership:function(teamId,email,roles,redirect,name=''){if(teamId===undefined){throw new Error('Missing required parameter: "teamId"');} +let path='/teams/{teamId}'.replace(new RegExp('{teamId}','g'),teamId);let payload={};if(name){payload['name']=name;} +return http.put(path,{'content-type':'application/json'},payload);},deleteTeam:function(teamId){if(teamId===undefined){throw new Error('Missing required parameter: "teamId"');} +let path='/teams/{teamId}'.replace(new RegExp('{teamId}','g'),teamId);let payload={};return http.delete(path,{'content-type':'application/json'},payload);},getTeamMembers:function(teamId){if(teamId===undefined){throw new Error('Missing required parameter: "teamId"');} +let path='/teams/{teamId}/members'.replace(new RegExp('{teamId}','g'),teamId);let payload={};return http.get(path,{'content-type':'application/json'},payload);},createTeamMembership:function(teamId,email,roles,redirect,name=''){if(teamId===undefined){throw new Error('Missing required parameter: "teamId"');} if(email===undefined){throw new Error('Missing required parameter: "email"');} if(roles===undefined){throw new Error('Missing required parameter: "roles"');} if(redirect===undefined){throw new Error('Missing required parameter: "redirect"');} -let path='/teams/{teamId}/memberships'.replace(new RegExp('{teamId}','g'),teamId);return http.post(path,{'content-type':'application/json'},{'email':email,'name':name,'roles':roles,'redirect':redirect});},deleteTeamMembership:function(teamId,inviteId){if(teamId===undefined){throw new Error('Missing required parameter: "teamId"');} +let path='/teams/{teamId}/memberships'.replace(new RegExp('{teamId}','g'),teamId);let payload={};if(email){payload['email']=email;} +if(name){payload['name']=name;} +if(roles){payload['roles']=roles;} +if(redirect){payload['redirect']=redirect;} +return http.post(path,{'content-type':'application/json'},payload);},deleteTeamMembership:function(teamId,inviteId){if(teamId===undefined){throw new Error('Missing required parameter: "teamId"');} if(inviteId===undefined){throw new Error('Missing required parameter: "inviteId"');} -let path='/teams/{teamId}/memberships/{inviteId}'.replace(new RegExp('{teamId}','g'),teamId).replace(new RegExp('{inviteId}','g'),inviteId);return http.delete(path,{'content-type':'application/json'},{});},createTeamMembershipResend:function(teamId,inviteId,redirect){if(teamId===undefined){throw new Error('Missing required parameter: "teamId"');} +let path='/teams/{teamId}/memberships/{inviteId}'.replace(new RegExp('{teamId}','g'),teamId).replace(new RegExp('{inviteId}','g'),inviteId);let payload={};return http.delete(path,{'content-type':'application/json'},payload);},createTeamMembershipResend:function(teamId,inviteId,redirect){if(teamId===undefined){throw new Error('Missing required parameter: "teamId"');} if(inviteId===undefined){throw new Error('Missing required parameter: "inviteId"');} if(redirect===undefined){throw new Error('Missing required parameter: "redirect"');} -let path='/teams/{teamId}/memberships/{inviteId}/resend'.replace(new RegExp('{teamId}','g'),teamId).replace(new RegExp('{inviteId}','g'),inviteId);return http.post(path,{'content-type':'application/json'},{'redirect':redirect});},updateTeamMembershipStatus:function(teamId,inviteId,userId,secret,success='',failure=''){if(teamId===undefined){throw new Error('Missing required parameter: "teamId"');} +let path='/teams/{teamId}/memberships/{inviteId}/resend'.replace(new RegExp('{teamId}','g'),teamId).replace(new RegExp('{inviteId}','g'),inviteId);let payload={};if(redirect){payload['redirect']=redirect;} +return http.post(path,{'content-type':'application/json'},payload);},updateTeamMembershipStatus:function(teamId,inviteId,userId,secret,success='',failure=''){if(teamId===undefined){throw new Error('Missing required parameter: "teamId"');} if(inviteId===undefined){throw new Error('Missing required parameter: "inviteId"');} if(userId===undefined){throw new Error('Missing required parameter: "userId"');} if(secret===undefined){throw new Error('Missing required parameter: "secret"');} -let path='/teams/{teamId}/memberships/{inviteId}/status'.replace(new RegExp('{teamId}','g'),teamId).replace(new RegExp('{inviteId}','g'),inviteId);return iframe('patch',path,{project:config.project,'userId':userId,'secret':secret,'success':success,'failure':failure});}};let users={listUsers:function(search='',limit=25,offset=0,orderType='ASC'){let path='/users';return http.get(path,{'content-type':'application/json'},{'search':search,'limit':limit,'offset':offset,'orderType':orderType});},createUser:function(email,password,name=''){if(email===undefined){throw new Error('Missing required parameter: "email"');} +let path='/teams/{teamId}/memberships/{inviteId}/status'.replace(new RegExp('{teamId}','g'),teamId).replace(new RegExp('{inviteId}','g'),inviteId);let payload={};if(userId){payload['userId']=userId;} +if(secret){payload['secret']=secret;} +if(success){payload['success']=success;} +if(failure){payload['failure']=failure;} +return http.patch(path,{'content-type':'application/json'},payload);}};let users={listUsers:function(search='',limit=25,offset=0,orderType='ASC'){let path='/users';let payload={};if(search){payload['search']=search;} +if(limit){payload['limit']=limit;} +if(offset){payload['offset']=offset;} +if(orderType){payload['orderType']=orderType;} +return http.get(path,{'content-type':'application/json'},payload);},createUser:function(email,password,name=''){if(email===undefined){throw new Error('Missing required parameter: "email"');} if(password===undefined){throw new Error('Missing required parameter: "password"');} -let path='/users';return http.post(path,{'content-type':'application/json'},{'email':email,'password':password,'name':name});},getUser:function(userId){if(userId===undefined){throw new Error('Missing required parameter: "userId"');} -let path='/users/{userId}'.replace(new RegExp('{userId}','g'),userId);return http.get(path,{'content-type':'application/json'},{});},getUserLogs:function(userId){if(userId===undefined){throw new Error('Missing required parameter: "userId"');} -let path='/users/{userId}/logs'.replace(new RegExp('{userId}','g'),userId);return http.get(path,{'content-type':'application/json'},{});},getUserPrefs:function(userId){if(userId===undefined){throw new Error('Missing required parameter: "userId"');} -let path='/users/{userId}/prefs'.replace(new RegExp('{userId}','g'),userId);return http.get(path,{'content-type':'application/json'},{});},getUserSessions:function(userId){if(userId===undefined){throw new Error('Missing required parameter: "userId"');} -let path='/users/{userId}/sessions'.replace(new RegExp('{userId}','g'),userId);return http.get(path,{'content-type':'application/json'},{});},deleteUserSessions:function(userId){if(userId===undefined){throw new Error('Missing required parameter: "userId"');} -let path='/users/{userId}/sessions'.replace(new RegExp('{userId}','g'),userId);return http.delete(path,{'content-type':'application/json'},{});},deleteUsersSession:function(userId,sessionId){if(userId===undefined){throw new Error('Missing required parameter: "userId"');} +let path='/users';let payload={};if(email){payload['email']=email;} +if(password){payload['password']=password;} +if(name){payload['name']=name;} +return http.post(path,{'content-type':'application/json'},payload);},getUser:function(userId){if(userId===undefined){throw new Error('Missing required parameter: "userId"');} +let path='/users/{userId}'.replace(new RegExp('{userId}','g'),userId);let payload={};return http.get(path,{'content-type':'application/json'},payload);},getUserLogs:function(userId){if(userId===undefined){throw new Error('Missing required parameter: "userId"');} +let path='/users/{userId}/logs'.replace(new RegExp('{userId}','g'),userId);let payload={};return http.get(path,{'content-type':'application/json'},payload);},getUserPrefs:function(userId){if(userId===undefined){throw new Error('Missing required parameter: "userId"');} +let path='/users/{userId}/prefs'.replace(new RegExp('{userId}','g'),userId);let payload={};return http.get(path,{'content-type':'application/json'},payload);},updateUserPrefs:function(userId,prefs){if(userId===undefined){throw new Error('Missing required parameter: "userId"');} +if(prefs===undefined){throw new Error('Missing required parameter: "prefs"');} +let path='/users/{userId}/prefs'.replace(new RegExp('{userId}','g'),userId);let payload={};if(prefs){payload['prefs']=prefs;} +return http.patch(path,{'content-type':'application/json'},payload);},getUserSessions:function(userId){if(userId===undefined){throw new Error('Missing required parameter: "userId"');} +let path='/users/{userId}/sessions'.replace(new RegExp('{userId}','g'),userId);let payload={};return http.get(path,{'content-type':'application/json'},payload);},deleteUserSessions:function(userId){if(userId===undefined){throw new Error('Missing required parameter: "userId"');} +let path='/users/{userId}/sessions'.replace(new RegExp('{userId}','g'),userId);let payload={};return http.delete(path,{'content-type':'application/json'},payload);},deleteUserSession:function(userId,sessionId){if(userId===undefined){throw new Error('Missing required parameter: "userId"');} if(sessionId===undefined){throw new Error('Missing required parameter: "sessionId"');} -let path='/users/{userId}/sessions/:session'.replace(new RegExp('{userId}','g'),userId);return http.delete(path,{'content-type':'application/json'},{'sessionId':sessionId});},updateUserStatus:function(userId,status){if(userId===undefined){throw new Error('Missing required parameter: "userId"');} +let path='/users/{userId}/sessions/:session'.replace(new RegExp('{userId}','g'),userId);let payload={};if(sessionId){payload['sessionId']=sessionId;} +return http.delete(path,{'content-type':'application/json'},payload);},updateUserStatus:function(userId,status){if(userId===undefined){throw new Error('Missing required parameter: "userId"');} if(status===undefined){throw new Error('Missing required parameter: "status"');} -let path='/users/{userId}/status'.replace(new RegExp('{userId}','g'),userId);return http.patch(path,{'content-type':'application/json'},{'status':status});}};return{setEndpoint:setEndpoint,setProject:setProject,setKey:setKey,setLocale:setLocale,setMode:setMode,account:account,auth:auth,avatars:avatars,database:database,locale:locale,projects:projects,storage:storage,teams:teams,users:users};};})(window);(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Chart=f()}})(function(){var define,module,exports;return(function(){function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;oelement.trim()):[];failure=failure&&failure!=""?failure.split(",").map(element=>element.trim()):[];if(debug) console.log("%c[service init]: "+action+" ("+service+")","color:red");let callbacks={reset:function(){return function(){if("FORM"===element.tagName){return element.reset();} -throw new Error("This callback is only valid for forms");};},alert:function(text,classname){return function(alerts){alerts.add({text:text,class:classname||"success"},3000);};},redirect:function(url){return function(router){router.change(url||"/");};},reload:function(){return function(router){router.reload();};},state:function(keys){let updateQueryString=function(key,value,url){var re=new RegExp("([?&])"+key+"=.*?(&|#|$)(.*)","gi"),hash;if(re.test(url)){if(typeof value!=="undefined"&&value!==null){return url.replace(re,"$1"+key+"="+value+"$2$3");}else{hash=url.split("#");url=hash[0].replace(re,"$1$3").replace(/(&|\?)$/,"");if(typeof hash[1]!=="undefined"&&hash[1]!==null){url+="#"+hash[1];} +throw new Error("This callback is only valid for forms");};},alert:function(text,classname){return function(alerts){alerts.add({text:text,class:classname||"success"},3000);};},redirect:function(url){return function(router){window.location=url||"/";};},reload:function(){return function(router){router.reload();};},state:function(keys){let updateQueryString=function(key,value,url){var re=new RegExp("([?&])"+key+"=.*?(&|#|$)(.*)","gi"),hash;if(re.test(url)){if(typeof value!=="undefined"&&value!==null){return url.replace(re,"$1"+key+"="+value+"$2$3");}else{hash=url.split("#");url=hash[0].replace(re,"$1$3").replace(/(&|\?)$/,"");if(typeof hash[1]!=="undefined"&&hash[1]!==null){url+="#"+hash[1];} return url;}}else{if(typeof value!=="undefined"&&value!==null){var separator=url.indexOf("?")!==-1?"&":"?";hash=url.split("#");url=hash[0]+separator+key+"="+value;if(typeof hash[1]!=="undefined"&&hash[1]!==null){url+="#"+hash[1];} return url;}else{return url;}}};keys=keys.split(",").map(element=>element.trim());return function(serviceForm,router,window){let url=window.location.href;keys.map(node=>{node=node.split("=");let key=node[0]||"";let name=node[1]||key;let value=getValue(key,"param",serviceForm);url=updateQueryString(name,value?value:null,url);});if(url!==window.location.href){window.history.pushState({},"",url);router.reset();}};},trigger:function(events){return function(document){events=events.trim().split(",");for(let i=0;i=request.status){let data=request.response;let contentType=this.getResponseHeader('content-type')||'';contentType=contentType.substring(0,contentType.indexOf(';'));switch(contentType){case'application/json':data=JSON.parse(data);break;} resolve(data);}else{reject(new Error(request.statusText));}};if(progress){request.addEventListener('progress',progress);request.upload.addEventListener('progress',progress,false);} request.onerror=function(){reject(new Error("Network Error"));};request.send(params);})};return{'get':function(path,headers={},params={}){return call('GET',path+((Object.keys(params).length>0)?'?'+buildQuery(params):''),headers,{});},'post':function(path,headers={},params={},progress=null){return call('POST',path,headers,params,progress);},'put':function(path,headers={},params={},progress=null){return call('PUT',path,headers,params,progress);},'patch':function(path,headers={},params={},progress=null){return call('PATCH',path,headers,params,progress);},'delete':function(path,headers={},params={},progress=null){return call('DELETE',path,headers,params,progress);},'addGlobalParam':addGlobalParam,'addGlobalHeader':addGlobalHeader}}(window.document);let iframe=function(method,url,params){let form=document.createElement('form');form.setAttribute('method',method);form.setAttribute('action',config.endpoint+url);for(let key in params){if(params.hasOwnProperty(key)){let hiddenField=document.createElement("input");hiddenField.setAttribute("type","hidden");hiddenField.setAttribute("name",key);hiddenField.setAttribute("value",params[key]);form.appendChild(hiddenField);}} -document.body.appendChild(form);return form.submit();};let account={get:function(){let path='/account';return http.get(path,{'content-type':'application/json'},{});},delete:function(){let path='/account';return http.delete(path,{'content-type':'application/json'},{});},updateEmail:function(email,password){if(email===undefined){throw new Error('Missing required parameter: "email"');} +document.body.appendChild(form);return form.submit();};let account={get:function(){let path='/account';let payload={};return http.get(path,{'content-type':'application/json'},payload);},delete:function(){let path='/account';let payload={};return http.delete(path,{'content-type':'application/json'},payload);},updateEmail:function(email,password){if(email===undefined){throw new Error('Missing required parameter: "email"');} if(password===undefined){throw new Error('Missing required parameter: "password"');} -let path='/account/email';return http.patch(path,{'content-type':'application/json'},{'email':email,'password':password});},updateName:function(name){if(name===undefined){throw new Error('Missing required parameter: "name"');} -let path='/account/name';return http.patch(path,{'content-type':'application/json'},{'name':name});},updatePassword:function(password,oldPassword){if(password===undefined){throw new Error('Missing required parameter: "password"');} +let path='/account/email';let payload={};if(email){payload['email']=email;} +if(password){payload['password']=password;} +return http.patch(path,{'content-type':'application/json'},payload);},updateName:function(name){if(name===undefined){throw new Error('Missing required parameter: "name"');} +let path='/account/name';let payload={};if(name){payload['name']=name;} +return http.patch(path,{'content-type':'application/json'},payload);},updatePassword:function(password,oldPassword){if(password===undefined){throw new Error('Missing required parameter: "password"');} if(oldPassword===undefined){throw new Error('Missing required parameter: "oldPassword"');} -let path='/account/password';return http.patch(path,{'content-type':'application/json'},{'password':password,'old-password':oldPassword});},getPrefs:function(){let path='/account/prefs';return http.get(path,{'content-type':'application/json'},{});},updatePrefs:function(prefs){if(prefs===undefined){throw new Error('Missing required parameter: "prefs"');} -let path='/account/prefs';return http.patch(path,{'content-type':'application/json'},{'prefs':prefs});},getSecurity:function(){let path='/account/security';return http.get(path,{'content-type':'application/json'},{});},getSessions:function(){let path='/account/sessions';return http.get(path,{'content-type':'application/json'},{});}};let auth={login:function(email,password,success,failure){if(email===undefined){throw new Error('Missing required parameter: "email"');} +let path='/account/password';let payload={};if(password){payload['password']=password;} +if(oldPassword){payload['old-password']=oldPassword;} +return http.patch(path,{'content-type':'application/json'},payload);},getPrefs:function(){let path='/account/prefs';let payload={};return http.get(path,{'content-type':'application/json'},payload);},updatePrefs:function(prefs){if(prefs===undefined){throw new Error('Missing required parameter: "prefs"');} +let path='/account/prefs';let payload={};if(prefs){payload['prefs']=prefs;} +return http.patch(path,{'content-type':'application/json'},payload);},getSecurity:function(){let path='/account/security';let payload={};return http.get(path,{'content-type':'application/json'},payload);},getSessions:function(){let path='/account/sessions';let payload={};return http.get(path,{'content-type':'application/json'},payload);}};let auth={login:function(email,password,success,failure){if(email===undefined){throw new Error('Missing required parameter: "email"');} if(password===undefined){throw new Error('Missing required parameter: "password"');} if(success===undefined){throw new Error('Missing required parameter: "success"');} if(failure===undefined){throw new Error('Missing required parameter: "failure"');} -let path='/auth/login';return iframe('post',path,{project:config.project,'email':email,'password':password,'success':success,'failure':failure});},logout:function(){let path='/auth/logout';return http.delete(path,{'content-type':'application/json'},{});},logoutBySession:function(id){if(id===undefined){throw new Error('Missing required parameter: "id"');} -let path='/auth/logout/{id}'.replace(new RegExp('{id}','g'),id);return http.delete(path,{'content-type':'application/json'},{});},oauthCallback:function(projectId,provider,code,state=''){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} -if(provider===undefined){throw new Error('Missing required parameter: "provider"');} -if(code===undefined){throw new Error('Missing required parameter: "code"');} -let path='/auth/oauth/callback/{provider}/{projectId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{provider}','g'),provider);return http.get(path,{'content-type':'application/json'},{'code':code,'state':state});},oauth:function(provider,success='',failure=''){if(provider===undefined){throw new Error('Missing required parameter: "provider"');} -let path='/auth/oauth/{provider}'.replace(new RegExp('{provider}','g'),provider);return http.get(path,{'content-type':'application/json'},{'success':success,'failure':failure});},recovery:function(email,redirect){if(email===undefined){throw new Error('Missing required parameter: "email"');} -if(redirect===undefined){throw new Error('Missing required parameter: "redirect"');} -let path='/auth/recovery';return http.post(path,{'content-type':'application/json'},{'email':email,'redirect':redirect});},recoveryReset:function(userId,token,passwordA,passwordB){if(userId===undefined){throw new Error('Missing required parameter: "userId"');} +let path='/auth/login';let payload={};if(email){payload['email']=email;} +if(password){payload['password']=password;} +if(success){payload['success']=success;} +if(failure){payload['failure']=failure;} +return http.post(path,{'content-type':'application/json'},payload);},logout:function(){let path='/auth/logout';let payload={};return http.delete(path,{'content-type':'application/json'},payload);},logoutBySession:function(id){if(id===undefined){throw new Error('Missing required parameter: "id"');} +let path='/auth/logout/{id}'.replace(new RegExp('{id}','g'),id);let payload={};return http.delete(path,{'content-type':'application/json'},payload);},oauth:function(provider,success='',failure=''){if(provider===undefined){throw new Error('Missing required parameter: "provider"');} +let path='/auth/oauth/{provider}'.replace(new RegExp('{provider}','g'),provider);let payload={};if(success){payload['success']=success;} +if(failure){payload['failure']=failure;} +return http.get(path,{'content-type':'application/json'},payload);},recovery:function(email,reset){if(email===undefined){throw new Error('Missing required parameter: "email"');} +if(reset===undefined){throw new Error('Missing required parameter: "reset"');} +let path='/auth/recovery';let payload={};if(email){payload['email']=email;} +if(reset){payload['reset']=reset;} +return http.post(path,{'content-type':'application/json'},payload);},recoveryReset:function(userId,token,passwordA,passwordB){if(userId===undefined){throw new Error('Missing required parameter: "userId"');} if(token===undefined){throw new Error('Missing required parameter: "token"');} if(passwordA===undefined){throw new Error('Missing required parameter: "passwordA"');} if(passwordB===undefined){throw new Error('Missing required parameter: "passwordB"');} -let path='/auth/recovery/reset';return http.put(path,{'content-type':'application/json'},{'userId':userId,'token':token,'password-a':passwordA,'password-b':passwordB});},register:function(email,password,confirm,success,failure,name=''){if(email===undefined){throw new Error('Missing required parameter: "email"');} +let path='/auth/recovery/reset';let payload={};if(userId){payload['userId']=userId;} +if(token){payload['token']=token;} +if(passwordA){payload['password-a']=passwordA;} +if(passwordB){payload['password-b']=passwordB;} +return http.put(path,{'content-type':'application/json'},payload);},register:function(email,password,confirm,success='',failure='',name=''){if(email===undefined){throw new Error('Missing required parameter: "email"');} if(password===undefined){throw new Error('Missing required parameter: "password"');} if(confirm===undefined){throw new Error('Missing required parameter: "confirm"');} -if(success===undefined){throw new Error('Missing required parameter: "success"');} -if(failure===undefined){throw new Error('Missing required parameter: "failure"');} -let path='/auth/register';return iframe('post',path,{project:config.project,'email':email,'password':password,'confirm':confirm,'success':success,'failure':failure,'name':name});},confirm:function(userId,token){if(userId===undefined){throw new Error('Missing required parameter: "userId"');} +let path='/auth/register';let payload={};if(email){payload['email']=email;} +if(password){payload['password']=password;} +if(confirm){payload['confirm']=confirm;} +if(success){payload['success']=success;} +if(failure){payload['failure']=failure;} +if(name){payload['name']=name;} +return http.post(path,{'content-type':'application/json'},payload);},confirm:function(userId,token){if(userId===undefined){throw new Error('Missing required parameter: "userId"');} if(token===undefined){throw new Error('Missing required parameter: "token"');} -let path='/auth/register/confirm';return http.post(path,{'content-type':'application/json'},{'userId':userId,'token':token});},confirmResend:function(confirm){if(confirm===undefined){throw new Error('Missing required parameter: "confirm"');} -let path='/auth/register/confirm/resend';return http.post(path,{'content-type':'application/json'},{'confirm':confirm});}};let avatars={getBrowser:function(code,width=100,height=100,quality=100){if(code===undefined){throw new Error('Missing required parameter: "code"');} -let path='/avatars/browsers/{code}'.replace(new RegExp('{code}','g'),code);return http.get(path,{'content-type':'application/json'},{'width':width,'height':height,'quality':quality});},getCreditCard:function(code,width=100,height=100,quality=100){if(code===undefined){throw new Error('Missing required parameter: "code"');} -let path='/avatars/credit-cards/{code}'.replace(new RegExp('{code}','g'),code);return http.get(path,{'content-type':'application/json'},{'width':width,'height':height,'quality':quality});},getFavicon:function(url){if(url===undefined){throw new Error('Missing required parameter: "url"');} -let path='/avatars/favicon';return http.get(path,{'content-type':'application/json'},{'url':url});},getFlag:function(code,width=100,height=100,quality=100){if(code===undefined){throw new Error('Missing required parameter: "code"');} -let path='/avatars/flags/{code}'.replace(new RegExp('{code}','g'),code);return http.get(path,{'content-type':'application/json'},{'width':width,'height':height,'quality':quality});},getImage:function(url,width=400,height=400){if(url===undefined){throw new Error('Missing required parameter: "url"');} -let path='/avatars/image';return http.get(path,{'content-type':'application/json'},{'url':url,'width':width,'height':height});},getQR:function(text,size=400,margin=1,download=0){if(text===undefined){throw new Error('Missing required parameter: "text"');} -let path='/avatars/qr';return http.get(path,{'content-type':'application/json'},{'text':text,'size':size,'margin':margin,'download':download});}};let database={listCollections:function(search='',limit=25,offset=0,orderType='ASC'){let path='/database';return http.get(path,{'content-type':'application/json'},{'search':search,'limit':limit,'offset':offset,'orderType':orderType});},createCollection:function(name,read=[],write=[],rules=[]){if(name===undefined){throw new Error('Missing required parameter: "name"');} -let path='/database';return http.post(path,{'content-type':'application/json'},{'name':name,'read':read,'write':write,'rules':rules});},getCollection:function(collectionId){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"');} -let path='/database/{collectionId}'.replace(new RegExp('{collectionId}','g'),collectionId);return http.get(path,{'content-type':'application/json'},{});},updateCollection:function(collectionId,name,read=[],write=[],rules=[]){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"');} +let path='/auth/register/confirm';let payload={};if(userId){payload['userId']=userId;} +if(token){payload['token']=token;} +return http.post(path,{'content-type':'application/json'},payload);},confirmResend:function(confirm){if(confirm===undefined){throw new Error('Missing required parameter: "confirm"');} +let path='/auth/register/confirm/resend';let payload={};if(confirm){payload['confirm']=confirm;} +return http.post(path,{'content-type':'application/json'},payload);}};let avatars={getBrowser:function(code,width=100,height=100,quality=100){if(code===undefined){throw new Error('Missing required parameter: "code"');} +let path='/avatars/browsers/{code}'.replace(new RegExp('{code}','g'),code);let payload={};if(width){payload['width']=width;} +if(height){payload['height']=height;} +if(quality){payload['quality']=quality;} +return http.get(path,{'content-type':'application/json'},payload);},getCreditCard:function(code,width=100,height=100,quality=100){if(code===undefined){throw new Error('Missing required parameter: "code"');} +let path='/avatars/credit-cards/{code}'.replace(new RegExp('{code}','g'),code);let payload={};if(width){payload['width']=width;} +if(height){payload['height']=height;} +if(quality){payload['quality']=quality;} +return http.get(path,{'content-type':'application/json'},payload);},getFavicon:function(url){if(url===undefined){throw new Error('Missing required parameter: "url"');} +let path='/avatars/favicon';let payload={};if(url){payload['url']=url;} +return http.get(path,{'content-type':'application/json'},payload);},getFlag:function(code,width=100,height=100,quality=100){if(code===undefined){throw new Error('Missing required parameter: "code"');} +let path='/avatars/flags/{code}'.replace(new RegExp('{code}','g'),code);let payload={};if(width){payload['width']=width;} +if(height){payload['height']=height;} +if(quality){payload['quality']=quality;} +return http.get(path,{'content-type':'application/json'},payload);},getImage:function(url,width=400,height=400){if(url===undefined){throw new Error('Missing required parameter: "url"');} +let path='/avatars/image';let payload={};if(url){payload['url']=url;} +if(width){payload['width']=width;} +if(height){payload['height']=height;} +return http.get(path,{'content-type':'application/json'},payload);},getQR:function(text,size=400,margin=1,download=0){if(text===undefined){throw new Error('Missing required parameter: "text"');} +let path='/avatars/qr';let payload={};if(text){payload['text']=text;} +if(size){payload['size']=size;} +if(margin){payload['margin']=margin;} +if(download){payload['download']=download;} +return http.get(path,{'content-type':'application/json'},payload);}};let database={listCollections:function(search='',limit=25,offset=0,orderType='ASC'){let path='/database';let payload={};if(search){payload['search']=search;} +if(limit){payload['limit']=limit;} +if(offset){payload['offset']=offset;} +if(orderType){payload['orderType']=orderType;} +return http.get(path,{'content-type':'application/json'},payload);},createCollection:function(name,read=[],write=[],rules=[]){if(name===undefined){throw new Error('Missing required parameter: "name"');} +let path='/database';let payload={};if(name){payload['name']=name;} +if(read){payload['read']=read;} +if(write){payload['write']=write;} +if(rules){payload['rules']=rules;} +return http.post(path,{'content-type':'application/json'},payload);},getCollection:function(collectionId){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"');} +let path='/database/{collectionId}'.replace(new RegExp('{collectionId}','g'),collectionId);let payload={};return http.get(path,{'content-type':'application/json'},payload);},updateCollection:function(collectionId,name,read=[],write=[],rules=[]){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"');} if(name===undefined){throw new Error('Missing required parameter: "name"');} -let path='/database/{collectionId}'.replace(new RegExp('{collectionId}','g'),collectionId);return http.put(path,{'content-type':'application/json'},{'name':name,'read':read,'write':write,'rules':rules});},deleteCollection:function(collectionId){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"');} -let path='/database/{collectionId}'.replace(new RegExp('{collectionId}','g'),collectionId);return http.delete(path,{'content-type':'application/json'},{});},listDocuments:function(collectionId,filters=[],offset=0,limit=50,orderField='$uid',orderType='ASC',orderCast='string',search='',first=0,last=0){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"');} -let path='/database/{collectionId}/documents'.replace(new RegExp('{collectionId}','g'),collectionId);return http.get(path,{'content-type':'application/json'},{'filters':filters,'offset':offset,'limit':limit,'order-field':orderField,'order-type':orderType,'order-cast':orderCast,'search':search,'first':first,'last':last});},createDocument:function(collectionId,data,read=[],write=[],parentDocument='',parentProperty='',parentPropertyType='assign'){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"');} +let path='/database/{collectionId}'.replace(new RegExp('{collectionId}','g'),collectionId);let payload={};if(name){payload['name']=name;} +if(read){payload['read']=read;} +if(write){payload['write']=write;} +if(rules){payload['rules']=rules;} +return http.put(path,{'content-type':'application/json'},payload);},deleteCollection:function(collectionId){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"');} +let path='/database/{collectionId}'.replace(new RegExp('{collectionId}','g'),collectionId);let payload={};return http.delete(path,{'content-type':'application/json'},payload);},listDocuments:function(collectionId,filters=[],offset=0,limit=50,orderField='$uid',orderType='ASC',orderCast='string',search='',first=0,last=0){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"');} +let path='/database/{collectionId}/documents'.replace(new RegExp('{collectionId}','g'),collectionId);let payload={};if(filters){payload['filters']=filters;} +if(offset){payload['offset']=offset;} +if(limit){payload['limit']=limit;} +if(orderField){payload['order-field']=orderField;} +if(orderType){payload['order-type']=orderType;} +if(orderCast){payload['order-cast']=orderCast;} +if(search){payload['search']=search;} +if(first){payload['first']=first;} +if(last){payload['last']=last;} +return http.get(path,{'content-type':'application/json'},payload);},createDocument:function(collectionId,data,read=[],write=[],parentDocument='',parentProperty='',parentPropertyType='assign'){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"');} if(data===undefined){throw new Error('Missing required parameter: "data"');} -let path='/database/{collectionId}/documents'.replace(new RegExp('{collectionId}','g'),collectionId);return http.post(path,{'content-type':'application/json'},{'data':data,'read':read,'write':write,'parentDocument':parentDocument,'parentProperty':parentProperty,'parentPropertyType':parentPropertyType});},getDocument:function(collectionId,documentId){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"');} +let path='/database/{collectionId}/documents'.replace(new RegExp('{collectionId}','g'),collectionId);let payload={};if(data){payload['data']=data;} +if(read){payload['read']=read;} +if(write){payload['write']=write;} +if(parentDocument){payload['parentDocument']=parentDocument;} +if(parentProperty){payload['parentProperty']=parentProperty;} +if(parentPropertyType){payload['parentPropertyType']=parentPropertyType;} +return http.post(path,{'content-type':'application/json'},payload);},getDocument:function(collectionId,documentId){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"');} if(documentId===undefined){throw new Error('Missing required parameter: "documentId"');} -let path='/database/{collectionId}/documents/{documentId}'.replace(new RegExp('{collectionId}','g'),collectionId).replace(new RegExp('{documentId}','g'),documentId);return http.get(path,{'content-type':'application/json'},{});},updateDocument:function(collectionId,documentId,data,read=[],write=[]){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"');} +let path='/database/{collectionId}/documents/{documentId}'.replace(new RegExp('{collectionId}','g'),collectionId).replace(new RegExp('{documentId}','g'),documentId);let payload={};return http.get(path,{'content-type':'application/json'},payload);},updateDocument:function(collectionId,documentId,data,read=[],write=[]){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"');} if(documentId===undefined){throw new Error('Missing required parameter: "documentId"');} if(data===undefined){throw new Error('Missing required parameter: "data"');} -let path='/database/{collectionId}/documents/{documentId}'.replace(new RegExp('{collectionId}','g'),collectionId).replace(new RegExp('{documentId}','g'),documentId);return http.patch(path,{'content-type':'application/json'},{'data':data,'read':read,'write':write});},deleteDocument:function(collectionId,documentId){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"');} +let path='/database/{collectionId}/documents/{documentId}'.replace(new RegExp('{collectionId}','g'),collectionId).replace(new RegExp('{documentId}','g'),documentId);let payload={};if(data){payload['data']=data;} +if(read){payload['read']=read;} +if(write){payload['write']=write;} +return http.patch(path,{'content-type':'application/json'},payload);},deleteDocument:function(collectionId,documentId){if(collectionId===undefined){throw new Error('Missing required parameter: "collectionId"');} if(documentId===undefined){throw new Error('Missing required parameter: "documentId"');} -let path='/database/{collectionId}/documents/{documentId}'.replace(new RegExp('{collectionId}','g'),collectionId).replace(new RegExp('{documentId}','g'),documentId);return http.delete(path,{'content-type':'application/json'},{});}};let locale={getLocale:function(){let path='/locale';return http.get(path,{'content-type':'application/json'},{});},getCountries:function(){let path='/locale/countries';return http.get(path,{'content-type':'application/json'},{});},getCountriesEU:function(){let path='/locale/countries/eu';return http.get(path,{'content-type':'application/json'},{});},getCountriesPhones:function(){let path='/locale/countries/phones';return http.get(path,{'content-type':'application/json'},{});},getCurrencies:function(){let path='/locale/currencies';return http.get(path,{'content-type':'application/json'},{});}};let projects={listProjects:function(){let path='/projects';return http.get(path,{'content-type':'application/json'},{});},createProject:function(name,teamId,description='',logo='',url='',legalName='',legalCountry='',legalState='',legalCity='',legalAddress='',legalTaxId=''){if(name===undefined){throw new Error('Missing required parameter: "name"');} +let path='/database/{collectionId}/documents/{documentId}'.replace(new RegExp('{collectionId}','g'),collectionId).replace(new RegExp('{documentId}','g'),documentId);let payload={};return http.delete(path,{'content-type':'application/json'},payload);}};let locale={getLocale:function(){let path='/locale';let payload={};return http.get(path,{'content-type':'application/json'},payload);},getCountries:function(){let path='/locale/countries';let payload={};return http.get(path,{'content-type':'application/json'},payload);},getCountriesEU:function(){let path='/locale/countries/eu';let payload={};return http.get(path,{'content-type':'application/json'},payload);},getCountriesPhones:function(){let path='/locale/countries/phones';let payload={};return http.get(path,{'content-type':'application/json'},payload);},getCurrencies:function(){let path='/locale/currencies';let payload={};return http.get(path,{'content-type':'application/json'},payload);}};let projects={listProjects:function(){let path='/projects';let payload={};return http.get(path,{'content-type':'application/json'},payload);},createProject:function(name,teamId,description='',logo='',url='',legalName='',legalCountry='',legalState='',legalCity='',legalAddress='',legalTaxId=''){if(name===undefined){throw new Error('Missing required parameter: "name"');} if(teamId===undefined){throw new Error('Missing required parameter: "teamId"');} -let path='/projects';return http.post(path,{'content-type':'application/json'},{'name':name,'teamId':teamId,'description':description,'logo':logo,'url':url,'legalName':legalName,'legalCountry':legalCountry,'legalState':legalState,'legalCity':legalCity,'legalAddress':legalAddress,'legalTaxId':legalTaxId});},getProject:function(projectId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} -let path='/projects/{projectId}'.replace(new RegExp('{projectId}','g'),projectId);return http.get(path,{'content-type':'application/json'},{});},updateProject:function(projectId,name,description='',logo='',url='',legalName='',legalCountry='',legalState='',legalCity='',legalAddress='',legalTaxId=''){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} +let path='/projects';let payload={};if(name){payload['name']=name;} +if(teamId){payload['teamId']=teamId;} +if(description){payload['description']=description;} +if(logo){payload['logo']=logo;} +if(url){payload['url']=url;} +if(legalName){payload['legalName']=legalName;} +if(legalCountry){payload['legalCountry']=legalCountry;} +if(legalState){payload['legalState']=legalState;} +if(legalCity){payload['legalCity']=legalCity;} +if(legalAddress){payload['legalAddress']=legalAddress;} +if(legalTaxId){payload['legalTaxId']=legalTaxId;} +return http.post(path,{'content-type':'application/json'},payload);},getProject:function(projectId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} +let path='/projects/{projectId}'.replace(new RegExp('{projectId}','g'),projectId);let payload={};return http.get(path,{'content-type':'application/json'},payload);},updateProject:function(projectId,name,description='',logo='',url='',legalName='',legalCountry='',legalState='',legalCity='',legalAddress='',legalTaxId=''){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} if(name===undefined){throw new Error('Missing required parameter: "name"');} -let path='/projects/{projectId}'.replace(new RegExp('{projectId}','g'),projectId);return http.patch(path,{'content-type':'application/json'},{'name':name,'description':description,'logo':logo,'url':url,'legalName':legalName,'legalCountry':legalCountry,'legalState':legalState,'legalCity':legalCity,'legalAddress':legalAddress,'legalTaxId':legalTaxId});},deleteProject:function(projectId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} -let path='/projects/{projectId}'.replace(new RegExp('{projectId}','g'),projectId);return http.delete(path,{'content-type':'application/json'},{});},listKeys:function(projectId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} -let path='/projects/{projectId}/keys'.replace(new RegExp('{projectId}','g'),projectId);return http.get(path,{'content-type':'application/json'},{});},createKey:function(projectId,name,scopes){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} +let path='/projects/{projectId}'.replace(new RegExp('{projectId}','g'),projectId);let payload={};if(name){payload['name']=name;} +if(description){payload['description']=description;} +if(logo){payload['logo']=logo;} +if(url){payload['url']=url;} +if(legalName){payload['legalName']=legalName;} +if(legalCountry){payload['legalCountry']=legalCountry;} +if(legalState){payload['legalState']=legalState;} +if(legalCity){payload['legalCity']=legalCity;} +if(legalAddress){payload['legalAddress']=legalAddress;} +if(legalTaxId){payload['legalTaxId']=legalTaxId;} +return http.patch(path,{'content-type':'application/json'},payload);},deleteProject:function(projectId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} +let path='/projects/{projectId}'.replace(new RegExp('{projectId}','g'),projectId);let payload={};return http.delete(path,{'content-type':'application/json'},payload);},listKeys:function(projectId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} +let path='/projects/{projectId}/keys'.replace(new RegExp('{projectId}','g'),projectId);let payload={};return http.get(path,{'content-type':'application/json'},payload);},createKey:function(projectId,name,scopes){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} if(name===undefined){throw new Error('Missing required parameter: "name"');} if(scopes===undefined){throw new Error('Missing required parameter: "scopes"');} -let path='/projects/{projectId}/keys'.replace(new RegExp('{projectId}','g'),projectId);return http.post(path,{'content-type':'application/json'},{'name':name,'scopes':scopes});},getKey:function(projectId,keyId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} +let path='/projects/{projectId}/keys'.replace(new RegExp('{projectId}','g'),projectId);let payload={};if(name){payload['name']=name;} +if(scopes){payload['scopes']=scopes;} +return http.post(path,{'content-type':'application/json'},payload);},getKey:function(projectId,keyId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} if(keyId===undefined){throw new Error('Missing required parameter: "keyId"');} -let path='/projects/{projectId}/keys/{keyId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{keyId}','g'),keyId);return http.get(path,{'content-type':'application/json'},{});},updateKey:function(projectId,keyId,name,scopes){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} +let path='/projects/{projectId}/keys/{keyId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{keyId}','g'),keyId);let payload={};return http.get(path,{'content-type':'application/json'},payload);},updateKey:function(projectId,keyId,name,scopes){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} if(keyId===undefined){throw new Error('Missing required parameter: "keyId"');} if(name===undefined){throw new Error('Missing required parameter: "name"');} if(scopes===undefined){throw new Error('Missing required parameter: "scopes"');} -let path='/projects/{projectId}/keys/{keyId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{keyId}','g'),keyId);return http.put(path,{'content-type':'application/json'},{'name':name,'scopes':scopes});},deleteKey:function(projectId,keyId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} +let path='/projects/{projectId}/keys/{keyId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{keyId}','g'),keyId);let payload={};if(name){payload['name']=name;} +if(scopes){payload['scopes']=scopes;} +return http.put(path,{'content-type':'application/json'},payload);},deleteKey:function(projectId,keyId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} if(keyId===undefined){throw new Error('Missing required parameter: "keyId"');} -let path='/projects/{projectId}/keys/{keyId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{keyId}','g'),keyId);return http.delete(path,{'content-type':'application/json'},{});},updateProjectOAuth:function(projectId,provider,appId='',secret=''){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} +let path='/projects/{projectId}/keys/{keyId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{keyId}','g'),keyId);let payload={};return http.delete(path,{'content-type':'application/json'},payload);},updateProjectOAuth:function(projectId,provider,appId='',secret=''){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} if(provider===undefined){throw new Error('Missing required parameter: "provider"');} -let path='/projects/{projectId}/oauth'.replace(new RegExp('{projectId}','g'),projectId);return http.patch(path,{'content-type':'application/json'},{'provider':provider,'appId':appId,'secret':secret});},listPlatforms:function(projectId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} -let path='/projects/{projectId}/platforms'.replace(new RegExp('{projectId}','g'),projectId);return http.get(path,{'content-type':'application/json'},{});},createPlatform:function(projectId,type,name,key='',store='',url=''){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} +let path='/projects/{projectId}/oauth'.replace(new RegExp('{projectId}','g'),projectId);let payload={};if(provider){payload['provider']=provider;} +if(appId){payload['appId']=appId;} +if(secret){payload['secret']=secret;} +return http.patch(path,{'content-type':'application/json'},payload);},listPlatforms:function(projectId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} +let path='/projects/{projectId}/platforms'.replace(new RegExp('{projectId}','g'),projectId);let payload={};return http.get(path,{'content-type':'application/json'},payload);},createPlatform:function(projectId,type,name,key='',store='',url=''){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} if(type===undefined){throw new Error('Missing required parameter: "type"');} if(name===undefined){throw new Error('Missing required parameter: "name"');} -let path='/projects/{projectId}/platforms'.replace(new RegExp('{projectId}','g'),projectId);return http.post(path,{'content-type':'application/json'},{'type':type,'name':name,'key':key,'store':store,'url':url});},getPlatform:function(projectId,platformId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} +let path='/projects/{projectId}/platforms'.replace(new RegExp('{projectId}','g'),projectId);let payload={};if(type){payload['type']=type;} +if(name){payload['name']=name;} +if(key){payload['key']=key;} +if(store){payload['store']=store;} +if(url){payload['url']=url;} +return http.post(path,{'content-type':'application/json'},payload);},getPlatform:function(projectId,platformId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} if(platformId===undefined){throw new Error('Missing required parameter: "platformId"');} -let path='/projects/{projectId}/platforms/{platformId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{platformId}','g'),platformId);return http.get(path,{'content-type':'application/json'},{});},updatePlatform:function(projectId,platformId,name,key='',store='',url=''){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} +let path='/projects/{projectId}/platforms/{platformId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{platformId}','g'),platformId);let payload={};return http.get(path,{'content-type':'application/json'},payload);},updatePlatform:function(projectId,platformId,name,key='',store='',url=''){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} if(platformId===undefined){throw new Error('Missing required parameter: "platformId"');} if(name===undefined){throw new Error('Missing required parameter: "name"');} -let path='/projects/{projectId}/platforms/{platformId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{platformId}','g'),platformId);return http.put(path,{'content-type':'application/json'},{'name':name,'key':key,'store':store,'url':url});},deletePlatform:function(projectId,platformId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} +let path='/projects/{projectId}/platforms/{platformId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{platformId}','g'),platformId);let payload={};if(name){payload['name']=name;} +if(key){payload['key']=key;} +if(store){payload['store']=store;} +if(url){payload['url']=url;} +return http.put(path,{'content-type':'application/json'},payload);},deletePlatform:function(projectId,platformId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} if(platformId===undefined){throw new Error('Missing required parameter: "platformId"');} -let path='/projects/{projectId}/platforms/{platformId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{platformId}','g'),platformId);return http.delete(path,{'content-type':'application/json'},{});},listTasks:function(projectId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} -let path='/projects/{projectId}/tasks'.replace(new RegExp('{projectId}','g'),projectId);return http.get(path,{'content-type':'application/json'},{});},createTask:function(projectId,name,status,schedule,security,httpMethod,httpUrl,httpHeaders=[],httpUser='',httpPass=''){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} +let path='/projects/{projectId}/platforms/{platformId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{platformId}','g'),platformId);let payload={};return http.delete(path,{'content-type':'application/json'},payload);},listTasks:function(projectId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} +let path='/projects/{projectId}/tasks'.replace(new RegExp('{projectId}','g'),projectId);let payload={};return http.get(path,{'content-type':'application/json'},payload);},createTask:function(projectId,name,status,schedule,security,httpMethod,httpUrl,httpHeaders=[],httpUser='',httpPass=''){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} if(name===undefined){throw new Error('Missing required parameter: "name"');} if(status===undefined){throw new Error('Missing required parameter: "status"');} if(schedule===undefined){throw new Error('Missing required parameter: "schedule"');} if(security===undefined){throw new Error('Missing required parameter: "security"');} if(httpMethod===undefined){throw new Error('Missing required parameter: "httpMethod"');} if(httpUrl===undefined){throw new Error('Missing required parameter: "httpUrl"');} -let path='/projects/{projectId}/tasks'.replace(new RegExp('{projectId}','g'),projectId);return http.post(path,{'content-type':'application/json'},{'name':name,'status':status,'schedule':schedule,'security':security,'httpMethod':httpMethod,'httpUrl':httpUrl,'httpHeaders':httpHeaders,'httpUser':httpUser,'httpPass':httpPass});},getTask:function(projectId,taskId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} +let path='/projects/{projectId}/tasks'.replace(new RegExp('{projectId}','g'),projectId);let payload={};if(name){payload['name']=name;} +if(status){payload['status']=status;} +if(schedule){payload['schedule']=schedule;} +if(security){payload['security']=security;} +if(httpMethod){payload['httpMethod']=httpMethod;} +if(httpUrl){payload['httpUrl']=httpUrl;} +if(httpHeaders){payload['httpHeaders']=httpHeaders;} +if(httpUser){payload['httpUser']=httpUser;} +if(httpPass){payload['httpPass']=httpPass;} +return http.post(path,{'content-type':'application/json'},payload);},getTask:function(projectId,taskId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} if(taskId===undefined){throw new Error('Missing required parameter: "taskId"');} -let path='/projects/{projectId}/tasks/{taskId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{taskId}','g'),taskId);return http.get(path,{'content-type':'application/json'},{});},updateTask:function(projectId,taskId,name,status,schedule,security,httpMethod,httpUrl,httpHeaders=[],httpUser='',httpPass=''){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} +let path='/projects/{projectId}/tasks/{taskId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{taskId}','g'),taskId);let payload={};return http.get(path,{'content-type':'application/json'},payload);},updateTask:function(projectId,taskId,name,status,schedule,security,httpMethod,httpUrl,httpHeaders=[],httpUser='',httpPass=''){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} if(taskId===undefined){throw new Error('Missing required parameter: "taskId"');} if(name===undefined){throw new Error('Missing required parameter: "name"');} if(status===undefined){throw new Error('Missing required parameter: "status"');} @@ -116,63 +231,129 @@ if(schedule===undefined){throw new Error('Missing required parameter: "schedule" if(security===undefined){throw new Error('Missing required parameter: "security"');} if(httpMethod===undefined){throw new Error('Missing required parameter: "httpMethod"');} if(httpUrl===undefined){throw new Error('Missing required parameter: "httpUrl"');} -let path='/projects/{projectId}/tasks/{taskId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{taskId}','g'),taskId);return http.put(path,{'content-type':'application/json'},{'name':name,'status':status,'schedule':schedule,'security':security,'httpMethod':httpMethod,'httpUrl':httpUrl,'httpHeaders':httpHeaders,'httpUser':httpUser,'httpPass':httpPass});},deleteTask:function(projectId,taskId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} +let path='/projects/{projectId}/tasks/{taskId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{taskId}','g'),taskId);let payload={};if(name){payload['name']=name;} +if(status){payload['status']=status;} +if(schedule){payload['schedule']=schedule;} +if(security){payload['security']=security;} +if(httpMethod){payload['httpMethod']=httpMethod;} +if(httpUrl){payload['httpUrl']=httpUrl;} +if(httpHeaders){payload['httpHeaders']=httpHeaders;} +if(httpUser){payload['httpUser']=httpUser;} +if(httpPass){payload['httpPass']=httpPass;} +return http.put(path,{'content-type':'application/json'},payload);},deleteTask:function(projectId,taskId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} if(taskId===undefined){throw new Error('Missing required parameter: "taskId"');} -let path='/projects/{projectId}/tasks/{taskId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{taskId}','g'),taskId);return http.delete(path,{'content-type':'application/json'},{});},getProjectUsage:function(projectId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} -let path='/projects/{projectId}/usage'.replace(new RegExp('{projectId}','g'),projectId);return http.get(path,{'content-type':'application/json'},{});},listWebhooks:function(projectId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} -let path='/projects/{projectId}/webhooks'.replace(new RegExp('{projectId}','g'),projectId);return http.get(path,{'content-type':'application/json'},{});},createWebhook:function(projectId,name,events,url,security,httpUser='',httpPass=''){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} +let path='/projects/{projectId}/tasks/{taskId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{taskId}','g'),taskId);let payload={};return http.delete(path,{'content-type':'application/json'},payload);},getProjectUsage:function(projectId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} +let path='/projects/{projectId}/usage'.replace(new RegExp('{projectId}','g'),projectId);let payload={};return http.get(path,{'content-type':'application/json'},payload);},listWebhooks:function(projectId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} +let path='/projects/{projectId}/webhooks'.replace(new RegExp('{projectId}','g'),projectId);let payload={};return http.get(path,{'content-type':'application/json'},payload);},createWebhook:function(projectId,name,events,url,security,httpUser='',httpPass=''){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} if(name===undefined){throw new Error('Missing required parameter: "name"');} if(events===undefined){throw new Error('Missing required parameter: "events"');} if(url===undefined){throw new Error('Missing required parameter: "url"');} if(security===undefined){throw new Error('Missing required parameter: "security"');} -let path='/projects/{projectId}/webhooks'.replace(new RegExp('{projectId}','g'),projectId);return http.post(path,{'content-type':'application/json'},{'name':name,'events':events,'url':url,'security':security,'httpUser':httpUser,'httpPass':httpPass});},getWebhook:function(projectId,webhookId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} +let path='/projects/{projectId}/webhooks'.replace(new RegExp('{projectId}','g'),projectId);let payload={};if(name){payload['name']=name;} +if(events){payload['events']=events;} +if(url){payload['url']=url;} +if(security){payload['security']=security;} +if(httpUser){payload['httpUser']=httpUser;} +if(httpPass){payload['httpPass']=httpPass;} +return http.post(path,{'content-type':'application/json'},payload);},getWebhook:function(projectId,webhookId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} if(webhookId===undefined){throw new Error('Missing required parameter: "webhookId"');} -let path='/projects/{projectId}/webhooks/{webhookId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{webhookId}','g'),webhookId);return http.get(path,{'content-type':'application/json'},{});},updateWebhook:function(projectId,webhookId,name,events,url,security,httpUser='',httpPass=''){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} +let path='/projects/{projectId}/webhooks/{webhookId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{webhookId}','g'),webhookId);let payload={};return http.get(path,{'content-type':'application/json'},payload);},updateWebhook:function(projectId,webhookId,name,events,url,security,httpUser='',httpPass=''){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} if(webhookId===undefined){throw new Error('Missing required parameter: "webhookId"');} if(name===undefined){throw new Error('Missing required parameter: "name"');} if(events===undefined){throw new Error('Missing required parameter: "events"');} if(url===undefined){throw new Error('Missing required parameter: "url"');} if(security===undefined){throw new Error('Missing required parameter: "security"');} -let path='/projects/{projectId}/webhooks/{webhookId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{webhookId}','g'),webhookId);return http.put(path,{'content-type':'application/json'},{'name':name,'events':events,'url':url,'security':security,'httpUser':httpUser,'httpPass':httpPass});},deleteWebhook:function(projectId,webhookId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} +let path='/projects/{projectId}/webhooks/{webhookId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{webhookId}','g'),webhookId);let payload={};if(name){payload['name']=name;} +if(events){payload['events']=events;} +if(url){payload['url']=url;} +if(security){payload['security']=security;} +if(httpUser){payload['httpUser']=httpUser;} +if(httpPass){payload['httpPass']=httpPass;} +return http.put(path,{'content-type':'application/json'},payload);},deleteWebhook:function(projectId,webhookId){if(projectId===undefined){throw new Error('Missing required parameter: "projectId"');} if(webhookId===undefined){throw new Error('Missing required parameter: "webhookId"');} -let path='/projects/{projectId}/webhooks/{webhookId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{webhookId}','g'),webhookId);return http.delete(path,{'content-type':'application/json'},{});}};let storage={listFiles:function(search='',limit=25,offset=0,orderType='ASC'){let path='/storage/files';return http.get(path,{'content-type':'application/json'},{'search':search,'limit':limit,'offset':offset,'orderType':orderType});},createFile:function(files,read=[],write=[],folderId=''){if(files===undefined){throw new Error('Missing required parameter: "files"');} -let path='/storage/files';return http.post(path,{'content-type':'multipart/form-data'},{'files':files,'read':read,'write':write,'folderId':folderId});},getFile:function(fileId){if(fileId===undefined){throw new Error('Missing required parameter: "fileId"');} -let path='/storage/files/{fileId}'.replace(new RegExp('{fileId}','g'),fileId);return http.get(path,{'content-type':'application/json'},{});},updateFile:function(fileId,read=[],write=[],folderId=''){if(fileId===undefined){throw new Error('Missing required parameter: "fileId"');} -let path='/storage/files/{fileId}'.replace(new RegExp('{fileId}','g'),fileId);return http.put(path,{'content-type':'application/json'},{'read':read,'write':write,'folderId':folderId});},deleteFile:function(fileId){if(fileId===undefined){throw new Error('Missing required parameter: "fileId"');} -let path='/storage/files/{fileId}'.replace(new RegExp('{fileId}','g'),fileId);return http.delete(path,{'content-type':'application/json'},{});},getFileDownload:function(fileId){if(fileId===undefined){throw new Error('Missing required parameter: "fileId"');} -let path='/storage/files/{fileId}/download'.replace(new RegExp('{fileId}','g'),fileId);return http.get(path,{'content-type':'application/json'},{});},getFilePreview:function(fileId,width=0,height=0,quality=100,background='',output=''){if(fileId===undefined){throw new Error('Missing required parameter: "fileId"');} -let path='/storage/files/{fileId}/preview'.replace(new RegExp('{fileId}','g'),fileId);return http.get(path,{'content-type':'application/json'},{'width':width,'height':height,'quality':quality,'background':background,'output':output});},getFileView:function(fileId,as=''){if(fileId===undefined){throw new Error('Missing required parameter: "fileId"');} -let path='/storage/files/{fileId}/view'.replace(new RegExp('{fileId}','g'),fileId);return http.get(path,{'content-type':'application/json'},{'as':as});}};let teams={listTeams:function(search='',limit=25,offset=0,orderType='ASC'){let path='/teams';return http.get(path,{'content-type':'application/json'},{'search':search,'limit':limit,'offset':offset,'orderType':orderType});},createTeam:function(name,roles=["owner"]){if(name===undefined){throw new Error('Missing required parameter: "name"');} -let path='/teams';return http.post(path,{'content-type':'application/json'},{'name':name,'roles':roles});},getTeam:function(teamId){if(teamId===undefined){throw new Error('Missing required parameter: "teamId"');} -let path='/teams/{teamId}'.replace(new RegExp('{teamId}','g'),teamId);return http.get(path,{'content-type':'application/json'},{});},updateTeam:function(teamId,name){if(teamId===undefined){throw new Error('Missing required parameter: "teamId"');} +let path='/projects/{projectId}/webhooks/{webhookId}'.replace(new RegExp('{projectId}','g'),projectId).replace(new RegExp('{webhookId}','g'),webhookId);let payload={};return http.delete(path,{'content-type':'application/json'},payload);}};let storage={listFiles:function(search='',limit=25,offset=0,orderType='ASC'){let path='/storage/files';let payload={};if(search){payload['search']=search;} +if(limit){payload['limit']=limit;} +if(offset){payload['offset']=offset;} +if(orderType){payload['orderType']=orderType;} +return http.get(path,{'content-type':'application/json'},payload);},createFile:function(files,read=[],write=[],folderId=''){if(files===undefined){throw new Error('Missing required parameter: "files"');} +let path='/storage/files';let payload={};if(files){payload['files']=files;} +if(read){payload['read']=read;} +if(write){payload['write']=write;} +if(folderId){payload['folderId']=folderId;} +return http.post(path,{'content-type':'multipart/form-data'},payload);},getFile:function(fileId){if(fileId===undefined){throw new Error('Missing required parameter: "fileId"');} +let path='/storage/files/{fileId}'.replace(new RegExp('{fileId}','g'),fileId);let payload={};return http.get(path,{'content-type':'application/json'},payload);},updateFile:function(fileId,read=[],write=[],folderId=''){if(fileId===undefined){throw new Error('Missing required parameter: "fileId"');} +let path='/storage/files/{fileId}'.replace(new RegExp('{fileId}','g'),fileId);let payload={};if(read){payload['read']=read;} +if(write){payload['write']=write;} +if(folderId){payload['folderId']=folderId;} +return http.put(path,{'content-type':'application/json'},payload);},deleteFile:function(fileId){if(fileId===undefined){throw new Error('Missing required parameter: "fileId"');} +let path='/storage/files/{fileId}'.replace(new RegExp('{fileId}','g'),fileId);let payload={};return http.delete(path,{'content-type':'application/json'},payload);},getFileDownload:function(fileId){if(fileId===undefined){throw new Error('Missing required parameter: "fileId"');} +let path='/storage/files/{fileId}/download'.replace(new RegExp('{fileId}','g'),fileId);let payload={};return http.get(path,{'content-type':'application/json'},payload);},getFilePreview:function(fileId,width=0,height=0,quality=100,background='',output=''){if(fileId===undefined){throw new Error('Missing required parameter: "fileId"');} +let path='/storage/files/{fileId}/preview'.replace(new RegExp('{fileId}','g'),fileId);let payload={};if(width){payload['width']=width;} +if(height){payload['height']=height;} +if(quality){payload['quality']=quality;} +if(background){payload['background']=background;} +if(output){payload['output']=output;} +return http.get(path,{'content-type':'application/json'},payload);},getFileView:function(fileId,as=''){if(fileId===undefined){throw new Error('Missing required parameter: "fileId"');} +let path='/storage/files/{fileId}/view'.replace(new RegExp('{fileId}','g'),fileId);let payload={};if(as){payload['as']=as;} +return http.get(path,{'content-type':'application/json'},payload);}};let teams={listTeams:function(search='',limit=25,offset=0,orderType='ASC'){let path='/teams';let payload={};if(search){payload['search']=search;} +if(limit){payload['limit']=limit;} +if(offset){payload['offset']=offset;} +if(orderType){payload['orderType']=orderType;} +return http.get(path,{'content-type':'application/json'},payload);},createTeam:function(name,roles=["owner"]){if(name===undefined){throw new Error('Missing required parameter: "name"');} +let path='/teams';let payload={};if(name){payload['name']=name;} +if(roles){payload['roles']=roles;} +return http.post(path,{'content-type':'application/json'},payload);},getTeam:function(teamId){if(teamId===undefined){throw new Error('Missing required parameter: "teamId"');} +let path='/teams/{teamId}'.replace(new RegExp('{teamId}','g'),teamId);let payload={};return http.get(path,{'content-type':'application/json'},payload);},updateTeam:function(teamId,name){if(teamId===undefined){throw new Error('Missing required parameter: "teamId"');} if(name===undefined){throw new Error('Missing required parameter: "name"');} -let path='/teams/{teamId}'.replace(new RegExp('{teamId}','g'),teamId);return http.put(path,{'content-type':'application/json'},{'name':name});},deleteTeam:function(teamId){if(teamId===undefined){throw new Error('Missing required parameter: "teamId"');} -let path='/teams/{teamId}'.replace(new RegExp('{teamId}','g'),teamId);return http.delete(path,{'content-type':'application/json'},{});},getTeamMembers:function(teamId){if(teamId===undefined){throw new Error('Missing required parameter: "teamId"');} -let path='/teams/{teamId}/members'.replace(new RegExp('{teamId}','g'),teamId);return http.get(path,{'content-type':'application/json'},{});},createTeamMembership:function(teamId,email,roles,redirect,name=''){if(teamId===undefined){throw new Error('Missing required parameter: "teamId"');} +let path='/teams/{teamId}'.replace(new RegExp('{teamId}','g'),teamId);let payload={};if(name){payload['name']=name;} +return http.put(path,{'content-type':'application/json'},payload);},deleteTeam:function(teamId){if(teamId===undefined){throw new Error('Missing required parameter: "teamId"');} +let path='/teams/{teamId}'.replace(new RegExp('{teamId}','g'),teamId);let payload={};return http.delete(path,{'content-type':'application/json'},payload);},getTeamMembers:function(teamId){if(teamId===undefined){throw new Error('Missing required parameter: "teamId"');} +let path='/teams/{teamId}/members'.replace(new RegExp('{teamId}','g'),teamId);let payload={};return http.get(path,{'content-type':'application/json'},payload);},createTeamMembership:function(teamId,email,roles,redirect,name=''){if(teamId===undefined){throw new Error('Missing required parameter: "teamId"');} if(email===undefined){throw new Error('Missing required parameter: "email"');} if(roles===undefined){throw new Error('Missing required parameter: "roles"');} if(redirect===undefined){throw new Error('Missing required parameter: "redirect"');} -let path='/teams/{teamId}/memberships'.replace(new RegExp('{teamId}','g'),teamId);return http.post(path,{'content-type':'application/json'},{'email':email,'name':name,'roles':roles,'redirect':redirect});},deleteTeamMembership:function(teamId,inviteId){if(teamId===undefined){throw new Error('Missing required parameter: "teamId"');} +let path='/teams/{teamId}/memberships'.replace(new RegExp('{teamId}','g'),teamId);let payload={};if(email){payload['email']=email;} +if(name){payload['name']=name;} +if(roles){payload['roles']=roles;} +if(redirect){payload['redirect']=redirect;} +return http.post(path,{'content-type':'application/json'},payload);},deleteTeamMembership:function(teamId,inviteId){if(teamId===undefined){throw new Error('Missing required parameter: "teamId"');} if(inviteId===undefined){throw new Error('Missing required parameter: "inviteId"');} -let path='/teams/{teamId}/memberships/{inviteId}'.replace(new RegExp('{teamId}','g'),teamId).replace(new RegExp('{inviteId}','g'),inviteId);return http.delete(path,{'content-type':'application/json'},{});},createTeamMembershipResend:function(teamId,inviteId,redirect){if(teamId===undefined){throw new Error('Missing required parameter: "teamId"');} +let path='/teams/{teamId}/memberships/{inviteId}'.replace(new RegExp('{teamId}','g'),teamId).replace(new RegExp('{inviteId}','g'),inviteId);let payload={};return http.delete(path,{'content-type':'application/json'},payload);},createTeamMembershipResend:function(teamId,inviteId,redirect){if(teamId===undefined){throw new Error('Missing required parameter: "teamId"');} if(inviteId===undefined){throw new Error('Missing required parameter: "inviteId"');} if(redirect===undefined){throw new Error('Missing required parameter: "redirect"');} -let path='/teams/{teamId}/memberships/{inviteId}/resend'.replace(new RegExp('{teamId}','g'),teamId).replace(new RegExp('{inviteId}','g'),inviteId);return http.post(path,{'content-type':'application/json'},{'redirect':redirect});},updateTeamMembershipStatus:function(teamId,inviteId,userId,secret,success='',failure=''){if(teamId===undefined){throw new Error('Missing required parameter: "teamId"');} +let path='/teams/{teamId}/memberships/{inviteId}/resend'.replace(new RegExp('{teamId}','g'),teamId).replace(new RegExp('{inviteId}','g'),inviteId);let payload={};if(redirect){payload['redirect']=redirect;} +return http.post(path,{'content-type':'application/json'},payload);},updateTeamMembershipStatus:function(teamId,inviteId,userId,secret,success='',failure=''){if(teamId===undefined){throw new Error('Missing required parameter: "teamId"');} if(inviteId===undefined){throw new Error('Missing required parameter: "inviteId"');} if(userId===undefined){throw new Error('Missing required parameter: "userId"');} if(secret===undefined){throw new Error('Missing required parameter: "secret"');} -let path='/teams/{teamId}/memberships/{inviteId}/status'.replace(new RegExp('{teamId}','g'),teamId).replace(new RegExp('{inviteId}','g'),inviteId);return iframe('patch',path,{project:config.project,'userId':userId,'secret':secret,'success':success,'failure':failure});}};let users={listUsers:function(search='',limit=25,offset=0,orderType='ASC'){let path='/users';return http.get(path,{'content-type':'application/json'},{'search':search,'limit':limit,'offset':offset,'orderType':orderType});},createUser:function(email,password,name=''){if(email===undefined){throw new Error('Missing required parameter: "email"');} +let path='/teams/{teamId}/memberships/{inviteId}/status'.replace(new RegExp('{teamId}','g'),teamId).replace(new RegExp('{inviteId}','g'),inviteId);let payload={};if(userId){payload['userId']=userId;} +if(secret){payload['secret']=secret;} +if(success){payload['success']=success;} +if(failure){payload['failure']=failure;} +return http.patch(path,{'content-type':'application/json'},payload);}};let users={listUsers:function(search='',limit=25,offset=0,orderType='ASC'){let path='/users';let payload={};if(search){payload['search']=search;} +if(limit){payload['limit']=limit;} +if(offset){payload['offset']=offset;} +if(orderType){payload['orderType']=orderType;} +return http.get(path,{'content-type':'application/json'},payload);},createUser:function(email,password,name=''){if(email===undefined){throw new Error('Missing required parameter: "email"');} if(password===undefined){throw new Error('Missing required parameter: "password"');} -let path='/users';return http.post(path,{'content-type':'application/json'},{'email':email,'password':password,'name':name});},getUser:function(userId){if(userId===undefined){throw new Error('Missing required parameter: "userId"');} -let path='/users/{userId}'.replace(new RegExp('{userId}','g'),userId);return http.get(path,{'content-type':'application/json'},{});},getUserLogs:function(userId){if(userId===undefined){throw new Error('Missing required parameter: "userId"');} -let path='/users/{userId}/logs'.replace(new RegExp('{userId}','g'),userId);return http.get(path,{'content-type':'application/json'},{});},getUserPrefs:function(userId){if(userId===undefined){throw new Error('Missing required parameter: "userId"');} -let path='/users/{userId}/prefs'.replace(new RegExp('{userId}','g'),userId);return http.get(path,{'content-type':'application/json'},{});},getUserSessions:function(userId){if(userId===undefined){throw new Error('Missing required parameter: "userId"');} -let path='/users/{userId}/sessions'.replace(new RegExp('{userId}','g'),userId);return http.get(path,{'content-type':'application/json'},{});},deleteUserSessions:function(userId){if(userId===undefined){throw new Error('Missing required parameter: "userId"');} -let path='/users/{userId}/sessions'.replace(new RegExp('{userId}','g'),userId);return http.delete(path,{'content-type':'application/json'},{});},deleteUsersSession:function(userId,sessionId){if(userId===undefined){throw new Error('Missing required parameter: "userId"');} +let path='/users';let payload={};if(email){payload['email']=email;} +if(password){payload['password']=password;} +if(name){payload['name']=name;} +return http.post(path,{'content-type':'application/json'},payload);},getUser:function(userId){if(userId===undefined){throw new Error('Missing required parameter: "userId"');} +let path='/users/{userId}'.replace(new RegExp('{userId}','g'),userId);let payload={};return http.get(path,{'content-type':'application/json'},payload);},getUserLogs:function(userId){if(userId===undefined){throw new Error('Missing required parameter: "userId"');} +let path='/users/{userId}/logs'.replace(new RegExp('{userId}','g'),userId);let payload={};return http.get(path,{'content-type':'application/json'},payload);},getUserPrefs:function(userId){if(userId===undefined){throw new Error('Missing required parameter: "userId"');} +let path='/users/{userId}/prefs'.replace(new RegExp('{userId}','g'),userId);let payload={};return http.get(path,{'content-type':'application/json'},payload);},updateUserPrefs:function(userId,prefs){if(userId===undefined){throw new Error('Missing required parameter: "userId"');} +if(prefs===undefined){throw new Error('Missing required parameter: "prefs"');} +let path='/users/{userId}/prefs'.replace(new RegExp('{userId}','g'),userId);let payload={};if(prefs){payload['prefs']=prefs;} +return http.patch(path,{'content-type':'application/json'},payload);},getUserSessions:function(userId){if(userId===undefined){throw new Error('Missing required parameter: "userId"');} +let path='/users/{userId}/sessions'.replace(new RegExp('{userId}','g'),userId);let payload={};return http.get(path,{'content-type':'application/json'},payload);},deleteUserSessions:function(userId){if(userId===undefined){throw new Error('Missing required parameter: "userId"');} +let path='/users/{userId}/sessions'.replace(new RegExp('{userId}','g'),userId);let payload={};return http.delete(path,{'content-type':'application/json'},payload);},deleteUserSession:function(userId,sessionId){if(userId===undefined){throw new Error('Missing required parameter: "userId"');} if(sessionId===undefined){throw new Error('Missing required parameter: "sessionId"');} -let path='/users/{userId}/sessions/:session'.replace(new RegExp('{userId}','g'),userId);return http.delete(path,{'content-type':'application/json'},{'sessionId':sessionId});},updateUserStatus:function(userId,status){if(userId===undefined){throw new Error('Missing required parameter: "userId"');} +let path='/users/{userId}/sessions/:session'.replace(new RegExp('{userId}','g'),userId);let payload={};if(sessionId){payload['sessionId']=sessionId;} +return http.delete(path,{'content-type':'application/json'},payload);},updateUserStatus:function(userId,status){if(userId===undefined){throw new Error('Missing required parameter: "userId"');} if(status===undefined){throw new Error('Missing required parameter: "status"');} -let path='/users/{userId}/status'.replace(new RegExp('{userId}','g'),userId);return http.patch(path,{'content-type':'application/json'},{'status':status});}};return{setEndpoint:setEndpoint,setProject:setProject,setKey:setKey,setLocale:setLocale,setMode:setMode,account:account,auth:auth,avatars:avatars,database:database,locale:locale,projects:projects,storage:storage,teams:teams,users:users};};})(window);(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Chart=f()}})(function(){var define,module,exports;return(function(){function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;oelement.trim()):[];failure=failure&&failure!=""?failure.split(",").map(element=>element.trim()):[];if(debug) console.log("%c[service init]: "+action+" ("+service+")","color:red");let callbacks={reset:function(){return function(){if("FORM"===element.tagName){return element.reset();} -throw new Error("This callback is only valid for forms");};},alert:function(text,classname){return function(alerts){alerts.add({text:text,class:classname||"success"},3000);};},redirect:function(url){return function(router){router.change(url||"/");};},reload:function(){return function(router){router.reload();};},state:function(keys){let updateQueryString=function(key,value,url){var re=new RegExp("([?&])"+key+"=.*?(&|#|$)(.*)","gi"),hash;if(re.test(url)){if(typeof value!=="undefined"&&value!==null){return url.replace(re,"$1"+key+"="+value+"$2$3");}else{hash=url.split("#");url=hash[0].replace(re,"$1$3").replace(/(&|\?)$/,"");if(typeof hash[1]!=="undefined"&&hash[1]!==null){url+="#"+hash[1];} +throw new Error("This callback is only valid for forms");};},alert:function(text,classname){return function(alerts){alerts.add({text:text,class:classname||"success"},3000);};},redirect:function(url){return function(router){window.location=url||"/";};},reload:function(){return function(router){router.reload();};},state:function(keys){let updateQueryString=function(key,value,url){var re=new RegExp("([?&])"+key+"=.*?(&|#|$)(.*)","gi"),hash;if(re.test(url)){if(typeof value!=="undefined"&&value!==null){return url.replace(re,"$1"+key+"="+value+"$2$3");}else{hash=url.split("#");url=hash[0].replace(re,"$1$3").replace(/(&|\?)$/,"");if(typeof hash[1]!=="undefined"&&hash[1]!==null){url+="#"+hash[1];} return url;}}else{if(typeof value!=="undefined"&&value!==null){var separator=url.indexOf("?")!==-1?"&":"?";hash=url.split("#");url=hash[0]+separator+key+"="+value;if(typeof hash[1]!=="undefined"&&hash[1]!==null){url+="#"+hash[1];} return url;}else{return url;}}};keys=keys.split(",").map(element=>element.trim());return function(serviceForm,router,window){let url=window.location.href;keys.map(node=>{node=node.split("=");let key=node[0]||"";let name=node[1]||key;let value=getValue(key,"param",serviceForm);url=updateQueryString(name,value?value:null,url);});if(url!==window.location.href){window.history.pushState({},"",url);router.reset();}};},trigger:function(events){return function(document){events=events.trim().split(",");for(let i=0;i*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-square{height:0;overflow:hidden;padding-top:56%;position:relative;width:100%}.ratio-square>*{position:absolute;top:0;left:0;width:100%;height:100%}.clear:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}*{font-family:Poppins,sans-serif,Arial;-webkit-font-smoothing:antialiased;font-weight:300}h1,h2,h3,h4,h5,h6{margin:0}h4,h5,h6{font-weight:400}.link,a{color:#1e849e;text-decoration:none;border-left:2px solid transparent;border-right:2px solid transparent;border-bottom:solid 1px transparent}.link:hover,a:hover{border-bottom:dotted 1px #1e849e}.link.disabled,a.disabled{opacity:.5}.link.disabled:hover,a.disabled:hover{border-bottom:none}.link.tag:hover,a.tag:hover{border-bottom:none;opacity:.9}b,strong{font-weight:500}p{margin:0 0 20px 0;line-height:26px}small{font-size:16px;color:#818181}.text-size-small{font-size:13px}.text-size-normal{font-size:16px}.text-one-liner{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.text-bold{font-weight:400!important}.text-danger{color:#f53d3d}.text-success{color:#1bbf61}.text-upper{text-transform:uppercase}.text-warning{color:#ffed4d}.text-focus{color:#f02e65}.text-fade{color:#818181}.text-disclaimer{font-size:11px;color:#818181}.text-fade-extra{color:#818181;opacity:.5}.text-line-high-large{line-height:30px}.text-line-high-xl{line-height:40px}.text-sign{margin:5px 0;font-size:25px;width:25px;height:25px;line-height:25px;display:inline-block}.text-align-center{text-align:center}.text-align-start{text-align:left}.text-align-end{text-align:right}.text-align-left{text-align:left}.text-align-right{text-align:right}.text-dir-ltr{direction:ltr;display:inline-block}.text-dir-rtl{direction:rtl;display:inline-block}.icon-dot-3:before{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-o-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}table{width:calc(100% + 60px);border-collapse:collapse;margin:-30px;border-radius:10px;overflow:hidden;position:relative;table-layout:fixed}table thead{box-shadow:0 0 2px rgba(0,0,0,.25);border-bottom:solid 1px #f1f3f5;font-size:14px}table thead th{position:sticky;top:0}table.small{font-size:14px}table.open-end tbody tr:last-child{border-bottom:none;font-weight:700;background:#f7fbf7}table.full tbody td,table.full tbody th{vertical-align:top;white-space:normal;overflow:auto;line-height:24px;padding-top:20px;padding-bottom:20px;height:auto}table .avatar{width:30px;height:30px}table tr{border-bottom:solid 1px #f1f3f5}table tr:last-child{border-bottom:none}table tr:nth-child(even){background:#fbfbfb}table th{text-align:left;font-weight:400}table th i{color:#818181;font-size:10px;display:inline-block;vertical-align:top;line-height:16px;padding:0 3px}table td,table th{height:65px;padding:0 15px;line-height:50px}table td:first-child,table th:first-child{padding-left:30px}table td:last-child,table th:last-child{padding-right:30px}@media only screen and (max-width:550px){table td:first-child,table th:first-child{width:auto}}table td,table th{overflow:hidden;white-space:nowrap}@media only screen and (max-width:550px),only screen and (min-width:551px) and (max-width:970px){table.vertical{display:block;overflow:hidden;padding-top:12px}table.vertical .hide{display:none}table.vertical tbody,table.vertical td,table.vertical th,table.vertical thead,table.vertical tr{width:100%;display:block}table.vertical th,table.vertical tr{padding-top:12px;padding-bottom:12px}table.vertical th:first-child,table.vertical tr:first-child{padding-top:0}table.vertical td,table.vertical th{padding:5px 20px!important;text-overflow:ellipsis;white-space:normal;height:40px;line-height:40px}table.vertical td:first-child,table.vertical td:last-child,table.vertical th:first-child,table.vertical th:last-child{padding:0 10px}table.vertical td:last-child,table.vertical th:last-child{padding-bottom:0}table.vertical td p,table.vertical th p{display:inline-block;width:calc(100% - 40px)}table.vertical td:before{content:attr(data-title);margin-right:4px;font-weight:400}table.vertical thead{display:none}}.zone{max-width:910px;margin:0 auto 40px auto}.zone.xxxl{max-width:calc(100% - 100px)}@media only screen and (max-width:550px),only screen and (min-width:551px) and (max-width:970px){.zone.xxxl{max-width:100%}}.zone.xxl{max-width:1100px}.zone.xl{max-width:910px}.zone.large{max-width:700px}.zone.medium{max-width:550px}.zone.small{max-width:320px}.row{position:relative;margin:0 -50px;padding-left:50px}@media only screen and (max-width:550px),only screen and (min-width:551px) and (max-width:970px){.row{margin:0 -30px;padding-left:30px}}.row.force-ltr>.col{float:left}.row.force-rtl>.col{float:right}.row.force-reverse>.col{float:right}.row.wide{margin:0 -100px;padding-left:100px}.row.wide>.span-1{width:calc(8.33333333% * 1 - 100px);box-sizing:content-box;padding-right:100px}.row.wide>.span-2{width:calc(8.33333333% * 2 - 100px);box-sizing:content-box;padding-right:100px}.row.wide>.span-3{width:calc(8.33333333% * 3 - 100px);box-sizing:content-box;padding-right:100px}.row.wide>.span-4{width:calc(8.33333333% * 4 - 100px);box-sizing:content-box;padding-right:100px}.row.wide>.span-5{width:calc(8.33333333% * 5 - 100px);box-sizing:content-box;padding-right:100px}.row.wide>.span-6{width:calc(8.33333333% * 6 - 100px);box-sizing:content-box;padding-right:100px}.row.wide>.span-7{width:calc(8.33333333% * 7 - 100px);box-sizing:content-box;padding-right:100px}.row.wide>.span-8{width:calc(8.33333333% * 8 - 100px);box-sizing:content-box;padding-right:100px}.row.wide>.span-9{width:calc(8.33333333% * 9 - 100px);box-sizing:content-box;padding-right:100px}.row.wide>.span-10{width:calc(8.33333333% * 10 - 100px);box-sizing:content-box;padding-right:100px}.row.wide>.span-11{width:calc(8.33333333% * 11 - 100px);box-sizing:content-box;padding-right:100px}.row.wide>.span-12{width:calc(8.33333333% * 12 - 100px);box-sizing:content-box;padding-right:100px}.row.thin{margin:0 -20px;padding-left:20px}.row.thin>.span-1{width:calc(8.33333333% * 1 - 20px);box-sizing:content-box;padding-right:20px}.row.thin>.span-2{width:calc(8.33333333% * 2 - 20px);box-sizing:content-box;padding-right:20px}.row.thin>.span-3{width:calc(8.33333333% * 3 - 20px);box-sizing:content-box;padding-right:20px}.row.thin>.span-4{width:calc(8.33333333% * 4 - 20px);box-sizing:content-box;padding-right:20px}.row.thin>.span-5{width:calc(8.33333333% * 5 - 20px);box-sizing:content-box;padding-right:20px}.row.thin>.span-6{width:calc(8.33333333% * 6 - 20px);box-sizing:content-box;padding-right:20px}.row.thin>.span-7{width:calc(8.33333333% * 7 - 20px);box-sizing:content-box;padding-right:20px}.row.thin>.span-8{width:calc(8.33333333% * 8 - 20px);box-sizing:content-box;padding-right:20px}.row.thin>.span-9{width:calc(8.33333333% * 9 - 20px);box-sizing:content-box;padding-right:20px}.row.thin>.span-10{width:calc(8.33333333% * 10 - 20px);box-sizing:content-box;padding-right:20px}.row.thin>.span-11{width:calc(8.33333333% * 11 - 20px);box-sizing:content-box;padding-right:20px}.row.thin>.span-12{width:calc(8.33333333% * 12 - 20px);box-sizing:content-box;padding-right:20px}.row:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.row .col{float:left;box-sizing:border-box}.row .col.sticky-top{position:sticky;top:0}.row .col.sticky-bottom{position:sticky;bottom:0}.row .span-1{width:calc(8.33333333% * 1 - 40px);box-sizing:content-box;padding-right:40px}.row .span-2{width:calc(8.33333333% * 2 - 40px);box-sizing:content-box;padding-right:40px}.row .span-3{width:calc(8.33333333% * 3 - 40px);box-sizing:content-box;padding-right:40px}.row .span-4{width:calc(8.33333333% * 4 - 40px);box-sizing:content-box;padding-right:40px}.row .span-5{width:calc(8.33333333% * 5 - 40px);box-sizing:content-box;padding-right:40px}.row .span-6{width:calc(8.33333333% * 6 - 40px);box-sizing:content-box;padding-right:40px}.row .span-7{width:calc(8.33333333% * 7 - 40px);box-sizing:content-box;padding-right:40px}.row .span-8{width:calc(8.33333333% * 8 - 40px);box-sizing:content-box;padding-right:40px}.row .span-9{width:calc(8.33333333% * 9 - 40px);box-sizing:content-box;padding-right:40px}.row .span-10{width:calc(8.33333333% * 10 - 40px);box-sizing:content-box;padding-right:40px}.row .span-11{width:calc(8.33333333% * 11 - 40px);box-sizing:content-box;padding-right:40px}.row .span-12{width:calc(8.33333333% * 12 - 40px);box-sizing:content-box;padding-right:40px}@media only screen and (max-width:550px),only screen and (min-width:551px) and (max-width:970px){.row.responsive{width:100%;padding:0;margin:0}.row.responsive>.span-1,.row.responsive>.span-10,.row.responsive>.span-11,.row.responsive>.span-12,.row.responsive>.span-2,.row.responsive>.span-3,.row.responsive>.span-4,.row.responsive>.span-5,.row.responsive>.span-6,.row.responsive>.span-7,.row.responsive>.span-8,.row.responsive>.span-9{width:calc(8.33333333% * 12 - 0px)!important;box-sizing:content-box!important;padding-right:0!important;width:100%!important}}.tiles{position:relative}.tiles:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.tiles li{margin-right:50px!important;float:left;width:calc(33% - 33px)}.tiles li .photo-title{width:calc(100% + 30px);height:15px;margin:-15px -15px 10px -15px;border-radius:10px 10px 0 0;background:#f1f3f5;border-bottom:solid 1px #f1f3f5}.tiles li:nth-child(3n){margin-right:0!important}@media only screen and (max-width:550px){.tiles li{width:100%;margin-right:0!important}}@font-face{font-family:fontello;src:url(data:application/octet-stream;base64,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) format('woff'),url(data:application/octet-stream;base64,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b250ZWxsby5jb20AQwBvAHAAeQByAGkAZwBoAHQAIAAoAEMAKQAgADIAMAAxADkAIABiAHkAIABvAHIAaQBnAGkAbgBhAGwAIABhAHUAdABoAG8AcgBzACAAQAAgAGYAbwBuAHQAZQBsAGwAbwAuAGMAbwBtAGYAbwBuAHQAZQBsAGwAbwBSAGUAZwB1AGwAYQByAGYAbwBuAHQAZQBsAGwAbwBmAG8AbgB0AGUAbABsAG8AVgBlAHIAcwBpAG8AbgAgADEALgAwAGYAbwBuAHQAZQBsAGwAbwBHAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAHMAdgBnADIAdAB0AGYAIABmAHIAbwBtACAARgBvAG4AdABlAGwAbABvACAAcAByAG8AagBlAGMAdAAuAGgAdAB0AHAAOgAvAC8AZgBvAG4AdABlAGwAbABvAC4AYwBvAG0AAAAAAgAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAQIBAwEEAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgETARQBFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBKgErASwBLQEuAS8BMAExATIBMwE0ATUBNgE3ATgBOQE6ATsBPAE9AT4BPwFAAUEBQgFDAUQBRQFGAUcBSAFJAUoBSwFMAU0BTgFPAVABUQFSAVMBVAFVAVYBVwFYAVkBWgFbAVwBXQFeAV8BYAFhAWIBYwFkAWUABHVzZXIGZm9sZGVyBGxpc3QFbG9naW4DY29nB3R3aXR0ZXILYXJ0aWNsZS1hbHQGY2FuY2VsBGhvbWUIZG93bi1kaXIIZmFjZWJvb2sIYXN0ZXJpc2sGdXBsb2FkCXN0b3B3YXRjaAZleHBvcnQFaGVhcnQEcGx1cwZ1cC1kaXIEbWVudQlsZWZ0LW9wZW4KcmlnaHQtb3BlbgVpbmJveAZ3cmVuY2gHY29tbWVudA1zdGFja292ZXJmbG93CHF1ZXN0aW9uCm9rLWNpcmNsZWQHd2FybmluZwRtYWlsBGxpbmsHa2V5LWludgV0cmFzaAhkb3dubG9hZAdnbGFzc2VzBnFyY29kZQdzaHVmZmxlA2V5ZQRsb2NrBnNlYXJjaARiZWxsBXVzZXJzCGxvY2F0aW9uCWJyaWVmY2FzZQlp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) format('truetype')}[class*=" icon-"]:before,[class^=icon-]:before{font-family:fontello;font-style:normal;font-weight:400;display:inline-block;text-decoration:inherit;width:1em;margin-right:.2em;text-align:center;font-variant:normal;text-transform:none;line-height:1em;margin-left:.2em}.icon-user:before{content:'\e800'}.icon-folder:before{content:'\e801'}.icon-list:before{content:'\e802'}.icon-login:before{content:'\e803'}.icon-cog:before{content:'\e804'}.icon-twitter:before{content:'\e805'}.icon-article-alt:before{content:'\e806'}.icon-cancel:before{content:'\e807'}.icon-home:before{content:'\e808'}.icon-down-dir:before{content:'\e809'}.icon-facebook:before{content:'\e80a'}.icon-asterisk:before{content:'\e80b'}.icon-upload:before{content:'\e80c'}.icon-stopwatch:before{content:'\e80d'}.icon-export:before{content:'\e80e'}.icon-heart:before{content:'\e80f'}.icon-plus:before{content:'\e810'}.icon-up-dir:before{content:'\e811'}.icon-menu:before{content:'\e812'}.icon-left-open:before{content:'\e813'}.icon-right-open:before{content:'\e814'}.icon-inbox:before{content:'\e815'}.icon-wrench:before{content:'\e816'}.icon-comment:before{content:'\e817'}.icon-stackoverflow:before{content:'\e818'}.icon-question:before{content:'\e819'}.icon-ok-circled:before{content:'\e81a'}.icon-warning:before{content:'\e81b'}.icon-mail:before{content:'\e81c'}.icon-link:before{content:'\e81d'}.icon-key-inv:before{content:'\e81e'}.icon-trash:before{content:'\e81f'}.icon-download:before{content:'\e820'}.icon-glasses:before{content:'\e821'}.icon-qrcode:before{content:'\e822'}.icon-shuffle:before{content:'\e823'}.icon-eye:before{content:'\e824'}.icon-lock:before{content:'\e825'}.icon-search:before{content:'\e826'}.icon-bell:before{content:'\e827'}.icon-users:before{content:'\e828'}.icon-location:before{content:'\e829'}.icon-briefcase:before{content:'\e82a'}.icon-instagram:before{content:'\e82b'}.icon-clock:before{content:'\e82c'}.icon-phone:before{content:'\e82d'}.icon-calendar:before{content:'\e82e'}.icon-print:before{content:'\e82f'}.icon-edit:before{content:'\e830'}.icon-bold:before{content:'\e831'}.icon-italic:before{content:'\e832'}.icon-rocket:before{content:'\e833'}.icon-whatsapp:before{content:'\e834'}.icon-dot-3:before{content:'\e835'}.icon-info-circled:before{content:'\e836'}.icon-videocam:before{content:'\e837'}.icon-quote-right:before{content:'\e838'}.icon-picture:before{content:'\e839'}.icon-palette:before{content:'\e83a'}.icon-lamp:before{content:'\e83b'}.icon-book-open:before{content:'\e83c'}.icon-ok:before{content:'\e83d'}.icon-chat-alt:before{content:'\e83e'}.icon-archive:before{content:'\e83f'}.icon-play:before{content:'\e840'}.icon-pause:before{content:'\e841'}.icon-down-open:before{content:'\e842'}.icon-up-open:before{content:'\e843'}.icon-minus:before{content:'\e844'}.icon-exchange:before{content:'\e845'}.icon-network:before{content:'\e846'}.icon-link-ext:before{content:'\f08e'}.icon-github-circled:before{content:'\f09b'}.icon-filter:before{content:'\f0b0'}.icon-docs:before{content:'\f0c5'}.icon-list-bullet:before{content:'\f0ca'}.icon-list-numbered:before{content:'\f0cb'}.icon-underline:before{content:'\f0cd'}.icon-sort:before{content:'\f0dc'}.icon-linkedin:before{content:'\f0e1'}.icon-smile:before{content:'\f118'}.icon-keyboard:before{content:'\f11c'}.icon-code:before{content:'\f121'}.icon-shield:before{content:'\f132'}.icon-bitbucket:before{content:'\f171'}.icon-windows:before{content:'\f17a'}.icon-wheelchair:before{content:'\f193'}.icon-bank:before{content:'\f19c'}.icon-google:before{content:'\f1a0'}.icon-building-filled:before{content:'\f1ad'}.icon-database:before{content:'\f1c0'}.icon-lifebuoy:before{content:'\f1cd'}.icon-header:before{content:'\f1dc'}.icon-binoculars:before{content:'\f1e5'}.icon-chart-area:before{content:'\f1fe'}.icon-pinterest:before{content:'\f231'}.icon-medium:before{content:'\f23a'}.icon-gitlab:before{content:'\f296'}.icon-telegram:before{content:'\f2c6'}.datalist-polyfill{list-style:none;display:none;background:#fff;box-shadow:0 2px 2px #999;position:absolute;left:0;top:0;margin:0;padding:0;max-height:300px;overflow-y:auto}.datalist-polyfill:empty{display:none!important}.datalist-polyfill>li{padding:3px;font:13px "Lucida Grande",Sans-Serif}.datalist-polyfill__active{background:#3875d7;color:#fff}date-input-polyfill{z-index:1000!important;max-width:320px!important;width:320px!important}date-input-polyfill .monthSelect-wrapper,date-input-polyfill .yearSelect-wrapper{height:50px;line-height:50px;padding:0;width:40%!important;margin-bottom:10px!important}date-input-polyfill .monthSelect-wrapper select,date-input-polyfill .yearSelect-wrapper select{padding:0 12px;height:50px;line-height:50px;box-sizing:border-box}date-input-polyfill .yearSelect-wrapper{width:35%!important}date-input-polyfill table{width:100%!important;max-width:100%!important;padding:0 12px 12px 12px!important;box-sizing:border-box;margin:0}date-input-polyfill table td:first-child,date-input-polyfill table td:last-child,date-input-polyfill table th:first-child,date-input-polyfill table th:last-child{width:32px!important;padding:4px!important}date-input-polyfill select{margin-bottom:10px}date-input-polyfill button{width:25%!important;height:50px!important;line-height:50px!important;margin-bottom:10px!important;background:inherit;position:relative;color:inherit;padding:inherit;box-sizing:inherit;border-radius:inherit;font-size:inherit;box-shadow:none;border:none;border-bottom:none!important}::placeholder{color:#868686;text-align:left}::-webkit-input-placeholder{text-align:left}input:-moz-placeholder{text-align:left}.button,button{display:inline-block;background:#f02e65;border-radius:26px;border:none;color:#fff;height:52px;line-height:52px;padding:0 25px;cursor:pointer;font-size:16px;box-sizing:border-box;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.button:focus,.button:hover,button:focus,button:hover{background:#c52653;border-bottom:none}.button.fly,button.fly{position:fixed;z-index:2;bottom:30px;right:30px}.button.fill,button.fill{display:block;width:100%;text-align:center;padding:0 10px!important}.button.fill-aligned,button.fill-aligned{display:block;width:100%;text-align:left;padding:0 20px!important}.button.icon,button.icon{padding-right:30px!important}.button.icon-reduce,button.icon-reduce{padding-left:15px!important}.button.reverse,button.reverse{background:0 0;height:50px;line-height:48px;padding:0 23px;color:#f02e65;border:solid 2px #f02e65}.button.reverse:focus,.button.reverse:hover,button.reverse:focus,button.reverse:hover{color:#c52653;border-color:#c52653}.button.round,button.round{width:52px;padding:0}.button.round.small,button.round.small{font-size:12px;width:30px;height:30px;line-height:30px}.button.white,button.white{background:#fff;color:#f02e65}.button.white.reverse,button.white.reverse{color:#fff;background:0 0;border:solid 2px #fff}.button.trans,button.trans{background:0 0!important}.button.trans.reverse,button.trans.reverse{background:0 0!important}.button.success,button.success{background:#1bbf61}.button.success.reverse,button.success.reverse{color:#1bbf61;background:#fff;border:solid 2px #1bbf61}.button.danger,button.danger{background:#f53d3d}.button.danger.reverse,button.danger.reverse{color:#f53d3d;background:#fff;border:solid 2px #f53d3d}.button .disabled,.button.disabled,.button:disabled,button .disabled,button.disabled,button:disabled{background:#818181;cursor:default}.button.link,button.link{background:0 0;border-radius:0;color:#1e849e;height:auto;line-height:normal;padding:0;padding-right:0!important}.button.link:hover,button.link:hover{border-bottom:dotted 1px #1e849e}.button.link:focus,button.link:focus{box-shadow:inherit}.button.strip,button.strip{background:0 0;height:auto;line-height:16px;color:inherit;padding:0 5px}.button.facebook,button.facebook{color:#fff!important;background:#4070b4!important}.button.twitter,button.twitter{color:#fff!important;background:#56c2ea!important}.button.linkedin,button.linkedin{color:#fff!important;background:#0076b5!important}.button.github,button.github{color:#fff!important;background:#7e7c7c!important}.button:focus,button:focus{outline:0}label{margin-bottom:15px;display:block;line-height:normal}.input,input[type=date],input[type=datetime-local],input[type=email],input[type=file],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=url],select,textarea{-webkit-appearance:none;-moz-appearance:none;-webkit-transform:translateZ(0);box-sizing:content-box;height:40px;line-height:40px;border:solid 1px #e2e2e2;border-radius:10px;padding:5px 15px;font-size:16px;display:block;width:calc(100% - 32px);margin-bottom:30px}.input[type=file],input[type=date][type=file],input[type=datetime-local][type=file],input[type=email][type=file],input[type=file][type=file],input[type=number][type=file],input[type=password][type=file],input[type=search][type=file],input[type=tel][type=file],input[type=text][type=file],input[type=url][type=file],select[type=file],textarea[type=file]{line-height:0;padding:15px;height:auto}.input[xtype=file],input[type=date][xtype=file],input[type=datetime-local][xtype=file],input[type=email][xtype=file],input[type=file][xtype=file],input[type=number][xtype=file],input[type=password][xtype=file],input[type=search][xtype=file],input[type=tel][xtype=file],input[type=text][xtype=file],input[type=url][xtype=file],select[xtype=file],textarea[xtype=file]{line-height:normal;height:auto;border:none;position:absolute;top:0;left:0;bottom:0;opacity:0;cursor:pointer;padding:0;margin:0;font-size:0;width:100%}.input[xtype=file]:disabled,input[type=date][xtype=file]:disabled,input[type=datetime-local][xtype=file]:disabled,input[type=email][xtype=file]:disabled,input[type=file][xtype=file]:disabled,input[type=number][xtype=file]:disabled,input[type=password][xtype=file]:disabled,input[type=search][xtype=file]:disabled,input[type=tel][xtype=file]:disabled,input[type=text][xtype=file]:disabled,input[type=url][xtype=file]:disabled,select[xtype=file]:disabled,textarea[xtype=file]:disabled{opacity:0!important}.input:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=email]:focus,input[type=file]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=url]:focus,select:focus,textarea:focus{outline:0;border-color:#b3d7fd}.input:disabled,input[type=date]:disabled,input[type=datetime-local]:disabled,input[type=email]:disabled,input[type=file]:disabled,input[type=number]:disabled,input[type=password]:disabled,input[type=search]:disabled,input[type=tel]:disabled,input[type=text]:disabled,input[type=url]:disabled,select:disabled,textarea:disabled{background:#f1f3f5}.input.strip,input[type=date].strip,input[type=datetime-local].strip,input[type=email].strip,input[type=file].strip,input[type=number].strip,input[type=password].strip,input[type=search].strip,input[type=tel].strip,input[type=text].strip,input[type=url].strip,select.strip,textarea.strip{border:none;border-radius:0;padding:5px 0;width:100%;background-color:transparent;background-position:right 2px top 50%;border-bottom:solid 1px #e2e2e2;color:#868686}.input.strip:focus,input[type=date].strip:focus,input[type=datetime-local].strip:focus,input[type=email].strip:focus,input[type=file].strip:focus,input[type=number].strip:focus,input[type=password].strip:focus,input[type=search].strip:focus,input[type=tel].strip:focus,input[type=text].strip:focus,input[type=url].strip:focus,select.strip:focus,textarea.strip:focus{border-color:#b3d7fd}input[type=email],input[type=url]{direction:ltr}input[type=email]::placeholder,input[type=url]::placeholder{text-align:left;direction:ltr}select{background:0 0;-webkit-appearance:none;background-image:url("data:image/svg+xml;utf8,");background-position:right 15px top 50%;background-repeat:no-repeat;background-color:#fff;width:calc(100% - 62px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-right:45px}select:-webkit-autofill{background-image:url("data:image/svg+xml;utf8,")!important;background-position:100% 50%!important;background-repeat:no-repeat!important}input[type=search],input[type=search].strip{background:0 0;-webkit-appearance:none;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAdZJREFUWIXt1s2LjWEYBvDfnDMzFpNIamZIFrMiJYMyFmKhZKfOwoiFr2LFn2BByG6WVrKwMcjWxgoLIlKIUk6RrzAjZWZ8LO731FlwvB+PUbjq6X0X7/VeV/d9P9fz8IdRL8Hpw3x8w0xaOz9GNxq4gJeZcGs1cRab0fU7xLfgMSYzoT3YgNXYhIO4iM+4iTWphGs4jikcFSXvhEGczr4/UFW8C2N4jXUFudvwCYeqGNgnSr6yJH8rpkWLCqMfE9hdUryFE3iC3qLEk7ij+kT34Q32FiHV8Qr7K4q3cArXihCGxd5elMjARnzBvE4f1dreV+AtnicycC/7/7K8BhaIvqXCO3zFwrwGZtCT0EAtW9N5DTSxWGR/CizNns/yEgbFEK5NZGCnaEPHE7e9Ai9wA6OJDIzistgJubFdxHB/RfFVYgCHixJruI5x5dNwDm6J47sUhkTvjpUw0Y1zeOrXR3hHjOA9zmBuTs4Arog4/yhuUZWwHPdFMh7280BZgiP4ILJ/UuymqRQmejPxphiquzgvKnMJDzOxB9glZqiRiecykbfHdawX98EhcdxO4BGu4nYm2EJDzEKPSMIdYrBnFYUq8d/EP2di1gey3cS4ErflvxffASbhcakIINaMAAAAAElFTkSuQmCC);background-position:left 15px top 50%;background-repeat:no-repeat;background-size:20px 20px;width:calc(100% - 60px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-left:45px}select[multiple]{min-height:75px;padding:5px 10px!important;padding-right:50px!important}select[multiple] option{padding:10px 4px;border-bottom:solid 1px #f1f1f1}select[multiple] option:last-child{border-bottom:none}textarea{min-height:75px;resize:vertical;line-height:32px;padding:5px 15px}textarea.tall{min-height:180px}fieldset{border:none;margin:0;padding:0}.counter{font-size:13px;float:right;margin-top:-20px}.file-preview{background:#fff url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAIElEQVQoU2NkYGAwZsAEZ9GFGIeIQix+wfQgyDODXSEAcUwGCrDSHgkAAAAASUVORK5CYII=)!important;border:solid 1px #e2e2e2;box-shadow:inset 0 0 3px #a0a0a0;border-radius:8px;width:calc(100% - 2px);max-height:180px;visibility:visible!important}.video-preview{padding-top:56%;position:relative;border-radius:10px;background:#e7e7e7;overflow:hidden;margin:0}.video-preview iframe{position:absolute;top:0;width:100%;height:100%;border:none}.map-preview{padding-top:50%;position:relative;margin-bottom:10px;border-radius:10px;background:#e7e7e7;overflow:hidden;box-shadow:0 0 30px rgba(218,218,218,.5)}.map-preview iframe{position:absolute;top:0;width:100%;height:100%;border:none}.tooltip{position:relative}.tooltip.large:hover:after{white-space:normal;width:280px}.tooltip:hover:after{white-space:nowrap;background:#333;border-radius:5px;bottom:26px;color:#fff;content:attr(data-tooltip);padding:5px 15px;position:absolute;font-size:13px;line-height:20px;z-index:98;left:20%;margin-left:-30px}.tooltip:hover:before{border:solid;border-color:#333 transparent;border-width:6px 6px 0 6px;bottom:20px;content:"";position:absolute;z-index:99;left:5px}.tooltip.down:hover:after{top:26px;bottom:inherit}.tooltip.down:hover:before{top:20px;border-width:0 6px 6px 6px;bottom:inherit}.tag{display:inline-block;background:#e7e7e7;color:#868686;border-radius:12px;line-height:24px;padding:0 8px;font-size:12px;box-shadow:none!important;border:none;height:auto;width:auto;white-space:nowrap;text-overflow:ellipsis}.tag:hover{border:none}.tag.green{background:#1bbf61;color:#fff}.tag.red{background:#f53d3d;color:#fff}.tag.yellow{background:#ffe28b;color:#494949}.tag.focus{background:#f02e65;color:#fff}.tag.dark{background:#6f6f6f;color:#e7e7e7}.tag.blue{background:#4abde8;color:#fff}.tag.link{background:#1e849e;color:#fff}input[type=checkbox]{width:26px;height:16px;position:relative;-webkit-appearance:none;border-radius:0;border:none;background:0 0;vertical-align:middle}input[type=checkbox]:after{content:"";display:block;width:20px;height:20px;background:#fff;top:-5px;border-radius:50%;position:absolute;border:solid 3px #f02e65;vertical-align:middle}input[type=checkbox]:checked:after{text-align:center;font-family:fontello;content:'\e83d';font-size:16px;line-height:20px;color:#fff;background:#f02e65}input[type=checkbox]:focus{outline:0}input[type=checkbox]:focus:after,input[type=checkbox]:hover:after{outline:0;border-color:#000}input[type=checkbox]:checked:focus:after,input[type=checkbox]:checked:hover:after{border-color:#f02e65}.input-copy{position:relative}.input-copy input,.input-copy textarea{padding-right:65px;width:calc(100% - 82px);resize:none}.input-copy .copy{position:absolute;top:0;right:0;border-left:solid 1px #e2e2e2;height:calc(100% - 2px);width:50px;line-height:50px;text-align:center;background:#fbfbfb;margin:1px;border-radius:0 10px 10px 0}.paging{color:#8d8e8e;padding:5px 15px;font-size:12px}.paging form{display:inline-block}.blue-snap iframe{-webkit-appearance:none;-moz-appearance:none;-webkit-transform:translateZ(0);box-sizing:content-box;height:40px;line-height:40px;border:solid 1px #e2e2e2;border-radius:10px;padding:5px 15px;font-size:16px;display:block;width:calc(100% - 32px);margin-bottom:30px;float:none!important;height:40px!important;width:calc(100% - 32px)!important;border:solid 1px #e2e2e2!important;background:0 0!important;position:static!important}.blue-snap iframe[type=file]{line-height:0;padding:15px;height:auto}.blue-snap iframe[xtype=file]{line-height:normal;height:auto;border:none;position:absolute;top:0;left:0;bottom:0;opacity:0;cursor:pointer;padding:0;margin:0;font-size:0;width:100%}.blue-snap iframe[xtype=file]:disabled{opacity:0!important}.blue-snap iframe:focus{outline:0;border-color:#b3d7fd}.blue-snap iframe:disabled{background:#f1f3f5}.blue-snap iframe.strip{border:none;border-radius:0;padding:5px 0;width:100%;background-color:transparent;background-position:right 2px top 50%;border-bottom:solid 1px #e2e2e2;color:#868686}.blue-snap iframe.strip:focus{border-color:#b3d7fd}.blue-snap .error{font-size:12px;margin-top:-25px;color:#f53d3d;height:40px;padding-left:2px}.pell{height:auto;padding-bottom:0;margin-bottom:0;padding-top:0;background:#fff;line-height:normal!important}.pell.hide{padding:0!important;height:1px;min-height:1px;max-height:1px;border:none;box-shadow:none;margin-bottom:20px;opacity:0}.pell [contenteditable=true]:empty:before{content:attr(placeholder);display:block;color:#868686}.pell .pell-actionbar{border-bottom:solid 1px #e7e7e7;margin:0 -15px 15px -15px;padding:10px 15px}.pell .pell-content{min-height:100px;display:block;padding:10px;margin:-10px;cursor:text}.pell .pell-content:focus{outline:0}.pell button{background:inherit;color:inherit;margin:0;padding:0;padding-right:15px;height:40px;line-height:40px;box-shadow:none;cursor:pointer;font-size:13px;border-radius:0}.pell button.pell-button-selected,.pell button:focus,.pell button:hover{color:#1e849e}.pell h1,.pell h2,.pell h3,.pell h4,.pell h5,.pell h6{text-align:inherit;margin-bottom:30px}.pell b,.pell strong{font-weight:700}.pell ol,.pell ul{margin:0 0 20px 0}.pell ol li,.pell ul li{display:list-item!important;list-style:inherit;margin-bottom:10px}.pell ol li p,.pell ul li p{margin:0}.pell ul li{margin:0 20px;display:list-item}label.switch{line-height:42px}input[type=checkbox].switch{width:67px;height:42px;line-height:42px;border-radius:21px;background:#818181;display:block;margin:0;padding:5px;padding-left:30px;padding-right:5px}input[type=checkbox].switch:checked{background:#f02e65;padding-left:5px;padding-right:30px}input[type=checkbox].switch:focus:after,input[type=checkbox].switch:hover:after{background:#fff}input[type=checkbox].switch:after{content:"";display:block;width:32px;height:32px;background:#fff;border-radius:50%;border:none;position:static;top:0}.password-meter{margin:-41px 10px 30px 10px;height:2px;background:0 0;max-width:100%;z-index:2;position:relative}.password-meter.weak{background:#f53d3d}.password-meter.medium{background:#ffed4d}.password-meter.strong{background:#1bbf61}.color-input:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.color-input .color-preview{width:53px;height:53px;float:left;margin-right:10px;background:#000;border-radius:10px;box-shadow:inset 0 0 3px #a0a0a0;position:relative}.color-input .color-preview input{opacity:0;position:absolute;top:0;bottom:0;left:0;right:0;width:100%;height:100%;cursor:pointer}.color-input input{text-transform:uppercase;float:left;width:calc(100% - 95px)}.grecaptcha-badge{box-shadow:none!important;border-radius:10px!important;overflow:hidden!important;background:#4d92df!important;bottom:25px}.grecaptcha-badge:hover{width:256px!important}.back{font-size:15px;line-height:24px;height:24px;margin-left:-15px;margin-top:-25px;margin-bottom:20px}hr{height:1px;background:#eceff1;border:none}.upload{position:relative}.upload:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.upload input{position:absolute;top:0;left:0;opacity:0;cursor:pointer}.upload.single .preview{height:0;position:relative;padding-top:100%;width:100%;margin-bottom:15px!important}.upload.single .preview li{position:absolute;top:0;width:calc(100% - 20px);height:calc(100% - 20px);margin-right:0!important;margin-bottom:0!important}.upload .button{float:left;margin-right:20px!important}.upload .button.disabled,.upload .button.disabled:hover{background:0 0;color:inherit;border-color:inherit}.upload .count{float:left;line-height:52px}.upload .progress{background:#1bbf61;height:6px;border-radius:3px;margin-bottom:15px!important}.upload .preview:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.upload .preview li{float:left;margin-right:20px!important;margin-bottom:15px!important;background:#f1f1f1;width:150px;height:150px;line-height:148px;text-align:center;border-radius:20px;overflow:hidden;position:relative;cursor:pointer;border:solid 10px #f1f1f1}.upload .preview li:hover:before{background:#f02e65}.upload .preview li:before{content:'\e807';font-family:fontello;font-size:12px;position:absolute;width:20px;height:20px;display:block;top:5px;right:5px;text-align:center;line-height:20px;vertical-align:middle;border-radius:50%;background:#484848;color:#fff;z-index:1}.upload .preview li img{vertical-align:middle;max-height:150px;max-width:150px;-webkit-filter:drop-shadow(0 0 6px rgba(0, 0, 0, .3));filter:drop-shadow(0 0 1px rgba(0, 0, 0, .3))}.upload.wide .preview li{height:0;width:100%;position:relative;padding-top:30.547%;background:#e7e7e7;border-radius:10px;overflow:hidden;border:solid 1px #f9f9f9;margin:0}.upload.wide .preview li img{border-radius:10px;position:absolute;top:0;width:100%;display:block;opacity:1;max-width:inherit;max-height:inherit}ol{list-style:none;counter-reset:x-counter;padding:0}ol li{counter-increment:x-counter;line-height:30px;margin-bottom:30px;margin-left:45px}ol li::before{display:inline-block;content:counter(x-counter);color:#f02e65;color:#fff;background:#fff;background:#f02e65;border:solid 2px #f02e65;margin-right:15px;margin-left:-45px;width:26px;height:26px;border-radius:50%;text-align:center;line-height:26px}.required{color:#f53d3d;font-size:8px;position:relative;top:-8px}.drop-list{position:relative;outline:0}.drop-list.open ul{display:block}.drop-list ul{position:relative;background:#fff;border-radius:10px;box-shadow:0 0 3px rgba(0,0,0,.05);padding:30px;display:block;border-bottom:none;box-shadow:0 0 6px rgba(0,0,0,.1);display:none;position:absolute;bottom:calc(100% + 10px);z-index:2;padding:0;left:-10px;max-width:280px;min-width:240px;overflow:hidden}.drop-list ul.padding-small{padding:15px}.drop-list ul.y-scroll{overflow-y:auto}.drop-list ul.danger{background:#f53d3d;color:#fff}.drop-list ul.focus{background:#f02e65;color:#fff}.drop-list ul.focus .button,.drop-list ul.focus button{background:#fff;color:#f02e65}.drop-list ul.warning{background:#ffed4d;color:#2d2d2d}.drop-list ul.warning .button,.drop-list ul.warning button{background:rgba(45,45,45,.8);color:#ffed4d}.drop-list ul>footer{margin:30px -30px -30px -30px;padding:15px 30px;background:#f5f5f5;border:solid 1px #eaeaea;border-radius:0 0 10px 10px}.drop-list ul hr{height:2px;background:#eceff1;border:none;margin:30px -30px}.drop-list ul .header{position:static;height:40px;padding:20px 30px 20px 30px;margin-bottom:30px;margin:-30px -30px 20px -30px;background:#f9f9f9;border-bottom:solid 1px #efefef}.drop-list ul .toggle{position:relative;border-top:2px solid #f6f7f8;border-bottom:2px solid #f6f7f8;margin:0 -30px;padding:30px;height:35px;overflow:hidden}.drop-list ul .toggle button.ls-ui-open{position:absolute;top:0;left:0;width:100%;height:95px;background:0 0;opacity:.5;border-radius:0}.drop-list ul .toggle .icon-minus{display:none}.drop-list ul .toggle .content{display:none}.drop-list ul .toggle.open{height:auto}.drop-list ul .toggle.open .icon-minus{display:block}.drop-list ul .toggle.open .icon-plus{display:none}.drop-list ul .toggle.open .content{display:block}.drop-list ul .list li{border-bottom:solid 2px #f6f7f8;margin:0 -30px 30px -30px;padding:0 30px 30px 30px}.drop-list ul .list li:last-child{padding-bottom:0;margin-bottom:0;border-bottom:none}.drop-list ul.new{text-align:center}.drop-list ul.new i{font-size:80px;line-height:80px;font-family:Poppins,sans-serif;font-style:normal;font-weight:300}.drop-list ul.new b{margin-top:20px;display:block}.drop-list ul:before{border:solid;border-color:#fff transparent;border-width:8px 8px 0 8px;bottom:-8px;content:"";position:absolute;z-index:99;left:30px}.drop-list ul li{border-bottom:solid 1px #f1f3f5;margin:0;padding:0}.drop-list ul li:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.drop-list ul li .link,.drop-list ul li a{vertical-align:middle;height:30px;line-height:30px;display:block;padding:10px 25px;color:inherit;font-size:14px;border:none;max-width:260px;cursor:pointer}.drop-list ul li .link:hover,.drop-list ul li a:hover{background:#f1f3f5;border-color:transparent}.drop-list ul li.disabled .link:hover,.drop-list ul li.disabled a:hover{background:0 0}.drop-list ul li .avatar{width:30px;height:30px;margin-right:10px;float:left}.drop-list ul li:last-child{border-bottom:none}.drop-list.bottom ul{bottom:auto;margin-top:-2px}.drop-list.bottom ul:before{bottom:auto;top:-8px;border-width:0 8px 8px 8px}.disabled{opacity:.2;cursor:default}.disabled .button,.disabled .link,.disabled a,.disabled button{cursor:default!important}.disabled .button:hover,.disabled .link:hover,.disabled a:hover,.disabled button:hover{background:0 0}.tags{-webkit-appearance:none;-moz-appearance:none;-webkit-transform:translateZ(0);box-sizing:content-box;height:40px;line-height:40px;border:solid 1px #e2e2e2;border-radius:10px;padding:5px 15px;font-size:16px;display:block;width:calc(100% - 32px);margin-bottom:30px;background:#fff;min-height:42px;height:auto}.tags[type=file]{line-height:0;padding:15px;height:auto}.tags[xtype=file]{line-height:normal;height:auto;border:none;position:absolute;top:0;left:0;bottom:0;opacity:0;cursor:pointer;padding:0;margin:0;font-size:0;width:100%}.tags[xtype=file]:disabled{opacity:0!important}.tags:focus{outline:0;border-color:#b3d7fd}.tags:disabled{background:#f1f3f5}.tags.strip{border:none;border-radius:0;padding:5px 0;width:100%;background-color:transparent;background-position:right 2px top 50%;border-bottom:solid 1px #e2e2e2;color:#868686}.tags.strip:focus{border-color:#b3d7fd}.tags .add{display:inline-block!important;border:none;padding:0;width:auto;margin:0}.tags ul.tags-list{display:inline}.tags ul.tags-list li{display:inline-block!important;margin-right:10px;font-size:16px;padding:5px 10px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tags ul.tags-list li::before{float:right;content:'\e807';font-family:fontello;font-style:normal;display:inline-block;text-align:center;line-height:16px;width:16px;height:16px;font-size:12px;background:#000;color:#fff;border-radius:50%;margin-top:4px;margin-bottom:4px;margin-left:6px;margin-right:0}.console{height:100%;width:100%;padding:0}.console body{position:relative;height:calc(100% - 70px);width:calc(100% - 320px);padding-top:70px;padding-bottom:0;padding-right:50px;padding-left:270px;margin:0;color:#4b4b4b;background:#eceff1}.console body .project-only{display:none!important}.console body.show-nav .project-only{display:inline-block!important}.console body.hide-nav .console-back{display:block}.console body.hide-nav .account{display:none}.console body.index .console-back{display:none}.console body.index .account{display:block}.console body .console-back{display:none}.console body:before{content:'';display:block;position:absolute;width:calc(100% - 220px);height:100px;top:-100px;left:0;right:0;background:#fff;z-index:1000;border-left:solid 220px #132a3b}.console header{position:fixed;top:0;width:calc(100% - 280px);height:40px;line-height:40px;padding:15px 30px;background:#fff;box-shadow:0 0 2px rgba(0,0,0,.1);margin:0 -50px;z-index:2;font-size:14px}.console header .setup-new{width:40px;height:40px;line-height:40px}.console header .list{width:240px}.console header .list select{height:40px;line-height:40px;padding-top:0;padding-bottom:0;border:none;border-radius:26px;background-color:#ececec;color:#868686}.console header .account{margin-left:25px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.console header .account:hover{border-bottom:none}.console header .avatar{height:40px;width:40px}.console header .notifications{position:relative;font-size:20px}.console header .notifications a{color:#1b3445}.console header .notifications:after{position:absolute;content:"";display:block;background:#f53d3d;width:8px;height:8px;border-radius:50%;top:3px;right:3px}.console header nav{background:#1b3445;background:linear-gradient(#132a3b,#302839);background:linear-gradient(#143650,#302839);color:#788c99;position:fixed;height:100%;width:220px;top:0;left:0}.console header nav .logo{height:39px;padding:15px 20px;display:block;border-bottom:none}.console header nav .logo:hover{border-bottom:none}.console header nav .logo img{display:inline-block;margin-top:9px;width:75%}.console header nav .logo svg g{fill:#f02e65}.console header nav .icon{display:block;border:none;margin:18px 10px 50px 10px}.console header nav .icon img{display:block}.console header nav .icon:hover{border-bottom:none}.console header nav .icon:hover svg g{fill:#f02e65}.console header nav .container{overflow:scroll;height:calc(100% - 183px);padding-bottom:50px;width:100%}.console header nav .project-box{padding:20px;text-align:center;display:block;border:none;line-height:100px;height:100px}.console header nav .project-box img{max-height:80px;max-width:80%;display:inline-block;vertical-align:middle}.console header nav .project{display:block;padding:85px 25px 20px 25px;color:#788c99;position:relative;border:none;height:20px}.console header nav .project:hover{border-bottom:none}.console header nav .project .name{height:20px;line-height:20px;margin:0;padding:0;display:inline-block;max-width:100%}.console header nav .project .arrow{display:block;position:absolute;right:5px;top:10px;width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #788c99;transform:rotate(225deg)}.console header nav .project img{position:absolute;bottom:40px;display:block;margin-bottom:10px;max-height:35px;max-width:40%}.console header nav .subtitle{padding:0 30px 5px 30px;display:block;font-size:12px;font-weight:300}.console header nav .links{margin-bottom:15px!important}.console header nav .links.top{border:none;padding-bottom:0;margin-bottom:5px!important}.console header nav .links.bottom{position:absolute;bottom:0;left:0;right:0;padding-bottom:0;border:none;margin-bottom:0!important}.console header nav .links.bottom a{border-top:solid 1px #2a253a;border-bottom:none}.console header nav .links .sub{display:inline-block;border:none;width:25px;height:25px;line-height:25px;border-radius:50%;padding:0;background:#f02e65;color:#fff;text-align:center;font-size:12px;margin:18px}.console header nav .links .sub i{width:auto;margin:0}.console header nav .links .sub:hover{border:none}.console header nav .links a{padding:12px 20px;border:none;display:block;color:#87a5b9;font-weight:400;border-left:solid 5px transparent}.console header nav .links a i{margin-right:8px;width:22px;display:inline-block}.console header nav .links a.selected,.console header nav .links a:hover{color:#e4e4e4;font-weight:500}.console header nav:after{content:'';display:block;position:absolute;background:#302839;height:100px;width:100%;bottom:-100px}.console>footer{width:calc(100% + 100px);margin:0 -50px;box-sizing:border-box;background:0 0;padding-right:30px;padding-left:30px}.console>footer ul{float:none;text-align:center}.console>footer ul li{float:none;display:inline-block}.console .projects{position:relative}.console .projects:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.console .projects li{float:left;margin-right:50px;margin-bottom:50px;width:270px}.console .projects li.new,.console .projects li:nth-child(3n){margin-right:0}.console .dashboard{padding:20px;min-height:95px;overflow:hidden;position:relative;z-index:1}.console .dashboard hr{margin:20px -20px}.console .dashboard footer{margin:-20px;padding:20px;background:#fcfeff;border:none;color:#1e849e}.console .dashboard .col{position:relative}.console .dashboard .col:last-child:after{display:none}.console .dashboard .col:after{content:"";display:block;width:2px;background:#eceff1;height:calc(100% + 110px);position:absolute;top:-20px;bottom:-20px;right:24px}@media only screen and (max-width:550px),only screen and (min-width:551px) and (max-width:970px){.console .dashboard .col:after{width:calc(100% + 40px);height:3px;position:static;margin:20px -20px}}.console .dashboard .value{color:#f02e65;vertical-align:bottom;line-height:55px}.console .dashboard .value .sum{font-size:55px;line-height:55px;font-weight:700;vertical-align:bottom}.console .dashboard .unit{font-weight:500;line-height:20px;vertical-align:bottom;font-size:16px;display:inline-block;margin-bottom:5px;margin-left:5px;color:#f02e65}.console .dashboard .metric{color:#f02e65;font-weight:400;font-size:13px;line-height:16px}.console .dashboard .range{color:#818181;font-weight:400;font-size:14px;line-height:16px}.console .dashboard a{display:block;font-weight:400;font-size:14px;line-height:16px;padding:0;border:none}.console .dashboard .chart-metric{width:19%}@media only screen and (min-width:551px) and (max-width:970px),only screen and (max-width:550px){.console .dashboard .chart-metric{width:100%}}.console .dashboard .chart{width:80%;position:relative;height:0;padding-top:20px;padding-bottom:26%;margin-right:-2px;overflow:hidden;background-color:#fff;background-image:linear-gradient(transparent 1px,transparent 1px),linear-gradient(90deg,transparent 1px,transparent 1px),linear-gradient(#f1f1f1 1px,transparent 1px),linear-gradient(90deg,#f1f1f1 1px,transparent 1px);background-size:100px 100px,100px 100px,20px 20px,20px 20px;background-position:-2px -2px,-2px -2px,-1px -1px,-1px -1px;background-repeat:round;border:solid 1px #f1f1f1;border-right:solid 1px transparent;border-bottom:solid 1px transparent}@media only screen and (min-width:551px) and (max-width:970px),only screen and (max-width:550px){.console .dashboard .chart{width:100%;float:none;margin-bottom:20px}}.console .dashboard .chart canvas{position:absolute;bottom:0;display:block;height:100%;width:100%}.console .link-list li{margin-bottom:15px}.console .link-list i{display:inline-block;width:30px;height:30px;line-height:30px;text-align:center;background:#818181;color:#f1f3f5;border-radius:50%;margin-right:15px}.console .link-list i.fade{background:0 0;color:#818181}.console .provider{width:50px;height:50px;background:#f5f5f5;color:#868686;line-height:50px;text-align:center;font-size:25px;border-radius:50%}.console .provider.facebook{color:#fff;background:#3b5998}.console .provider.twitter{color:#fff;background:#55beff}.console .provider.telegram{color:#fff;background:#3ba9e1}.console .provider.github{color:#fff;background:#24292e}.console .provider.whatsapp{color:#fff;background:#25d366}.console .provider.linkedin{color:#fff;background:#1074af}.console .provider.microsoft{color:#fff;background:#137ad4}.console .provider.google{color:#fff;background:#4489f1}.console .provider.bitbucket{color:#fff;background:#2a88fb}.console .provider.gitlab{color:#faa238;background:#30353e}.console .provider.instagram{color:#fff;background:radial-gradient(circle at 30% 107%,#fdf497 0,#fdf497 5%,#fd5949 45%,#d6249f 60%,#285aeb 90%)}.console .premium{z-index:3;margin-top:320px}.console .premium .message{height:190px;overflow:hidden;position:absolute;top:-280px}.console .premium:after{content:'';position:absolute;top:0;left:-20px;right:-20px;bottom:-20px;background:#f6f7f8;opacity:.7;z-index:300}.console .app-section{height:90px}.console .confirm{background:#1e849e;color:#fff;border-radius:25px;padding:12px;line-height:28px;text-align:center}.console .confirm .action{font-weight:500;cursor:pointer}.console .platforms{overflow:hidden}.console .platforms .box{overflow:hidden}.console .platforms .box img{width:50px;margin:0 auto;margin-bottom:20px}.console .platforms .box .cover{margin:-30px -30px 30px -30px;padding:30px}.console .platforms .box .cover.android{background:#a4ca24}.console .platforms .box .cover.android h1{color:#fff;font-size:18px;margin-top:20px}.console .platforms .col{text-align:center;line-height:30px}.console .platforms a{display:block;margin:-20px;padding:20px}.console .platforms a:hover{background:#fbfeff}.console .platforms img{display:block;margin:0 30px;width:calc(100% - 60px);border-radius:50%;margin-bottom:20px}.dev-feature{display:none}.prod-feature{display:none}.development .dev-feature{display:block;opacity:.6!important;outline:solid #ff0 3px;outline-offset:3px}.development .dev-feature.dev-inline{display:inline-block}.development .prod-feature{display:none}.production .dev-feature{display:none}.production .prod-feature{display:block}.search{opacity:1!important}@media only screen and (max-width:550px),only screen and (min-width:551px) and (max-width:970px){.search button{margin-top:20px}}html.home body{padding:0 50px}html.home .logo img{max-height:35px;margin:45px 25px 25px 25px}.alerts ul{width:100%;visibility:hidden;position:fixed;padding:0;right:0;left:0;color:#fff;z-index:1002;margin:0 auto;bottom:15px;max-width:650px;opacity:.9}.alerts ul li{margin:1px 0 0 0;padding:0}.alerts ul li div.message{position:relative;padding:12px 35px;margin:0 auto;list-style:none;background:#818181;text-align:center;font-weight:700;border-radius:20px;line-height:16px;min-height:16px}.alerts ul li div.message i{cursor:pointer;position:absolute;font-size:22px;top:8px;left:8px}.alerts ul li div.message.error{color:#fff;background:#f53d3d}.alerts ul li div.message.success{color:#fff;background:#1bbf61}.alerts ul li div.message.warning{color:#fff;background:#ffed4d}.alerts ul li div.message.open{display:block}.alerts ul li div.message.close{display:none}.alerts .cookie-alert{background:#fff2f6!important;color:#f02e65}.alerts .cookie-alert a{color:#f02e65;font-weight:400;border-bottom:dotted 1px #f02e65}@media only screen and (max-width:550px),only screen and (min-width:551px) and (max-width:970px){.alerts ul{top:auto;bottom:0;max-width:100%}.alerts ul li{margin:5px 0 0 0}.alerts ul li div.message{border-radius:0}}article{overflow-wrap:break-word;word-wrap:break-word}article h1{font-size:36px}article h2{font-size:24px}article h3{font-size:20px}article h4{font-size:20px}article h5{font-size:18px}article h6{font-size:16px}article h1,article h2,article h3,article h4,article h5,article h6{margin-top:30px!important;margin-bottom:30px!important}article p{line-height:32px;font-size:17px}article .update{display:block;margin-top:50px!important}article table{width:100%;margin:0;margin-bottom:30px!important;border-radius:0;border-bottom:solid 1px #e7e7e7}article table thead td{font-weight:500;padding:5px 15px}article table td,article table th{padding:15px;height:auto}article table td:first-child,article table th:first-child{padding-left:10px}article table td:last-child,article table th:last-child{padding-right:10px}article table td p,article table th p{font-size:inherit;line-height:inherit}article table td p:last-child,article table th p:last-child{margin:0}.avatar{width:60px;height:60px;border-radius:50%;background:#ddd;display:inline-block;overflow:hidden;box-shadow:0 0 6px rgba(0,0,0,.09);position:relative;z-index:1;opacity:1!important}.avatar:before{content:"";position:absolute;width:100%;height:100%;z-index:0;background:#ddd}.avatar.inline{display:inline-block;vertical-align:middle}.avatar.trans{background:0 0}.avatar.xs{width:20px;height:20px}.avatar.small{width:50px;height:50px}.avatar.big{width:100px;height:100px}.avatar.huge{width:150px;height:150px}.box{position:relative;background:#fff;border-radius:10px;box-shadow:0 0 3px rgba(0,0,0,.05);padding:30px;display:block;border-bottom:none}.box.padding-small{padding:15px}.box.y-scroll{overflow-y:auto}.box.danger{background:#f53d3d;color:#fff}.box.focus{background:#f02e65;color:#fff}.box.focus .button,.box.focus button{background:#fff;color:#f02e65}.box.warning{background:#ffed4d;color:#2d2d2d}.box.warning .button,.box.warning button{background:rgba(45,45,45,.8);color:#ffed4d}.box>footer{margin:30px -30px -30px -30px;padding:15px 30px;background:#f5f5f5;border:solid 1px #eaeaea;border-radius:0 0 10px 10px}.box hr{height:2px;background:#eceff1;border:none;margin:30px -30px}.box .header{position:static;height:40px;padding:20px 30px 20px 30px;margin-bottom:30px;margin:-30px -30px 20px -30px;background:#f9f9f9;border-bottom:solid 1px #efefef}.box .toggle{position:relative;border-top:2px solid #f6f7f8;border-bottom:2px solid #f6f7f8;margin:0 -30px;padding:30px;height:35px;overflow:hidden}.box .toggle button.ls-ui-open{position:absolute;top:0;left:0;width:100%;height:95px;background:0 0;opacity:.5;border-radius:0}.box .toggle .icon-minus{display:none}.box .toggle .content{display:none}.box .toggle.open{height:auto}.box .toggle.open .icon-minus{display:block}.box .toggle.open .icon-plus{display:none}.box .toggle.open .content{display:block}.box .list li{border-bottom:solid 2px #f6f7f8;margin:0 -30px 30px -30px;padding:0 30px 30px 30px}.box .list li:last-child{padding-bottom:0;margin-bottom:0;border-bottom:none}.box.new{text-align:center}.box.new i{font-size:80px;line-height:80px;font-family:Poppins,sans-serif;font-style:normal;font-weight:300}.box.new b{margin-top:20px;display:block}a.box{border-right:none;border-left:none}a.box:hover{border-bottom:none;border-right:none;border-left:none;background:#f8fdff;box-shadow:0 0 1px rgba(0,0,0,.2)}.box-asidex{padding-right:25px!important;padding-left:70px;right:0;background:#f9f9f9;border-radius:0 10px 10px 0;height:calc(100% - 30px);position:absolute;padding-top:30px}.box-asidex:after{content:"";display:block;position:absolute;height:100%;width:51px;background:#fff;top:0;bottom:0;left:-6px}.cover{background:#fff2f6;padding:30px 50px;margin:0 -50px;position:relative;border-bottom:solid 1px #dedede}.cover .title,.cover h1,.cover h2,.cover h3,.cover h4{color:#f02e65;font-weight:600;margin-bottom:40px!important;font-size:28px;line-height:42px}.cover i:before{margin:0!important}.cover p{color:#737373}.cover .button{color:#fff}.cover .link,.cover a{color:#f02e65;border-left:none;border-right:none;cursor:pointer}.cover .link:hover,.cover a:hover{border-bottom-color:#f02e65}.console .database .row .col{height:452px}.console .database .row .col:after{width:2px;right:20px}.console .database hr{margin:0 -20px;background:#efefef;height:2px}.console .database h3{font-size:13px;line-height:20px;height:20px;background-color:#f5f5f5;margin:-20px -20px 0 -20px;padding:10px 20px;border-bottom:solid 1px #e1e2e2;font-weight:600}.console .database .empty{height:160px;font-size:12px;text-align:center;margin:50px 0}.console .database .empty h4{font-size:13px;font-weight:600;line-height:120px}.console .database .search{background-color:#f5f5f5;margin:0 -20px 0 -20px;padding:10px 15px}.console .database .search input{height:40px;background-color:#fff;border-radius:25px;padding-top:0;padding-bottom:0}.console .database .code{height:411px;background:#f5f5f5;margin:0 -20px -20px -20px;padding:20px;width:calc(100% - 10px)}.console .database .code .ide{overflow:scroll;height:451px;margin:-20px;box-shadow:none;border-radius:0}.console .database .paging{background:#f5f5f5;margin:0 -20px -20px -20px;padding:20px}.console .database .button{margin:0 -20px;padding:0 20px!important;text-align:inherit;color:#f02e65;width:100%;font-size:15px;line-height:55px;box-sizing:content-box}.console .database .button i{margin-right:8px}.console .database .button:hover{border:none;background:#fff2f6}.console .database .items{margin:0 -20px;height:260px;overflow-x:hidden;overflow-y:scroll}.console .database .items form{opacity:0;position:relative}.console .database .items form button{background:red;position:absolute;top:0;bottom:0;left:0;right:0;width:100%;height:45px;border-radius:0;cursor:pointer}.console .database .items li{padding:0;margin:0 0;line-height:45px;font-size:15px;padding-left:50px;padding-right:30px;position:relative}.console .database .items li i{position:absolute;display:none;right:10px}.console .database .items li .name{display:inline-block;width:100%;height:28px}.console .database .items li.selected,.console .database .items li:hover{background:#f5f5f5}.console .database .items li.selected i,.console .database .items li:hover i{display:block}.console .database .items li:last-child{border-bottom:none}body>footer{color:#818181;line-height:40px;margin:0 -50px;padding:12px 50px;font-size:13px;width:100%;background:#f1f1f1;position:relative;margin-top:80px!important}body>footer:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}body>footer .logo img{height:22px;padding-top:12px}body>footer a{color:#505050}body>footer a:hover{border-bottom-color:#505050}body>footer ul:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}body>footer ul li{float:left;margin-right:20px!important}body>footer .copyright{padding-left:2px}[data-ls-if]{display:none}[data-service]{opacity:0}.load-service-start{opacity:0}.load-service-end{opacity:1;transition:opacity .5s ease-out;-moz-transition:opacity .5s ease-out;-webkit-transition:opacity .5s ease-out;-o-transition:opacity .5s ease-out}.modal-open .modal-bg,.modal-open body .modal-bg{position:fixed;content:'';display:block;width:100%;height:100%;left:0;right:0;top:0;bottom:0;background:#0c0c0c;opacity:.5;z-index:4}.modal{overflow:auto;display:none;position:fixed;width:100%;max-height:90%;max-width:640px;background:#fff;z-index:1000;box-shadow:0 0 4px rgba(0,0,0,.25);padding:30px;left:50%;top:50%;transform:translate(-50%,-50%);border-radius:10px;box-sizing:border-box;text-align:left}@media only screen and (max-width:550px),only screen and (min-width:551px) and (max-width:970px){.modal{width:calc(100% - 20px)}}.modal.padding-small{padding:15px}.modal.height-tiny form{height:100px}.modal.height-small form{height:220px}.modal.width-small{max-width:400px}.modal.width-medium{max-width:500px}.modal.width-large{max-width:800px}.modal.open{display:block}.modalbutton.close{display:none}.modal.fill{height:95%;max-height:95%;max-width:75%}.modal h1,.modal h2{margin-bottom:25px;margin-top:0;font-size:20px;text-align:left}.modal h1,.modal h2,.modal h3,.modal h4,.modal h5,.modal h6{color:inherit!important;line-height:35px}.modal .main,.modal form{position:relative;border-top:solid 1px #e7e7e7;padding:30px 30px 0 30px;margin:0 -30px}.modal .separator{margin:20px -30px}.modal .info{margin:0 -30px;padding:20px 30px;background:#f5fbff;color:#3b5d73;border-top:solid 1px #eaf2f7;border-bottom:solid 1px #eaf2f7}.modal button.close{width:30px;height:30px;line-height:30px;padding:0;margin:0;background:#1b1b1b;color:#fff;border-radius:50%}.phases{list-style:none;margin:0;padding:0;position:relative}.phases li{display:none}.phases li li{display:block}.phases li.selected{display:block}.phases .number{display:none}.phases h2,.phases h3,.phases h4,.phases h5,.phases h6{margin:0 0 30px 0;text-align:inherit}.container{position:relative}.container .tabs{height:55px;line-height:55px;list-style:none;padding:0;margin-bottom:50px!important;margin-top:-55px;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.container .tabs:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.container .tabs .selected{font-weight:400;color:#f02e65;position:relative;opacity:1}.container .tabs .selected:after{content:"";display:block;height:2px;background:#f02e65;width:calc(100% - 46px);position:absolute;bottom:0;border-radius:2px;left:-2px}.container .tabs .number{display:none}.container .tabs li{float:left;padding-right:50px;color:#f02e65;opacity:.9;cursor:pointer}.container .tabs li:focus{outline:0}.container .icon{display:none}@media only screen and (max-width:550px),only screen and (min-width:551px) and (max-width:970px){.container .tabs{width:auto;overflow-x:scroll;overflow-y:hidden;white-space:nowrap}.container .tabs li{display:inline-block;float:none}}.ide{background-color:#373738;overflow:hidden;position:relative;z-index:1;box-shadow:0 2px 4px 0 rgba(50,50,93,.3);border-radius:10px;margin-bottom:30px}.ide .copy{position:absolute;bottom:15px;right:15px;cursor:pointer;background:#39393c;border-radius:50%;padding:2px;color:#6a6a6d;border:solid 2px #414142}.ide pre{-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none;color:#e6ebf1;font-weight:400;line-height:20px;font-size:13px;margin:0;padding:20px;padding-left:60px}.ide.light{box-shadow:0 2px 4px 0 rgba(50,50,93,.1);background-color:#fff}.ide.light pre{color:#414770}.ide.light .token.cdata,.ide.light .token.comment,.ide.light .token.doctype,.ide.light .token.prolog{color:#91a2b0}.ide.light .token.attr-name,.ide.light .token.builtin,.ide.light .token.char,.ide.light .token.inserted,.ide.light .token.selector,.ide.light .token.string{color:#149570}.ide.light .token.punctuation{color:#414770}.ide.light .language-css .token.string,.ide.light .style .token.string,.ide.light .token.entity,.ide.light .token.operator,.ide.light .token.url,.ide.light .token.variable{color:#414770}.ide.light .line-numbers .line-numbers-rows{background:#f2feef}.ide.light .line-numbers-rows>span:before{color:#5dc79e}.ide.light .token.keyword{color:#6772e4;font-weight:500}code[class*=language-],pre[class*=language-]{text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4}pre[class*=language-]{overflow:auto}:not(pre)>code[class*=language-]{padding:.1em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#6b7c93}.token.punctuation{color:#f8f8f2}.namespace{opacity:.7}.token.constant,.token.deleted,.token.property,.token.symbol,.token.tag{color:#f92672}.token.boolean,.token.number{color:#f79a59}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#3ecf8e}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url,.token.variable{color:#f8f8f2}.token.atrule,.token.attr-value,.token.class-name,.token.function{color:#45b2e8}.token.keyword{color:#7795f8}.token.important,.token.regex{color:#fd971f}.token.italic{font-style:italic}.token.entity{cursor:help}pre[class*=language-].line-numbers{position:relative;padding-left:60px;counter-reset:linenumber}pre[class*=language-].line-numbers>code{position:relative;white-space:inherit}.line-numbers .line-numbers-rows{background:#39393c;position:absolute;pointer-events:none;top:-20px;padding:20px 0;font-size:100%;left:-60px;width:40px;letter-spacing:-1px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.line-numbers-rows>span{padding-right:5px;pointer-events:none;display:block;counter-increment:linenumber}.line-numbers-rows>span:before{content:counter(linenumber);color:#636365;display:block;padding-right:.8em;text-align:right}html{padding:0;margin:0;direction:ltr}body{margin:0;background:#f6f7f8 no-repeat fixed}main{min-height:100%}ul{padding:0;margin:0}ul li{margin:0;list-style:none}.force-left{direction:ltr;text-align:left}.force-right{direction:rtl;text-align:right}.pull-left{float:left}.pull-right{float:right} \ No newline at end of file +.pull-start{float:left}.pull-end{float:right}img[src=""]{visibility:hidden;display:inline-block}.margin-end{margin-right:20px!important}.margin-start{margin-left:20px!important}.margin-end-small{margin-right:10px!important}.margin-start-small{margin-left:10px!important}.margin-end-large{margin-right:50px!important}.margin-start-large{margin-left:50px!important}.margin-end-no{margin-right:0!important}.margin-start-no{margin-left:0!important}.margin-top{margin-top:30px!important}.margin-bottom{margin-bottom:30px!important}.margin-top-no{margin-top:0!important}.margin-bottom-no{margin-bottom:0!important}.margin-top-xxl{margin-top:140px!important}.margin-top-xl{margin-top:80px!important}.margin-top-large{margin-top:50px!important}.margin-top-small{margin-top:15px!important}.margin-top-tiny{margin-top:5px!important}.margin-top-negative{margin-top:-30px!important}.margin-top-negative-tiny{margin-top:-5px!important}.margin-top-negative-small{margin-top:-15px!important}.margin-top-negative-large{margin-top:-50px!important}.margin-top-negative-xl{margin-top:-80px!important}.margin-top-negative-xxl{margin-top:-100px!important}.margin-bottom-xxl{margin-bottom:140px!important}.margin-bottom-xl{margin-bottom:80px!important}.margin-bottom-large{margin-bottom:50px!important}.margin-bottom-small{margin-bottom:15px!important}.margin-bottom-tiny{margin-bottom:5px!important}.margin-bottom-negative{margin-bottom:-30px!important}.margin-bottom-negative-tiny{margin-bottom:-5px!important}.margin-bottom-negative-small{margin-bottom:-15px!important}.margin-bottom-negative-large{margin-bottom:-50px!important}.margin-bottom-negative-xl{margin-bottom:-80px!important}.margin-bottom-negative-xl{margin-bottom:-100px!important}.ratio-wide{height:0;overflow:hidden;padding-top:56%;position:relative;width:100%}.ratio-wide>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-square{height:0;overflow:hidden;padding-top:56%;position:relative;width:100%}.ratio-square>*{position:absolute;top:0;left:0;width:100%;height:100%}.clear:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}*{font-family:Poppins,sans-serif,Arial;-webkit-font-smoothing:antialiased;font-weight:300}h1,h2,h3,h4,h5,h6{margin:0}h4,h5,h6{font-weight:400}.link,a{color:#1e849e;text-decoration:none;border-left:2px solid transparent;border-right:2px solid transparent;border-bottom:solid 1px transparent}.link:hover,a:hover{border-bottom:dotted 1px #1e849e}.link.disabled,a.disabled{opacity:.5}.link.disabled:hover,a.disabled:hover{border-bottom:none}.link.tag:hover,a.tag:hover{border-bottom:none;opacity:.9}b,strong{font-weight:500}p{margin:0 0 20px 0;line-height:26px}small{font-size:16px;color:#818181}.text-size-small{font-size:13px}.text-size-normal{font-size:16px}.text-one-liner{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.text-bold{font-weight:400!important}.text-danger{color:#f53d3d}.text-success{color:#1bbf61}.text-upper{text-transform:uppercase}.text-warning{color:#ffed4d}.text-focus{color:#f02e65}.text-fade{color:#818181}.text-disclaimer{font-size:11px;color:#818181}.text-fade-extra{color:#818181;opacity:.5}.text-line-high-large{line-height:30px}.text-line-high-xl{line-height:40px}.text-sign{margin:5px 0;font-size:25px;width:25px;height:25px;line-height:25px;display:inline-block}.text-align-center{text-align:center}.text-align-start{text-align:left}.text-align-end{text-align:right}.text-align-left{text-align:left}.text-align-right{text-align:right}.text-dir-ltr{direction:ltr;display:inline-block}.text-dir-rtl{direction:rtl;display:inline-block}.icon-dot-3:before{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-o-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}table{width:calc(100% + 60px);border-collapse:collapse;margin:-30px;border-radius:10px;overflow:hidden;position:relative;table-layout:fixed}table thead{box-shadow:0 0 2px rgba(0,0,0,.25);border-bottom:solid 1px #f1f3f5;font-size:14px}table thead th{position:sticky;top:0}table.small{font-size:14px}table.open-end tbody tr:last-child{border-bottom:none;font-weight:700;background:#f7fbf7}table.full tbody td,table.full tbody th{vertical-align:top;white-space:normal;overflow:auto;line-height:24px;padding-top:20px;padding-bottom:20px;height:auto}table .avatar{width:30px;height:30px}table tr{border-bottom:solid 1px #f1f3f5}table tr:last-child{border-bottom:none}table tr:nth-child(even){background:#fbfbfb}table th{text-align:left;font-weight:400}table th i{color:#818181;font-size:10px;display:inline-block;vertical-align:top;line-height:16px;padding:0 3px}table td,table th{height:65px;padding:0 15px;line-height:50px}table td:first-child,table th:first-child{padding-left:30px}table td:last-child,table th:last-child{padding-right:30px}@media only screen and (max-width:550px){table td:first-child,table th:first-child{width:auto}}table td,table th{overflow:hidden;white-space:nowrap}@media only screen and (max-width:550px),only screen and (min-width:551px) and (max-width:970px){table.vertical{display:block;overflow:hidden;padding-top:12px}table.vertical .hide{display:none}table.vertical tbody,table.vertical td,table.vertical th,table.vertical thead,table.vertical tr{width:100%;display:block}table.vertical th,table.vertical tr{padding-top:12px;padding-bottom:12px}table.vertical th:first-child,table.vertical tr:first-child{padding-top:0}table.vertical td,table.vertical th{padding:5px 20px!important;text-overflow:ellipsis;white-space:normal;height:40px;line-height:40px}table.vertical td:first-child,table.vertical td:last-child,table.vertical th:first-child,table.vertical th:last-child{padding:0 10px}table.vertical td:last-child,table.vertical th:last-child{padding-bottom:0}table.vertical td p,table.vertical th p{display:inline-block;width:calc(100% - 40px)}table.vertical td:before{content:attr(data-title);margin-right:4px;font-weight:400}table.vertical thead{display:none}}.zone{max-width:910px;margin:0 auto 40px auto}.zone.xxxl{max-width:calc(100% - 100px)}@media only screen and (max-width:550px),only screen and (min-width:551px) and (max-width:970px){.zone.xxxl{max-width:100%}}.zone.xxl{max-width:1100px}.zone.xl{max-width:910px}.zone.large{max-width:700px}.zone.medium{max-width:550px}.zone.small{max-width:320px}.row{position:relative;margin:0 -50px;padding-left:50px}@media only screen and (max-width:550px),only screen and (min-width:551px) and (max-width:970px){.row{margin:0 -30px;padding-left:30px}}.row.force-ltr>.col{float:left}.row.force-rtl>.col{float:right}.row.force-reverse>.col{float:right}.row.wide{margin:0 -100px;padding-left:100px}.row.wide>.span-1{width:calc(8.33333333% * 1 - 100px);box-sizing:content-box;padding-right:100px}.row.wide>.span-2{width:calc(8.33333333% * 2 - 100px);box-sizing:content-box;padding-right:100px}.row.wide>.span-3{width:calc(8.33333333% * 3 - 100px);box-sizing:content-box;padding-right:100px}.row.wide>.span-4{width:calc(8.33333333% * 4 - 100px);box-sizing:content-box;padding-right:100px}.row.wide>.span-5{width:calc(8.33333333% * 5 - 100px);box-sizing:content-box;padding-right:100px}.row.wide>.span-6{width:calc(8.33333333% * 6 - 100px);box-sizing:content-box;padding-right:100px}.row.wide>.span-7{width:calc(8.33333333% * 7 - 100px);box-sizing:content-box;padding-right:100px}.row.wide>.span-8{width:calc(8.33333333% * 8 - 100px);box-sizing:content-box;padding-right:100px}.row.wide>.span-9{width:calc(8.33333333% * 9 - 100px);box-sizing:content-box;padding-right:100px}.row.wide>.span-10{width:calc(8.33333333% * 10 - 100px);box-sizing:content-box;padding-right:100px}.row.wide>.span-11{width:calc(8.33333333% * 11 - 100px);box-sizing:content-box;padding-right:100px}.row.wide>.span-12{width:calc(8.33333333% * 12 - 100px);box-sizing:content-box;padding-right:100px}.row.thin{margin:0 -20px;padding-left:20px}.row.thin>.span-1{width:calc(8.33333333% * 1 - 20px);box-sizing:content-box;padding-right:20px}.row.thin>.span-2{width:calc(8.33333333% * 2 - 20px);box-sizing:content-box;padding-right:20px}.row.thin>.span-3{width:calc(8.33333333% * 3 - 20px);box-sizing:content-box;padding-right:20px}.row.thin>.span-4{width:calc(8.33333333% * 4 - 20px);box-sizing:content-box;padding-right:20px}.row.thin>.span-5{width:calc(8.33333333% * 5 - 20px);box-sizing:content-box;padding-right:20px}.row.thin>.span-6{width:calc(8.33333333% * 6 - 20px);box-sizing:content-box;padding-right:20px}.row.thin>.span-7{width:calc(8.33333333% * 7 - 20px);box-sizing:content-box;padding-right:20px}.row.thin>.span-8{width:calc(8.33333333% * 8 - 20px);box-sizing:content-box;padding-right:20px}.row.thin>.span-9{width:calc(8.33333333% * 9 - 20px);box-sizing:content-box;padding-right:20px}.row.thin>.span-10{width:calc(8.33333333% * 10 - 20px);box-sizing:content-box;padding-right:20px}.row.thin>.span-11{width:calc(8.33333333% * 11 - 20px);box-sizing:content-box;padding-right:20px}.row.thin>.span-12{width:calc(8.33333333% * 12 - 20px);box-sizing:content-box;padding-right:20px}.row:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.row .col{float:left;box-sizing:border-box}.row .col.sticky-top{position:sticky;top:0}.row .col.sticky-bottom{position:sticky;bottom:0}.row .span-1{width:calc(8.33333333% * 1 - 40px);box-sizing:content-box;padding-right:40px}.row .span-2{width:calc(8.33333333% * 2 - 40px);box-sizing:content-box;padding-right:40px}.row .span-3{width:calc(8.33333333% * 3 - 40px);box-sizing:content-box;padding-right:40px}.row .span-4{width:calc(8.33333333% * 4 - 40px);box-sizing:content-box;padding-right:40px}.row .span-5{width:calc(8.33333333% * 5 - 40px);box-sizing:content-box;padding-right:40px}.row .span-6{width:calc(8.33333333% * 6 - 40px);box-sizing:content-box;padding-right:40px}.row .span-7{width:calc(8.33333333% * 7 - 40px);box-sizing:content-box;padding-right:40px}.row .span-8{width:calc(8.33333333% * 8 - 40px);box-sizing:content-box;padding-right:40px}.row .span-9{width:calc(8.33333333% * 9 - 40px);box-sizing:content-box;padding-right:40px}.row .span-10{width:calc(8.33333333% * 10 - 40px);box-sizing:content-box;padding-right:40px}.row .span-11{width:calc(8.33333333% * 11 - 40px);box-sizing:content-box;padding-right:40px}.row .span-12{width:calc(8.33333333% * 12 - 40px);box-sizing:content-box;padding-right:40px}@media only screen and (max-width:550px),only screen and (min-width:551px) and (max-width:970px){.row.responsive{width:100%;padding:0;margin:0}.row.responsive>.span-1,.row.responsive>.span-10,.row.responsive>.span-11,.row.responsive>.span-12,.row.responsive>.span-2,.row.responsive>.span-3,.row.responsive>.span-4,.row.responsive>.span-5,.row.responsive>.span-6,.row.responsive>.span-7,.row.responsive>.span-8,.row.responsive>.span-9{width:calc(8.33333333% * 12 - 0px)!important;box-sizing:content-box!important;padding-right:0!important;width:100%!important}}.tiles{position:relative}.tiles:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.tiles li{margin-right:50px!important;float:left;width:calc(33% - 33px)}.tiles li .photo-title{width:calc(100% + 30px);height:15px;margin:-15px -15px 10px -15px;border-radius:10px 10px 0 0;background:#f1f3f5;border-bottom:solid 1px #f1f3f5}.tiles li:nth-child(3n){margin-right:0!important}@media only screen and (max-width:550px){.tiles li{width:100%;margin-right:0!important}}@font-face{font-family:fontello;src:url(data:application/octet-stream;base64,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) format('woff'),url(data:application/octet-stream;base64,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b250ZWxsby5jb20AQwBvAHAAeQByAGkAZwBoAHQAIAAoAEMAKQAgADIAMAAxADkAIABiAHkAIABvAHIAaQBnAGkAbgBhAGwAIABhAHUAdABoAG8AcgBzACAAQAAgAGYAbwBuAHQAZQBsAGwAbwAuAGMAbwBtAGYAbwBuAHQAZQBsAGwAbwBSAGUAZwB1AGwAYQByAGYAbwBuAHQAZQBsAGwAbwBmAG8AbgB0AGUAbABsAG8AVgBlAHIAcwBpAG8AbgAgADEALgAwAGYAbwBuAHQAZQBsAGwAbwBHAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAHMAdgBnADIAdAB0AGYAIABmAHIAbwBtACAARgBvAG4AdABlAGwAbABvACAAcAByAG8AagBlAGMAdAAuAGgAdAB0AHAAOgAvAC8AZgBvAG4AdABlAGwAbABvAC4AYwBvAG0AAAAAAgAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAQIBAwEEAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgETARQBFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBKgErASwBLQEuAS8BMAExATIBMwE0ATUBNgE3ATgBOQE6ATsBPAE9AT4BPwFAAUEBQgFDAUQBRQFGAUcBSAFJAUoBSwFMAU0BTgFPAVABUQFSAVMBVAFVAVYBVwFYAVkBWgFbAVwBXQFeAV8BYAFhAWIBYwFkAWUABHVzZXIGZm9sZGVyBGxpc3QFbG9naW4DY29nB3R3aXR0ZXILYXJ0aWNsZS1hbHQGY2FuY2VsBGhvbWUIZG93bi1kaXIIZmFjZWJvb2sIYXN0ZXJpc2sGdXBsb2FkCXN0b3B3YXRjaAZleHBvcnQFaGVhcnQEcGx1cwZ1cC1kaXIEbWVudQlsZWZ0LW9wZW4KcmlnaHQtb3BlbgVpbmJveAZ3cmVuY2gHY29tbWVudA1zdGFja292ZXJmbG93CHF1ZXN0aW9uCm9rLWNpcmNsZWQHd2FybmluZwRtYWlsBGxpbmsHa2V5LWludgV0cmFzaAhkb3dubG9hZAdnbGFzc2VzBnFyY29kZQdzaHVmZmxlA2V5ZQRsb2NrBnNlYXJjaARiZWxsBXVzZXJzCGxvY2F0aW9uCWJyaWVmY2FzZQlp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) format('truetype')}[class*=" icon-"]:before,[class^=icon-]:before{font-family:fontello;font-style:normal;font-weight:400;display:inline-block;text-decoration:inherit;width:1em;margin-right:.2em;text-align:center;font-variant:normal;text-transform:none;line-height:1em;margin-left:.2em}.icon-user:before{content:'\e800'}.icon-folder:before{content:'\e801'}.icon-list:before{content:'\e802'}.icon-login:before{content:'\e803'}.icon-cog:before{content:'\e804'}.icon-twitter:before{content:'\e805'}.icon-article-alt:before{content:'\e806'}.icon-cancel:before{content:'\e807'}.icon-home:before{content:'\e808'}.icon-down-dir:before{content:'\e809'}.icon-facebook:before{content:'\e80a'}.icon-asterisk:before{content:'\e80b'}.icon-upload:before{content:'\e80c'}.icon-stopwatch:before{content:'\e80d'}.icon-export:before{content:'\e80e'}.icon-heart:before{content:'\e80f'}.icon-plus:before{content:'\e810'}.icon-up-dir:before{content:'\e811'}.icon-menu:before{content:'\e812'}.icon-left-open:before{content:'\e813'}.icon-right-open:before{content:'\e814'}.icon-inbox:before{content:'\e815'}.icon-wrench:before{content:'\e816'}.icon-comment:before{content:'\e817'}.icon-stackoverflow:before{content:'\e818'}.icon-question:before{content:'\e819'}.icon-ok-circled:before{content:'\e81a'}.icon-warning:before{content:'\e81b'}.icon-mail:before{content:'\e81c'}.icon-link:before{content:'\e81d'}.icon-key-inv:before{content:'\e81e'}.icon-trash:before{content:'\e81f'}.icon-download:before{content:'\e820'}.icon-glasses:before{content:'\e821'}.icon-qrcode:before{content:'\e822'}.icon-shuffle:before{content:'\e823'}.icon-eye:before{content:'\e824'}.icon-lock:before{content:'\e825'}.icon-search:before{content:'\e826'}.icon-bell:before{content:'\e827'}.icon-users:before{content:'\e828'}.icon-location:before{content:'\e829'}.icon-briefcase:before{content:'\e82a'}.icon-instagram:before{content:'\e82b'}.icon-clock:before{content:'\e82c'}.icon-phone:before{content:'\e82d'}.icon-calendar:before{content:'\e82e'}.icon-print:before{content:'\e82f'}.icon-edit:before{content:'\e830'}.icon-bold:before{content:'\e831'}.icon-italic:before{content:'\e832'}.icon-rocket:before{content:'\e833'}.icon-whatsapp:before{content:'\e834'}.icon-dot-3:before{content:'\e835'}.icon-info-circled:before{content:'\e836'}.icon-videocam:before{content:'\e837'}.icon-quote-right:before{content:'\e838'}.icon-picture:before{content:'\e839'}.icon-palette:before{content:'\e83a'}.icon-lamp:before{content:'\e83b'}.icon-book-open:before{content:'\e83c'}.icon-ok:before{content:'\e83d'}.icon-chat-alt:before{content:'\e83e'}.icon-archive:before{content:'\e83f'}.icon-play:before{content:'\e840'}.icon-pause:before{content:'\e841'}.icon-down-open:before{content:'\e842'}.icon-up-open:before{content:'\e843'}.icon-minus:before{content:'\e844'}.icon-exchange:before{content:'\e845'}.icon-network:before{content:'\e846'}.icon-link-ext:before{content:'\f08e'}.icon-github-circled:before{content:'\f09b'}.icon-filter:before{content:'\f0b0'}.icon-docs:before{content:'\f0c5'}.icon-list-bullet:before{content:'\f0ca'}.icon-list-numbered:before{content:'\f0cb'}.icon-underline:before{content:'\f0cd'}.icon-sort:before{content:'\f0dc'}.icon-linkedin:before{content:'\f0e1'}.icon-smile:before{content:'\f118'}.icon-keyboard:before{content:'\f11c'}.icon-code:before{content:'\f121'}.icon-shield:before{content:'\f132'}.icon-bitbucket:before{content:'\f171'}.icon-windows:before{content:'\f17a'}.icon-wheelchair:before{content:'\f193'}.icon-bank:before{content:'\f19c'}.icon-google:before{content:'\f1a0'}.icon-building-filled:before{content:'\f1ad'}.icon-database:before{content:'\f1c0'}.icon-lifebuoy:before{content:'\f1cd'}.icon-header:before{content:'\f1dc'}.icon-binoculars:before{content:'\f1e5'}.icon-chart-area:before{content:'\f1fe'}.icon-pinterest:before{content:'\f231'}.icon-medium:before{content:'\f23a'}.icon-gitlab:before{content:'\f296'}.icon-telegram:before{content:'\f2c6'}.datalist-polyfill{list-style:none;display:none;background:#fff;box-shadow:0 2px 2px #999;position:absolute;left:0;top:0;margin:0;padding:0;max-height:300px;overflow-y:auto}.datalist-polyfill:empty{display:none!important}.datalist-polyfill>li{padding:3px;font:13px "Lucida Grande",Sans-Serif}.datalist-polyfill__active{background:#3875d7;color:#fff}date-input-polyfill{z-index:1000!important;max-width:320px!important;width:320px!important}date-input-polyfill .monthSelect-wrapper,date-input-polyfill .yearSelect-wrapper{height:50px;line-height:50px;padding:0;width:40%!important;margin-bottom:10px!important}date-input-polyfill .monthSelect-wrapper select,date-input-polyfill .yearSelect-wrapper select{padding:0 12px;height:50px;line-height:50px;box-sizing:border-box}date-input-polyfill .yearSelect-wrapper{width:35%!important}date-input-polyfill table{width:100%!important;max-width:100%!important;padding:0 12px 12px 12px!important;box-sizing:border-box;margin:0}date-input-polyfill table td:first-child,date-input-polyfill table td:last-child,date-input-polyfill table th:first-child,date-input-polyfill table th:last-child{width:32px!important;padding:4px!important}date-input-polyfill select{margin-bottom:10px}date-input-polyfill button{width:25%!important;height:50px!important;line-height:50px!important;margin-bottom:10px!important;background:inherit;position:relative;color:inherit;padding:inherit;box-sizing:inherit;border-radius:inherit;font-size:inherit;box-shadow:none;border:none;border-bottom:none!important}::placeholder{color:#868686;text-align:left}::-webkit-input-placeholder{text-align:left}input:-moz-placeholder{text-align:left}.button,button{display:inline-block;background:#f02e65;border-radius:26px;border:none;color:#fff;height:52px;line-height:52px;padding:0 25px;cursor:pointer;font-size:16px;box-sizing:border-box;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.button:focus,.button:hover,button:focus,button:hover{background:#c52653;border-bottom:none}.button.fly,button.fly{position:fixed;z-index:2;bottom:30px;right:30px}.button.fill,button.fill{display:block;width:100%;text-align:center;padding:0 10px!important}.button.fill-aligned,button.fill-aligned{display:block;width:100%;text-align:left;padding:0 20px!important}.button.icon,button.icon{padding-right:30px!important}.button.icon-reduce,button.icon-reduce{padding-left:15px!important}.button.reverse,button.reverse{background:0 0;height:50px;line-height:48px;padding:0 23px;color:#f02e65;border:solid 2px #f02e65}.button.reverse:focus,.button.reverse:hover,button.reverse:focus,button.reverse:hover{color:#c52653;border-color:#c52653}.button.round,button.round{width:52px;padding:0}.button.round.small,button.round.small{font-size:12px;width:30px;height:30px;line-height:30px}.button.white,button.white{background:#fff;color:#f02e65}.button.white.reverse,button.white.reverse{color:#fff;background:0 0;border:solid 2px #fff}.button.trans,button.trans{background:0 0!important}.button.trans.reverse,button.trans.reverse{background:0 0!important}.button.success,button.success{background:#1bbf61}.button.success.reverse,button.success.reverse{color:#1bbf61;background:#fff;border:solid 2px #1bbf61}.button.danger,button.danger{background:#f53d3d}.button.danger.reverse,button.danger.reverse{color:#f53d3d;background:#fff;border:solid 2px #f53d3d}.button .disabled,.button.disabled,.button:disabled,button .disabled,button.disabled,button:disabled{background:#818181;cursor:default}.button.link,button.link{background:0 0;border-radius:0;color:#1e849e;height:auto;line-height:normal;padding:0;padding-right:0!important}.button.link:hover,button.link:hover{border-bottom:dotted 1px #1e849e}.button.link:focus,button.link:focus{box-shadow:inherit}.button.strip,button.strip{background:0 0;height:auto;line-height:16px;color:inherit;padding:0 5px}.button.facebook,button.facebook{color:#fff!important;background:#4070b4!important}.button.twitter,button.twitter{color:#fff!important;background:#56c2ea!important}.button.linkedin,button.linkedin{color:#fff!important;background:#0076b5!important}.button.github,button.github{color:#fff!important;background:#7e7c7c!important}.button:focus,button:focus{outline:0}label{margin-bottom:15px;display:block;line-height:normal}.input,input[type=date],input[type=datetime-local],input[type=email],input[type=file],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=url],select,textarea{-webkit-appearance:none;-moz-appearance:none;-webkit-transform:translateZ(0);box-sizing:content-box;height:40px;line-height:40px;border:solid 1px #e2e2e2;border-radius:10px;padding:5px 15px;font-size:16px;display:block;width:calc(100% - 32px);margin-bottom:30px}.input[type=file],input[type=date][type=file],input[type=datetime-local][type=file],input[type=email][type=file],input[type=file][type=file],input[type=number][type=file],input[type=password][type=file],input[type=search][type=file],input[type=tel][type=file],input[type=text][type=file],input[type=url][type=file],select[type=file],textarea[type=file]{line-height:0;padding:15px;height:auto}.input[xtype=file],input[type=date][xtype=file],input[type=datetime-local][xtype=file],input[type=email][xtype=file],input[type=file][xtype=file],input[type=number][xtype=file],input[type=password][xtype=file],input[type=search][xtype=file],input[type=tel][xtype=file],input[type=text][xtype=file],input[type=url][xtype=file],select[xtype=file],textarea[xtype=file]{line-height:normal;height:auto;border:none;position:absolute;top:0;left:0;bottom:0;opacity:0;cursor:pointer;padding:0;margin:0;font-size:0;width:100%}.input[xtype=file]:disabled,input[type=date][xtype=file]:disabled,input[type=datetime-local][xtype=file]:disabled,input[type=email][xtype=file]:disabled,input[type=file][xtype=file]:disabled,input[type=number][xtype=file]:disabled,input[type=password][xtype=file]:disabled,input[type=search][xtype=file]:disabled,input[type=tel][xtype=file]:disabled,input[type=text][xtype=file]:disabled,input[type=url][xtype=file]:disabled,select[xtype=file]:disabled,textarea[xtype=file]:disabled{opacity:0!important}.input:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=email]:focus,input[type=file]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=url]:focus,select:focus,textarea:focus{outline:0;border-color:#b3d7fd}.input:disabled,input[type=date]:disabled,input[type=datetime-local]:disabled,input[type=email]:disabled,input[type=file]:disabled,input[type=number]:disabled,input[type=password]:disabled,input[type=search]:disabled,input[type=tel]:disabled,input[type=text]:disabled,input[type=url]:disabled,select:disabled,textarea:disabled{background:#f1f3f5}.input.strip,input[type=date].strip,input[type=datetime-local].strip,input[type=email].strip,input[type=file].strip,input[type=number].strip,input[type=password].strip,input[type=search].strip,input[type=tel].strip,input[type=text].strip,input[type=url].strip,select.strip,textarea.strip{border:none;border-radius:0;padding:5px 0;width:100%;background-color:transparent;background-position:right 2px top 50%;border-bottom:solid 1px #e2e2e2;color:#868686}.input.strip:focus,input[type=date].strip:focus,input[type=datetime-local].strip:focus,input[type=email].strip:focus,input[type=file].strip:focus,input[type=number].strip:focus,input[type=password].strip:focus,input[type=search].strip:focus,input[type=tel].strip:focus,input[type=text].strip:focus,input[type=url].strip:focus,select.strip:focus,textarea.strip:focus{border-color:#b3d7fd}input[type=email],input[type=url]{direction:ltr}input[type=email]::placeholder,input[type=url]::placeholder{text-align:left;direction:ltr}select{background:0 0;-webkit-appearance:none;background-image:url("data:image/svg+xml;utf8,");background-position:right 15px top 50%;background-repeat:no-repeat;background-color:#fff;width:calc(100% - 62px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-right:45px}select:-webkit-autofill{background-image:url("data:image/svg+xml;utf8,")!important;background-position:100% 50%!important;background-repeat:no-repeat!important}input[type=search],input[type=search].strip{background:0 0;-webkit-appearance:none;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAdZJREFUWIXt1s2LjWEYBvDfnDMzFpNIamZIFrMiJYMyFmKhZKfOwoiFr2LFn2BByG6WVrKwMcjWxgoLIlKIUk6RrzAjZWZ8LO731FlwvB+PUbjq6X0X7/VeV/d9P9fz8IdRL8Hpw3x8w0xaOz9GNxq4gJeZcGs1cRab0fU7xLfgMSYzoT3YgNXYhIO4iM+4iTWphGs4jikcFSXvhEGczr4/UFW8C2N4jXUFudvwCYeqGNgnSr6yJH8rpkWLCqMfE9hdUryFE3iC3qLEk7ij+kT34Q32FiHV8Qr7K4q3cArXihCGxd5elMjARnzBvE4f1dreV+AtnicycC/7/7K8BhaIvqXCO3zFwrwGZtCT0EAtW9N5DTSxWGR/CizNns/yEgbFEK5NZGCnaEPHE7e9Ai9wA6OJDIzistgJubFdxHB/RfFVYgCHixJruI5x5dNwDm6J47sUhkTvjpUw0Y1zeOrXR3hHjOA9zmBuTs4Arog4/yhuUZWwHPdFMh7280BZgiP4ILJ/UuymqRQmejPxphiquzgvKnMJDzOxB9glZqiRiecykbfHdawX98EhcdxO4BGu4nYm2EJDzEKPSMIdYrBnFYUq8d/EP2di1gey3cS4ErflvxffASbhcakIINaMAAAAAElFTkSuQmCC);background-position:left 15px top 50%;background-repeat:no-repeat;background-size:20px 20px;width:calc(100% - 60px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-left:45px}select[multiple]{min-height:75px;padding:5px 10px!important;padding-right:50px!important}select[multiple] option{padding:10px 4px;border-bottom:solid 1px #f1f1f1}select[multiple] option:last-child{border-bottom:none}textarea{min-height:75px;resize:vertical;line-height:32px;padding:5px 15px}textarea.tall{min-height:180px}fieldset{border:none;margin:0;padding:0}.counter{font-size:13px;float:right;margin-top:-20px}.file-preview{background:#fff url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAIElEQVQoU2NkYGAwZsAEZ9GFGIeIQix+wfQgyDODXSEAcUwGCrDSHgkAAAAASUVORK5CYII=)!important;border:solid 1px #e2e2e2;box-shadow:inset 0 0 3px #a0a0a0;border-radius:8px;width:calc(100% - 2px);max-height:180px;visibility:visible!important}.video-preview{padding-top:56%;position:relative;border-radius:10px;background:#e7e7e7;overflow:hidden;margin:0}.video-preview iframe{position:absolute;top:0;width:100%;height:100%;border:none}.map-preview{padding-top:50%;position:relative;margin-bottom:10px;border-radius:10px;background:#e7e7e7;overflow:hidden;box-shadow:0 0 30px rgba(218,218,218,.5)}.map-preview iframe{position:absolute;top:0;width:100%;height:100%;border:none}.tooltip{position:relative}.tooltip.large:hover:after{white-space:normal;width:280px}.tooltip:hover:after{white-space:nowrap;background:#333;border-radius:5px;bottom:26px;color:#fff;content:attr(data-tooltip);padding:5px 15px;position:absolute;font-size:13px;line-height:20px;z-index:98;left:20%;margin-left:-30px}.tooltip:hover:before{border:solid;border-color:#333 transparent;border-width:6px 6px 0 6px;bottom:20px;content:"";position:absolute;z-index:99;left:5px}.tooltip.down:hover:after{top:26px;bottom:inherit}.tooltip.down:hover:before{top:20px;border-width:0 6px 6px 6px;bottom:inherit}.tag{display:inline-block;background:#e7e7e7;color:#868686;border-radius:12px;line-height:24px;padding:0 8px;font-size:12px;box-shadow:none!important;border:none;height:auto;width:auto;white-space:nowrap;text-overflow:ellipsis}.tag:hover{border:none}.tag.green{background:#1bbf61;color:#fff}.tag.red{background:#f53d3d;color:#fff}.tag.yellow{background:#ffe28b;color:#494949}.tag.focus{background:#f02e65;color:#fff}.tag.dark{background:#6f6f6f;color:#e7e7e7}.tag.blue{background:#4abde8;color:#fff}.tag.link{background:#1e849e;color:#fff}input[type=checkbox]{width:26px;height:16px;position:relative;-webkit-appearance:none;border-radius:0;border:none;background:0 0;vertical-align:middle}input[type=checkbox]:after{content:"";display:block;width:20px;height:20px;background:#fff;top:-5px;border-radius:50%;position:absolute;border:solid 3px #f02e65;vertical-align:middle}input[type=checkbox]:checked:after{text-align:center;font-family:fontello;content:'\e83d';font-size:16px;line-height:20px;color:#fff;background:#f02e65}input[type=checkbox]:focus{outline:0}input[type=checkbox]:focus:after,input[type=checkbox]:hover:after{outline:0;border-color:#000}input[type=checkbox]:checked:focus:after,input[type=checkbox]:checked:hover:after{border-color:#f02e65}.input-copy{position:relative}.input-copy input,.input-copy textarea{padding-right:65px;width:calc(100% - 82px);resize:none}.input-copy .copy{position:absolute;top:0;right:0;border-left:solid 1px #e2e2e2;height:calc(100% - 2px);width:50px;line-height:50px;text-align:center;background:#fbfbfb;margin:1px;border-radius:0 10px 10px 0}.paging{color:#8d8e8e;padding:5px 15px;font-size:12px}.paging form{display:inline-block}.blue-snap iframe{-webkit-appearance:none;-moz-appearance:none;-webkit-transform:translateZ(0);box-sizing:content-box;height:40px;line-height:40px;border:solid 1px #e2e2e2;border-radius:10px;padding:5px 15px;font-size:16px;display:block;width:calc(100% - 32px);margin-bottom:30px;float:none!important;height:40px!important;width:calc(100% - 32px)!important;border:solid 1px #e2e2e2!important;background:0 0!important;position:static!important}.blue-snap iframe[type=file]{line-height:0;padding:15px;height:auto}.blue-snap iframe[xtype=file]{line-height:normal;height:auto;border:none;position:absolute;top:0;left:0;bottom:0;opacity:0;cursor:pointer;padding:0;margin:0;font-size:0;width:100%}.blue-snap iframe[xtype=file]:disabled{opacity:0!important}.blue-snap iframe:focus{outline:0;border-color:#b3d7fd}.blue-snap iframe:disabled{background:#f1f3f5}.blue-snap iframe.strip{border:none;border-radius:0;padding:5px 0;width:100%;background-color:transparent;background-position:right 2px top 50%;border-bottom:solid 1px #e2e2e2;color:#868686}.blue-snap iframe.strip:focus{border-color:#b3d7fd}.blue-snap .error{font-size:12px;margin-top:-25px;color:#f53d3d;height:40px;padding-left:2px}.pell{height:auto;padding-bottom:0;margin-bottom:0;padding-top:0;background:#fff;line-height:normal!important}.pell.hide{padding:0!important;height:1px;min-height:1px;max-height:1px;border:none;box-shadow:none;margin-bottom:20px;opacity:0}.pell [contenteditable=true]:empty:before{content:attr(placeholder);display:block;color:#868686}.pell .pell-actionbar{border-bottom:solid 1px #e7e7e7;margin:0 -15px 15px -15px;padding:10px 15px}.pell .pell-content{min-height:100px;display:block;padding:10px;margin:-10px;cursor:text}.pell .pell-content:focus{outline:0}.pell button{background:inherit;color:inherit;margin:0;padding:0;padding-right:15px;height:40px;line-height:40px;box-shadow:none;cursor:pointer;font-size:13px;border-radius:0}.pell button.pell-button-selected,.pell button:focus,.pell button:hover{color:#1e849e}.pell h1,.pell h2,.pell h3,.pell h4,.pell h5,.pell h6{text-align:inherit;margin-bottom:30px}.pell b,.pell strong{font-weight:700}.pell ol,.pell ul{margin:0 0 20px 0}.pell ol li,.pell ul li{display:list-item!important;list-style:inherit;margin-bottom:10px}.pell ol li p,.pell ul li p{margin:0}.pell ul li{margin:0 20px;display:list-item}label.switch{line-height:42px}input[type=checkbox].switch{width:67px;height:42px;line-height:42px;border-radius:21px;background:#818181;display:block;margin:0;padding:5px;padding-left:30px;padding-right:5px}input[type=checkbox].switch:checked{background:#f02e65;padding-left:5px;padding-right:30px}input[type=checkbox].switch:focus:after,input[type=checkbox].switch:hover:after{background:#fff}input[type=checkbox].switch:after{content:"";display:block;width:32px;height:32px;background:#fff;border-radius:50%;border:none;position:static;top:0}.password-meter{margin:-41px 10px 30px 10px;height:2px;background:0 0;max-width:100%;z-index:2;position:relative}.password-meter.weak{background:#f53d3d}.password-meter.medium{background:#ffed4d}.password-meter.strong{background:#1bbf61}.color-input:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.color-input .color-preview{width:53px;height:53px;float:left;margin-right:10px;background:#000;border-radius:10px;box-shadow:inset 0 0 3px #a0a0a0;position:relative}.color-input .color-preview input{opacity:0;position:absolute;top:0;bottom:0;left:0;right:0;width:100%;height:100%;cursor:pointer}.color-input input{text-transform:uppercase;float:left;width:calc(100% - 95px)}.grecaptcha-badge{box-shadow:none!important;border-radius:10px!important;overflow:hidden!important;background:#4d92df!important;bottom:25px}.grecaptcha-badge:hover{width:256px!important}.back{font-size:15px;line-height:24px;height:24px;margin-left:-15px;margin-top:-25px;margin-bottom:20px}hr{height:1px;background:#eceff1;border:none}.upload{position:relative}.upload:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.upload input{position:absolute;top:0;left:0;opacity:0;cursor:pointer}.upload.single .preview{height:0;position:relative;padding-top:100%;width:100%;margin-bottom:15px!important}.upload.single .preview li{position:absolute;top:0;width:calc(100% - 20px);height:calc(100% - 20px);margin-right:0!important;margin-bottom:0!important}.upload .button{float:left;margin-right:20px!important}.upload .button.disabled,.upload .button.disabled:hover{background:0 0;color:inherit;border-color:inherit}.upload .count{float:left;line-height:52px}.upload .progress{background:#1bbf61;height:6px;border-radius:3px;margin-bottom:15px!important}.upload .preview:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.upload .preview li{float:left;margin-right:20px!important;margin-bottom:15px!important;background:#f1f1f1;width:150px;height:150px;line-height:148px;text-align:center;border-radius:20px;overflow:hidden;position:relative;cursor:pointer;border:solid 10px #f1f1f1}.upload .preview li:hover:before{background:#f02e65}.upload .preview li:before{content:'\e807';font-family:fontello;font-size:12px;position:absolute;width:20px;height:20px;display:block;top:5px;right:5px;text-align:center;line-height:20px;vertical-align:middle;border-radius:50%;background:#484848;color:#fff;z-index:1}.upload .preview li img{vertical-align:middle;max-height:150px;max-width:150px;-webkit-filter:drop-shadow(0 0 6px rgba(0, 0, 0, .3));filter:drop-shadow(0 0 1px rgba(0, 0, 0, .3))}.upload.wide .preview li{height:0;width:100%;position:relative;padding-top:30.547%;background:#e7e7e7;border-radius:10px;overflow:hidden;border:solid 1px #f9f9f9;margin:0}.upload.wide .preview li img{border-radius:10px;position:absolute;top:0;width:100%;display:block;opacity:1;max-width:inherit;max-height:inherit}ol{list-style:none;counter-reset:x-counter;padding:0}ol li{counter-increment:x-counter;line-height:30px;margin-bottom:30px;margin-left:45px}ol li::before{display:inline-block;content:counter(x-counter);color:#f02e65;color:#fff;background:#fff;background:#f02e65;border:solid 2px #f02e65;margin-right:15px;margin-left:-45px;width:26px;height:26px;border-radius:50%;text-align:center;line-height:26px}.required{color:#f53d3d;font-size:8px;position:relative;top:-8px}.drop-list{position:relative;outline:0}.drop-list.open ul{display:block}.drop-list ul{position:relative;background:#fff;border-radius:10px;box-shadow:0 0 3px rgba(0,0,0,.05);padding:30px;display:block;border-bottom:none;box-shadow:0 0 6px rgba(0,0,0,.1);display:none;position:absolute;bottom:calc(100% + 10px);z-index:2;padding:0;left:-10px;max-width:280px;min-width:240px;overflow:hidden}.drop-list ul.padding-small{padding:15px}.drop-list ul.y-scroll{overflow-y:auto}.drop-list ul.danger{background:#f53d3d;color:#fff}.drop-list ul.focus{background:#f02e65;color:#fff}.drop-list ul.focus .button,.drop-list ul.focus button{background:#fff;color:#f02e65}.drop-list ul.warning{background:#ffed4d;color:#2d2d2d}.drop-list ul.warning .button,.drop-list ul.warning button{background:rgba(45,45,45,.8);color:#ffed4d}.drop-list ul>footer{margin:30px -30px -30px -30px;padding:15px 30px;background:#f5f5f5;border:solid 1px #eaeaea;border-radius:0 0 10px 10px}.drop-list ul hr{height:2px;background:#eceff1;border:none;margin:30px -30px}.drop-list ul .header{position:static;height:40px;padding:20px 30px 20px 30px;margin-bottom:30px;margin:-30px -30px 20px -30px;background:#f9f9f9;border-bottom:solid 1px #efefef}.drop-list ul .toggle{position:relative;border-top:2px solid #f6f7f8;border-bottom:2px solid #f6f7f8;margin:0 -30px;padding:30px;height:35px;overflow:hidden}.drop-list ul .toggle button.ls-ui-open{position:absolute;top:0;left:0;width:100%;height:95px;background:0 0;opacity:.5;border-radius:0}.drop-list ul .toggle .icon-minus{display:none}.drop-list ul .toggle .content{display:none}.drop-list ul .toggle.open{height:auto}.drop-list ul .toggle.open .icon-minus{display:block}.drop-list ul .toggle.open .icon-plus{display:none}.drop-list ul .toggle.open .content{display:block}.drop-list ul .list li{border-bottom:solid 2px #f6f7f8;margin:0 -30px 30px -30px;padding:0 30px 30px 30px}.drop-list ul .list li:last-child{padding-bottom:0;margin-bottom:0;border-bottom:none}.drop-list ul.new{text-align:center}.drop-list ul.new i{font-size:80px;line-height:80px;font-family:Poppins,sans-serif;font-style:normal;font-weight:300}.drop-list ul.new b{margin-top:20px;display:block}.drop-list ul:before{border:solid;border-color:#fff transparent;border-width:8px 8px 0 8px;bottom:-8px;content:"";position:absolute;z-index:99;left:30px}.drop-list ul li{border-bottom:solid 1px #f1f3f5;margin:0;padding:0}.drop-list ul li:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.drop-list ul li .link,.drop-list ul li a{vertical-align:middle;height:30px;line-height:30px;display:block;padding:10px 25px;color:inherit;font-size:14px;border:none;max-width:260px;cursor:pointer}.drop-list ul li .link:hover,.drop-list ul li a:hover{background:#f1f3f5;border-color:transparent}.drop-list ul li.disabled .link:hover,.drop-list ul li.disabled a:hover{background:0 0}.drop-list ul li .avatar{width:30px;height:30px;margin-right:10px;float:left}.drop-list ul li:last-child{border-bottom:none}.drop-list.bottom ul{bottom:auto;margin-top:-2px}.drop-list.bottom ul:before{bottom:auto;top:-8px;border-width:0 8px 8px 8px}.disabled{opacity:.2;cursor:default}.disabled .button,.disabled .link,.disabled a,.disabled button{cursor:default!important}.disabled .button:hover,.disabled .link:hover,.disabled a:hover,.disabled button:hover{background:0 0}.tags{-webkit-appearance:none;-moz-appearance:none;-webkit-transform:translateZ(0);box-sizing:content-box;height:40px;line-height:40px;border:solid 1px #e2e2e2;border-radius:10px;padding:5px 15px;font-size:16px;display:block;width:calc(100% - 32px);margin-bottom:30px;background:#fff;min-height:42px;height:auto}.tags[type=file]{line-height:0;padding:15px;height:auto}.tags[xtype=file]{line-height:normal;height:auto;border:none;position:absolute;top:0;left:0;bottom:0;opacity:0;cursor:pointer;padding:0;margin:0;font-size:0;width:100%}.tags[xtype=file]:disabled{opacity:0!important}.tags:focus{outline:0;border-color:#b3d7fd}.tags:disabled{background:#f1f3f5}.tags.strip{border:none;border-radius:0;padding:5px 0;width:100%;background-color:transparent;background-position:right 2px top 50%;border-bottom:solid 1px #e2e2e2;color:#868686}.tags.strip:focus{border-color:#b3d7fd}.tags .add{display:inline-block!important;border:none;padding:0;width:auto;margin:0}.tags ul.tags-list{display:inline}.tags ul.tags-list li{display:inline-block!important;margin-right:10px;font-size:16px;padding:5px 10px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tags ul.tags-list li::before{float:right;content:'\e807';font-family:fontello;font-style:normal;display:inline-block;text-align:center;line-height:16px;width:16px;height:16px;font-size:12px;background:#000;color:#fff;border-radius:50%;margin-top:4px;margin-bottom:4px;margin-left:6px;margin-right:0}.console{height:100%;width:100%;padding:0}.console body{position:relative;height:calc(100% - 70px);width:calc(100% - 320px);padding-top:70px;padding-bottom:0;padding-right:50px;padding-left:270px;margin:0;color:#4b4b4b;background:#eceff1}.console body .project-only{display:none!important}.console body.show-nav .project-only{display:inline-block!important}.console body.hide-nav .console-back{display:block}.console body.hide-nav .account{display:none}.console body.index .console-back{display:none}.console body.index .account{display:block}.console body .console-back{display:none}.console body:before{content:'';display:block;position:absolute;width:calc(100% - 220px);height:100px;top:-100px;left:0;right:0;background:#fff;z-index:1000;border-left:solid 220px #132a3b}.console header{position:fixed;top:0;width:calc(100% - 280px);height:40px;line-height:40px;padding:15px 30px;background:#fff;box-shadow:0 0 2px rgba(0,0,0,.1);margin:0 -50px;z-index:2;font-size:14px}.console header .setup-new{width:40px;height:40px;line-height:40px}.console header .list{width:240px}.console header .list select{height:40px;line-height:40px;padding-top:0;padding-bottom:0;border:none;border-radius:26px;background-color:#ececec;color:#868686}.console header .account{margin-left:25px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.console header .account:hover{border-bottom:none}.console header .avatar{height:40px;width:40px}.console header .notifications{position:relative;font-size:20px}.console header .notifications a{color:#1b3445}.console header .notifications:after{position:absolute;content:"";display:block;background:#f53d3d;width:8px;height:8px;border-radius:50%;top:3px;right:3px}.console header nav{background:#1b3445;background:linear-gradient(#132a3b,#302839);background:linear-gradient(#143650,#302839);color:#788c99;position:fixed;height:100%;width:220px;top:0;left:0}.console header nav .logo{height:39px;padding:15px 20px;display:block;border-bottom:none}.console header nav .logo:hover{border-bottom:none}.console header nav .logo img{display:inline-block;margin-top:9px;width:75%}.console header nav .logo svg g{fill:#f02e65}.console header nav .icon{display:block;border:none;margin:18px 10px 50px 10px}.console header nav .icon img{display:block}.console header nav .icon:hover{border-bottom:none}.console header nav .icon:hover svg g{fill:#f02e65}.console header nav .container{overflow:scroll;height:calc(100% - 183px);padding-bottom:50px;width:100%}.console header nav .project-box{padding:20px;text-align:center;display:block;border:none;line-height:100px;height:100px}.console header nav .project-box img{max-height:80px;max-width:80%;display:inline-block;vertical-align:middle}.console header nav .project{display:block;padding:85px 25px 20px 25px;color:#788c99;position:relative;border:none;height:20px}.console header nav .project:hover{border-bottom:none}.console header nav .project .name{height:20px;line-height:20px;margin:0;padding:0;display:inline-block;max-width:100%}.console header nav .project .arrow{display:block;position:absolute;right:5px;top:10px;width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #788c99;transform:rotate(225deg)}.console header nav .project img{position:absolute;bottom:40px;display:block;margin-bottom:10px;max-height:35px;max-width:40%}.console header nav .subtitle{padding:0 30px 5px 30px;display:block;font-size:12px;font-weight:300}.console header nav .links{margin-bottom:15px!important}.console header nav .links.top{border:none;padding-bottom:0;margin-bottom:5px!important}.console header nav .links.bottom{position:absolute;bottom:0;left:0;right:0;padding-bottom:0;border:none;margin-bottom:0!important}.console header nav .links.bottom a{border-top:solid 1px #2a253a;border-bottom:none}.console header nav .links .sub{display:inline-block;border:none;width:25px;height:25px;line-height:25px;border-radius:50%;padding:0;background:#f02e65;color:#fff;text-align:center;font-size:12px;margin:18px}.console header nav .links .sub i{width:auto;margin:0}.console header nav .links .sub:hover{border:none}.console header nav .links a{padding:12px 20px;border:none;display:block;color:#87a5b9;font-weight:400;border-left:solid 5px transparent}.console header nav .links a i{margin-right:8px;width:22px;display:inline-block}.console header nav .links a.selected,.console header nav .links a:hover{color:#e4e4e4;font-weight:500}.console header nav:after{content:'';display:block;position:absolute;background:#302839;height:100px;width:100%;bottom:-100px}.console>footer{width:calc(100% + 100px);margin:0 -50px;box-sizing:border-box;background:0 0;padding-right:30px;padding-left:30px}.console>footer ul{float:none;text-align:center}.console>footer ul li{float:none;display:inline-block}.console .projects{position:relative}.console .projects:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.console .projects li{float:left;margin-right:50px;margin-bottom:50px;width:270px}.console .projects li.new,.console .projects li:nth-child(3n){margin-right:0}.console .dashboard{padding:20px;min-height:95px;overflow:hidden;position:relative;z-index:1}.console .dashboard hr{margin:20px -20px}.console .dashboard footer{margin:-20px;padding:20px;background:#fcfeff;border:none;color:#1e849e}.console .dashboard .col{position:relative}.console .dashboard .col:last-child:after{display:none}.console .dashboard .col:after{content:"";display:block;width:2px;background:#eceff1;height:calc(100% + 110px);position:absolute;top:-20px;bottom:-20px;right:24px}@media only screen and (max-width:550px),only screen and (min-width:551px) and (max-width:970px){.console .dashboard .col:after{width:calc(100% + 40px);height:3px;position:static;margin:20px -20px}}.console .dashboard .value{color:#f02e65;vertical-align:bottom;line-height:55px}.console .dashboard .value .sum{font-size:55px;line-height:55px;font-weight:700;vertical-align:bottom}.console .dashboard .unit{font-weight:500;line-height:20px;vertical-align:bottom;font-size:16px;display:inline-block;margin-bottom:5px;margin-left:5px;color:#f02e65}.console .dashboard .metric{color:#f02e65;font-weight:400;font-size:13px;line-height:16px}.console .dashboard .range{color:#818181;font-weight:400;font-size:14px;line-height:16px}.console .dashboard a{display:block;font-weight:400;font-size:14px;line-height:16px;padding:0;border:none}.console .dashboard .chart-metric{width:19%}@media only screen and (min-width:551px) and (max-width:970px),only screen and (max-width:550px){.console .dashboard .chart-metric{width:100%}}.console .dashboard .chart{width:80%;position:relative;height:0;padding-top:20px;padding-bottom:26%;margin-right:-2px;overflow:hidden;background-color:#fff;background-image:linear-gradient(transparent 1px,transparent 1px),linear-gradient(90deg,transparent 1px,transparent 1px),linear-gradient(#f1f1f1 1px,transparent 1px),linear-gradient(90deg,#f1f1f1 1px,transparent 1px);background-size:100px 100px,100px 100px,20px 20px,20px 20px;background-position:-2px -2px,-2px -2px,-1px -1px,-1px -1px;background-repeat:round;border:solid 1px #f1f1f1;border-right:solid 1px transparent;border-bottom:solid 1px transparent}@media only screen and (min-width:551px) and (max-width:970px),only screen and (max-width:550px){.console .dashboard .chart{width:100%;float:none;margin-bottom:20px}}.console .dashboard .chart canvas{position:absolute;bottom:0;display:block;height:100%;width:100%}.console .link-list li{margin-bottom:15px}.console .link-list i{display:inline-block;width:30px;height:30px;line-height:30px;text-align:center;background:#818181;color:#f1f3f5;border-radius:50%;margin-right:15px}.console .link-list i.fade{background:0 0;color:#818181}.console .provider{width:50px;height:50px;background:#f5f5f5;color:#868686;line-height:50px;text-align:center;font-size:25px;border-radius:50%}.console .provider.facebook{color:#fff;background:#3b5998}.console .provider.twitter{color:#fff;background:#55beff}.console .provider.telegram{color:#fff;background:#3ba9e1}.console .provider.github{color:#fff;background:#24292e}.console .provider.whatsapp{color:#fff;background:#25d366}.console .provider.linkedin{color:#fff;background:#1074af}.console .provider.microsoft{color:#fff;background:#137ad4}.console .provider.google{color:#fff;background:#4489f1}.console .provider.bitbucket{color:#fff;background:#2a88fb}.console .provider.gitlab{color:#faa238;background:#30353e}.console .provider.instagram{color:#fff;background:radial-gradient(circle at 30% 107%,#fdf497 0,#fdf497 5%,#fd5949 45%,#d6249f 60%,#285aeb 90%)}.console .premium{z-index:3;margin-top:320px}.console .premium .message{height:190px;overflow:hidden;position:absolute;top:-280px}.console .premium:after{content:'';position:absolute;top:0;left:-20px;right:-20px;bottom:-20px;background:#f6f7f8;opacity:.7;z-index:300}.console .app-section{height:90px}.console .confirm{background:#1e849e;color:#fff;border-radius:25px;padding:12px;line-height:28px;text-align:center}.console .confirm .action{font-weight:500;cursor:pointer}.console .platforms{overflow:hidden}.console .platforms .box{overflow:hidden}.console .platforms .box img{width:50px;margin:0 auto;margin-bottom:20px}.console .platforms .box .cover{margin:-30px -30px 30px -30px;padding:30px}.console .platforms .box .cover.android{background:#a4ca24}.console .platforms .box .cover.android h1{color:#fff;font-size:18px;margin-top:20px}.console .platforms .col{text-align:center;line-height:30px}.console .platforms a{display:block;margin:-20px;padding:20px}.console .platforms a:hover{background:#fbfeff}.console .platforms img{display:block;margin:0 30px;width:calc(100% - 60px);border-radius:50%;margin-bottom:20px}.dev-feature{display:none}.prod-feature{display:none}.development .dev-feature{display:block;opacity:.6!important;outline:solid #ff0 3px;outline-offset:3px}.development .dev-feature.dev-inline{display:inline-block}.development .prod-feature{display:none}.production .dev-feature{display:none}.production .prod-feature{display:block}.search{opacity:1!important}@media only screen and (max-width:550px),only screen and (min-width:551px) and (max-width:970px){.search button{margin-top:20px}}html.home body{padding:0 50px}html.home .logo img{max-height:35px;margin:45px 25px 25px 25px}.alerts ul{width:100%;visibility:hidden;position:fixed;padding:0;right:0;left:0;color:#fff;z-index:1002;margin:0 auto;bottom:15px;max-width:650px;opacity:.9}.alerts ul li{margin:1px 0 0 0;padding:0}.alerts ul li div.message{position:relative;padding:12px 35px;margin:0 auto;list-style:none;background:#818181;text-align:center;font-weight:700;border-radius:20px;line-height:16px;min-height:16px}.alerts ul li div.message i{cursor:pointer;position:absolute;font-size:22px;top:8px;left:8px}.alerts ul li div.message.error{color:#fff;background:#f53d3d}.alerts ul li div.message.success{color:#fff;background:#1bbf61}.alerts ul li div.message.warning{color:#fff;background:#ffed4d}.alerts ul li div.message.open{display:block}.alerts ul li div.message.close{display:none}.alerts .cookie-alert{background:#fff2f6!important;color:#f02e65}.alerts .cookie-alert a{color:#f02e65;font-weight:400;border-bottom:dotted 1px #f02e65}@media only screen and (max-width:550px),only screen and (min-width:551px) and (max-width:970px){.alerts ul{top:auto;bottom:0;max-width:100%}.alerts ul li{margin:5px 0 0 0}.alerts ul li div.message{border-radius:0}}article{overflow-wrap:break-word;word-wrap:break-word}article h1{font-size:36px}article h2{font-size:24px}article h3{font-size:20px}article h4{font-size:20px}article h5{font-size:18px}article h6{font-size:16px}article h1,article h2,article h3,article h4,article h5,article h6{margin-top:30px!important;margin-bottom:30px!important}article p{line-height:32px;font-size:17px}article .update{display:block;margin-top:50px!important}article table{width:100%;margin:0;margin-bottom:30px!important;border-radius:0;border-bottom:solid 1px #e7e7e7}article table thead td{font-weight:500;padding:5px 15px}article table td,article table th{padding:15px;height:auto}article table td:first-child,article table th:first-child{padding-left:10px}article table td:last-child,article table th:last-child{padding-right:10px}article table td p,article table th p{font-size:inherit;line-height:inherit}article table td p:last-child,article table th p:last-child{margin:0}.avatar{width:60px;height:60px;border-radius:50%;background:#ddd;display:inline-block;overflow:hidden;box-shadow:0 0 6px rgba(0,0,0,.09);position:relative;z-index:1;opacity:1!important}.avatar:before{content:"";position:absolute;width:100%;height:100%;z-index:0;background:#ddd}.avatar.inline{display:inline-block;vertical-align:middle}.avatar.trans{background:0 0}.avatar.xs{width:20px;height:20px}.avatar.small{width:50px;height:50px}.avatar.big{width:100px;height:100px}.avatar.huge{width:150px;height:150px}.box{position:relative;background:#fff;border-radius:10px;box-shadow:0 0 3px rgba(0,0,0,.05);padding:30px;display:block;border-bottom:none}.box.padding-small{padding:15px}.box.y-scroll{overflow-y:auto}.box.danger{background:#f53d3d;color:#fff}.box.focus{background:#f02e65;color:#fff}.box.focus .button,.box.focus button{background:#fff;color:#f02e65}.box.warning{background:#ffed4d;color:#2d2d2d}.box.warning .button,.box.warning button{background:rgba(45,45,45,.8);color:#ffed4d}.box>footer{margin:30px -30px -30px -30px;padding:15px 30px;background:#f5f5f5;border:solid 1px #eaeaea;border-radius:0 0 10px 10px}.box hr{height:2px;background:#eceff1;border:none;margin:30px -30px}.box .header{position:static;height:40px;padding:20px 30px 20px 30px;margin-bottom:30px;margin:-30px -30px 20px -30px;background:#f9f9f9;border-bottom:solid 1px #efefef}.box .toggle{position:relative;border-top:2px solid #f6f7f8;border-bottom:2px solid #f6f7f8;margin:0 -30px;padding:30px;height:35px;overflow:hidden}.box .toggle button.ls-ui-open{position:absolute;top:0;left:0;width:100%;height:95px;background:0 0;opacity:.5;border-radius:0}.box .toggle .icon-minus{display:none}.box .toggle .content{display:none}.box .toggle.open{height:auto}.box .toggle.open .icon-minus{display:block}.box .toggle.open .icon-plus{display:none}.box .toggle.open .content{display:block}.box .list li{border-bottom:solid 2px #f6f7f8;margin:0 -30px 30px -30px;padding:0 30px 30px 30px}.box .list li:last-child{padding-bottom:0;margin-bottom:0;border-bottom:none}.box.new{text-align:center}.box.new i{font-size:80px;line-height:80px;font-family:Poppins,sans-serif;font-style:normal;font-weight:300}.box.new b{margin-top:20px;display:block}a.box{border-right:none;border-left:none}a.box:hover{border-bottom:none;border-right:none;border-left:none;background:#f8fdff;box-shadow:0 0 1px rgba(0,0,0,.2)}.box-asidex{padding-right:25px!important;padding-left:70px;right:0;background:#f9f9f9;border-radius:0 10px 10px 0;height:calc(100% - 30px);position:absolute;padding-top:30px}.box-asidex:after{content:"";display:block;position:absolute;height:100%;width:51px;background:#fff;top:0;bottom:0;left:-6px}.cover{background:#fff2f6;padding:30px 50px;margin:0 -50px;position:relative;border-bottom:solid 1px #dedede}.cover .title,.cover h1,.cover h2,.cover h3,.cover h4{color:#f02e65;font-weight:600;margin-bottom:40px!important;font-size:28px;line-height:42px}.cover i:before{margin:0!important}.cover p{color:#737373}.cover .button{color:#fff}.cover .link,.cover a{color:#f02e65;border-left:none;border-right:none;cursor:pointer}.cover .link:hover,.cover a:hover{border-bottom-color:#f02e65}.console .database .row .col{height:452px}.console .database .row .col:after{width:2px;right:20px}.console .database hr{margin:0 -20px;background:#efefef;height:2px}.console .database h3{font-size:13px;line-height:20px;height:20px;background-color:#f5f5f5;margin:-20px -20px 0 -20px;padding:10px 20px;border-bottom:solid 1px #e1e2e2;font-weight:600}.console .database .empty{height:160px;font-size:12px;text-align:center;margin:50px 0}.console .database .empty h4{font-size:13px;font-weight:600;line-height:120px}.console .database .search{background-color:#f5f5f5;margin:0 -20px 0 -20px;padding:10px 15px}.console .database .search input{height:40px;background-color:#fff;border-radius:25px;padding-top:0;padding-bottom:0}.console .database .code{height:411px;background:#f5f5f5;margin:0 -20px -20px -20px;padding:20px;width:calc(100% - 10px)}.console .database .code .ide{overflow:scroll;height:451px;margin:-20px;box-shadow:none;border-radius:0}.console .database .paging{background:#f5f5f5;margin:0 -20px -20px -20px;padding:20px}.console .database .button{margin:0 -20px;padding:0 20px!important;text-align:inherit;color:#f02e65;width:100%;font-size:15px;line-height:55px;box-sizing:content-box}.console .database .button i{margin-right:8px}.console .database .button:hover{border:none;background:#fff2f6}.console .database .items{margin:0 -20px;height:260px;overflow-x:hidden;overflow-y:scroll}.console .database .items form{opacity:0;position:relative}.console .database .items form button{background:red;position:absolute;top:0;bottom:0;left:0;right:0;width:100%;height:45px;border-radius:0;cursor:pointer}.console .database .items li{padding:0;margin:0 0;line-height:45px;font-size:15px;padding-left:50px;padding-right:30px;position:relative}.console .database .items li i{position:absolute;display:none;right:10px}.console .database .items li .name{display:inline-block;width:100%;height:28px}.console .database .items li.selected,.console .database .items li:hover{background:#f5f5f5}.console .database .items li.selected i,.console .database .items li:hover i{display:block}.console .database .items li:last-child{border-bottom:none}body>footer{color:#818181;line-height:40px;margin:0 -50px;padding:12px 50px;font-size:13px;width:100%;background:#f1f1f1;position:relative;margin-top:80px!important}body>footer:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}body>footer .logo img{height:22px;padding-top:12px}body>footer a{color:#505050}body>footer a:hover{border-bottom-color:#505050}body>footer ul:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}body>footer ul li{float:left;margin-right:20px!important}body>footer .copyright{padding-left:2px}[data-ls-if]{display:none}[data-service]{opacity:0}.load-service-start{opacity:0}.load-service-end{opacity:1;transition:opacity .5s ease-out;-moz-transition:opacity .5s ease-out;-webkit-transition:opacity .5s ease-out;-o-transition:opacity .5s ease-out}.modal-open .modal-bg,.modal-open body .modal-bg{position:fixed;content:'';display:block;width:100%;height:100%;left:0;right:0;top:0;bottom:0;background:#0c0c0c;opacity:.5;z-index:4}.modal{overflow:auto;display:none;position:fixed;width:100%;max-height:90%;max-width:640px;background:#fff;z-index:1000;box-shadow:0 0 4px rgba(0,0,0,.25);padding:30px;left:50%;top:50%;transform:translate(-50%,-50%);border-radius:10px;box-sizing:border-box;text-align:left}@media only screen and (max-width:550px),only screen and (min-width:551px) and (max-width:970px){.modal{width:calc(100% - 20px)}}.modal.padding-small{padding:15px}.modal.height-tiny form{height:100px}.modal.height-small form{height:220px}.modal.width-small{max-width:400px}.modal.width-medium{max-width:500px}.modal.width-large{max-width:800px}.modal.open{display:block}.modalbutton.close{display:none}.modal.fill{height:95%;max-height:95%;max-width:75%}.modal h1,.modal h2{margin-bottom:25px;margin-top:0;font-size:20px;text-align:left}.modal h1,.modal h2,.modal h3,.modal h4,.modal h5,.modal h6{color:inherit!important;line-height:35px}.modal .main,.modal form{position:relative;border-top:solid 1px #e7e7e7;padding:30px 30px 0 30px;margin:0 -30px}.modal .separator{margin:20px -30px}.modal .info{margin:0 -30px;padding:20px 30px;background:#f5fbff;color:#3b5d73;border-top:solid 1px #eaf2f7;border-bottom:solid 1px #eaf2f7}.modal button.close{width:30px;height:30px;line-height:30px;padding:0;margin:0;background:#1b1b1b;color:#fff;border-radius:50%}.phases{list-style:none;margin:0;padding:0;position:relative}.phases li{display:none}.phases li li{display:block}.phases li.selected{display:block}.phases .number{display:none}.phases h2,.phases h3,.phases h4,.phases h5,.phases h6{margin:0 0 30px 0;text-align:inherit}.container{position:relative}.container .tabs{height:55px;line-height:55px;list-style:none;padding:0;margin-bottom:50px!important;margin-top:-55px;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.container .tabs:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.container .tabs .selected{font-weight:400;color:#f02e65;position:relative;opacity:1}.container .tabs .selected:after{content:"";display:block;height:2px;background:#f02e65;width:calc(100% - 46px);position:absolute;bottom:0;border-radius:2px;left:-2px}.container .tabs .number{display:none}.container .tabs li{float:left;padding-right:50px;color:#f02e65;opacity:.9;cursor:pointer}.container .tabs li:focus{outline:0}.container .icon{display:none}@media only screen and (max-width:550px),only screen and (min-width:551px) and (max-width:970px){.container .tabs{width:auto;overflow-x:scroll;overflow-y:hidden;white-space:nowrap}.container .tabs li{display:inline-block;float:none}}.ide{background-color:#373738;overflow:hidden;position:relative;z-index:1;box-shadow:0 2px 4px 0 rgba(50,50,93,.3);border-radius:10px;margin-bottom:30px}.ide .tag{color:inherit!important;background:0 0!important;padding:inherit!important;font-size:inherit!important}.ide .copy{position:absolute;bottom:15px;right:15px;cursor:pointer;background:#39393c;border-radius:50%;padding:2px;color:#6a6a6d;border:solid 2px #414142}.ide pre{-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none;color:#e6ebf1;font-weight:400;line-height:20px;font-size:13px;margin:0;padding:20px;padding-left:60px}.ide.light{box-shadow:0 2px 4px 0 rgba(50,50,93,.1);background-color:#fff}.ide.light pre{color:#414770}.ide.light .token.cdata,.ide.light .token.comment,.ide.light .token.doctype,.ide.light .token.prolog{color:#91a2b0}.ide.light .token.attr-name,.ide.light .token.builtin,.ide.light .token.char,.ide.light .token.inserted,.ide.light .token.selector,.ide.light .token.string{color:#149570}.ide.light .token.punctuation{color:#414770}.ide.light .language-css .token.string,.ide.light .style .token.string,.ide.light .token.entity,.ide.light .token.operator,.ide.light .token.url,.ide.light .token.variable{color:#414770}.ide.light .line-numbers .line-numbers-rows{background:#f2feef}.ide.light .line-numbers-rows>span:before{color:#5dc79e}.ide.light .token.keyword{color:#6772e4;font-weight:500}code[class*=language-],pre[class*=language-]{text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4}pre[class*=language-]{overflow:auto}:not(pre)>code[class*=language-]{padding:.1em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#6b7c93}.token.punctuation{color:#f8f8f2}.namespace{opacity:.7}.token.constant,.token.deleted,.token.property,.token.symbol,.token.tag{color:#f92672}.token.boolean,.token.number{color:#f79a59}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#3ecf8e}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url,.token.variable{color:#f8f8f2}.token.atrule,.token.attr-value,.token.class-name,.token.function{color:#45b2e8}.token.keyword{color:#7795f8}.token.important,.token.regex{color:#fd971f}.token.italic{font-style:italic}.token.entity{cursor:help}pre[class*=language-].line-numbers{position:relative;padding-left:60px;counter-reset:linenumber}pre[class*=language-].line-numbers>code{position:relative;white-space:inherit}.line-numbers .line-numbers-rows{background:#39393c;position:absolute;pointer-events:none;top:-20px;padding:20px 0;font-size:100%;left:-60px;width:40px;letter-spacing:-1px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.line-numbers-rows>span{padding-right:5px;pointer-events:none;display:block;counter-increment:linenumber}.line-numbers-rows>span:before{content:counter(linenumber);color:#636365;display:block;padding-right:.8em;text-align:right}html{padding:0;margin:0;direction:ltr}body{margin:0;background:#f6f7f8 no-repeat fixed}main{min-height:100%}ul{padding:0;margin:0}ul li{margin:0;list-style:none}.force-left{direction:ltr;text-align:left}.force-right{direction:rtl;text-align:right}.pull-left{float:left}.pull-right{float:right} \ No newline at end of file diff --git a/public/dist/styles/default-rtl.css b/public/dist/styles/default-rtl.css index 1ca63414b..d7c316a23 100644 --- a/public/dist/styles/default-rtl.css +++ b/public/dist/styles/default-rtl.css @@ -1 +1 @@ -.pull-start{float:right}.pull-end{float:left}img[src=""]{visibility:hidden;display:inline-block}.margin-end{margin-left:20px!important}.margin-start{margin-right:20px!important}.margin-end-small{margin-left:10px!important}.margin-start-small{margin-right:10px!important}.margin-end-large{margin-left:50px!important}.margin-start-large{margin-right:50px!important}.margin-end-no{margin-left:0!important}.margin-start-no{margin-right:0!important}.margin-top{margin-top:30px!important}.margin-bottom{margin-bottom:30px!important}.margin-top-no{margin-top:0!important}.margin-bottom-no{margin-bottom:0!important}.margin-top-xxl{margin-top:140px!important}.margin-top-xl{margin-top:80px!important}.margin-top-large{margin-top:50px!important}.margin-top-small{margin-top:15px!important}.margin-top-tiny{margin-top:5px!important}.margin-top-negative{margin-top:-30px!important}.margin-top-negative-tiny{margin-top:-5px!important}.margin-top-negative-small{margin-top:-15px!important}.margin-top-negative-large{margin-top:-50px!important}.margin-top-negative-xl{margin-top:-80px!important}.margin-top-negative-xxl{margin-top:-100px!important}.margin-bottom-xxl{margin-bottom:140px!important}.margin-bottom-xl{margin-bottom:80px!important}.margin-bottom-large{margin-bottom:50px!important}.margin-bottom-small{margin-bottom:15px!important}.margin-bottom-tiny{margin-bottom:5px!important}.margin-bottom-negative{margin-bottom:-30px!important}.margin-bottom-negative-tiny{margin-bottom:-5px!important}.margin-bottom-negative-small{margin-bottom:-15px!important}.margin-bottom-negative-large{margin-bottom:-50px!important}.margin-bottom-negative-xl{margin-bottom:-80px!important}.margin-bottom-negative-xl{margin-bottom:-100px!important}.ratio-wide{height:0;overflow:hidden;padding-top:56%;position:relative;width:100%}.ratio-wide>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-square{height:0;overflow:hidden;padding-top:56%;position:relative;width:100%}.ratio-square>*{position:absolute;top:0;left:0;width:100%;height:100%}.clear:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}*{font-family:Poppins,sans-serif,Arial;-webkit-font-smoothing:antialiased;font-weight:300}h1,h2,h3,h4,h5,h6{margin:0}h4,h5,h6{font-weight:400}.link,a{color:#1e849e;text-decoration:none;border-left:2px solid transparent;border-right:2px solid transparent;border-bottom:solid 1px transparent}.link:hover,a:hover{border-bottom:dotted 1px #1e849e}.link.disabled,a.disabled{opacity:.5}.link.disabled:hover,a.disabled:hover{border-bottom:none}.link.tag:hover,a.tag:hover{border-bottom:none;opacity:.9}b,strong{font-weight:500}p{margin:0 0 20px 0;line-height:26px}small{font-size:16px;color:#818181}.text-size-small{font-size:13px}.text-size-normal{font-size:16px}.text-one-liner{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.text-bold{font-weight:400!important}.text-danger{color:#f53d3d}.text-success{color:#1bbf61}.text-upper{text-transform:uppercase}.text-warning{color:#ffed4d}.text-focus{color:#f02e65}.text-fade{color:#818181}.text-disclaimer{font-size:11px;color:#818181}.text-fade-extra{color:#818181;opacity:.5}.text-line-high-large{line-height:30px}.text-line-high-xl{line-height:40px}.text-sign{margin:5px 0;font-size:25px;width:25px;height:25px;line-height:25px;display:inline-block}.text-align-center{text-align:center}.text-align-start{text-align:right}.text-align-end{text-align:left}.text-align-left{text-align:left}.text-align-right{text-align:right}.text-dir-ltr{direction:ltr;display:inline-block}.text-dir-rtl{direction:rtl;display:inline-block}.icon-dot-3:before{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-o-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}table{width:calc(100% + 60px);border-collapse:collapse;margin:-30px;border-radius:10px;overflow:hidden;position:relative;table-layout:fixed}table thead{box-shadow:0 0 2px rgba(0,0,0,.25);border-bottom:solid 1px #f1f3f5;font-size:14px}table thead th{position:sticky;top:0}table.small{font-size:14px}table.open-end tbody tr:last-child{border-bottom:none;font-weight:700;background:#f7fbf7}table.full tbody td,table.full tbody th{vertical-align:top;white-space:normal;overflow:auto;line-height:24px;padding-top:20px;padding-bottom:20px;height:auto}table .avatar{width:30px;height:30px}table tr{border-bottom:solid 1px #f1f3f5}table tr:last-child{border-bottom:none}table tr:nth-child(even){background:#fbfbfb}table th{text-align:right;font-weight:400}table th i{color:#818181;font-size:10px;display:inline-block;vertical-align:top;line-height:16px;padding:0 3px}table td,table th{height:65px;padding:0 15px;line-height:50px}table td:first-child,table th:first-child{padding-right:30px}table td:last-child,table th:last-child{padding-left:30px}@media only screen and (max-width:550px){table td:first-child,table th:first-child{width:auto}}table td,table th{overflow:hidden;white-space:nowrap}@media only screen and (max-width:550px),only screen and (min-width:551px) and (max-width:970px){table.vertical{display:block;overflow:hidden;padding-top:12px}table.vertical .hide{display:none}table.vertical tbody,table.vertical td,table.vertical th,table.vertical thead,table.vertical tr{width:100%;display:block}table.vertical th,table.vertical tr{padding-top:12px;padding-bottom:12px}table.vertical th:first-child,table.vertical tr:first-child{padding-top:0}table.vertical td,table.vertical th{padding:5px 20px!important;text-overflow:ellipsis;white-space:normal;height:40px;line-height:40px}table.vertical td:first-child,table.vertical td:last-child,table.vertical th:first-child,table.vertical th:last-child{padding:0 10px}table.vertical td:last-child,table.vertical th:last-child{padding-bottom:0}table.vertical td p,table.vertical th p{display:inline-block;width:calc(100% - 40px)}table.vertical td:before{content:attr(data-title);margin-right:4px;font-weight:400}table.vertical thead{display:none}}.zone{max-width:910px;margin:0 auto 40px auto}.zone.xxxl{max-width:calc(100% - 100px)}@media only screen and (max-width:550px),only screen and (min-width:551px) and (max-width:970px){.zone.xxxl{max-width:100%}}.zone.xxl{max-width:1100px}.zone.xl{max-width:910px}.zone.large{max-width:700px}.zone.medium{max-width:550px}.zone.small{max-width:320px}.row{position:relative;margin:0 -50px;padding-right:50px}@media only screen and (max-width:550px),only screen and (min-width:551px) and (max-width:970px){.row{margin:0 -30px;padding-right:30px}}.row.force-ltr>.col{float:left}.row.force-rtl>.col{float:right}.row.force-reverse>.col{float:left}.row.wide{margin:0 -100px;padding-right:100px}.row.wide>.span-1{width:calc(8.33333333% * 1 - 100px);box-sizing:content-box;padding-left:100px}.row.wide>.span-2{width:calc(8.33333333% * 2 - 100px);box-sizing:content-box;padding-left:100px}.row.wide>.span-3{width:calc(8.33333333% * 3 - 100px);box-sizing:content-box;padding-left:100px}.row.wide>.span-4{width:calc(8.33333333% * 4 - 100px);box-sizing:content-box;padding-left:100px}.row.wide>.span-5{width:calc(8.33333333% * 5 - 100px);box-sizing:content-box;padding-left:100px}.row.wide>.span-6{width:calc(8.33333333% * 6 - 100px);box-sizing:content-box;padding-left:100px}.row.wide>.span-7{width:calc(8.33333333% * 7 - 100px);box-sizing:content-box;padding-left:100px}.row.wide>.span-8{width:calc(8.33333333% * 8 - 100px);box-sizing:content-box;padding-left:100px}.row.wide>.span-9{width:calc(8.33333333% * 9 - 100px);box-sizing:content-box;padding-left:100px}.row.wide>.span-10{width:calc(8.33333333% * 10 - 100px);box-sizing:content-box;padding-left:100px}.row.wide>.span-11{width:calc(8.33333333% * 11 - 100px);box-sizing:content-box;padding-left:100px}.row.wide>.span-12{width:calc(8.33333333% * 12 - 100px);box-sizing:content-box;padding-left:100px}.row.thin{margin:0 -20px;padding-right:20px}.row.thin>.span-1{width:calc(8.33333333% * 1 - 20px);box-sizing:content-box;padding-left:20px}.row.thin>.span-2{width:calc(8.33333333% * 2 - 20px);box-sizing:content-box;padding-left:20px}.row.thin>.span-3{width:calc(8.33333333% * 3 - 20px);box-sizing:content-box;padding-left:20px}.row.thin>.span-4{width:calc(8.33333333% * 4 - 20px);box-sizing:content-box;padding-left:20px}.row.thin>.span-5{width:calc(8.33333333% * 5 - 20px);box-sizing:content-box;padding-left:20px}.row.thin>.span-6{width:calc(8.33333333% * 6 - 20px);box-sizing:content-box;padding-left:20px}.row.thin>.span-7{width:calc(8.33333333% * 7 - 20px);box-sizing:content-box;padding-left:20px}.row.thin>.span-8{width:calc(8.33333333% * 8 - 20px);box-sizing:content-box;padding-left:20px}.row.thin>.span-9{width:calc(8.33333333% * 9 - 20px);box-sizing:content-box;padding-left:20px}.row.thin>.span-10{width:calc(8.33333333% * 10 - 20px);box-sizing:content-box;padding-left:20px}.row.thin>.span-11{width:calc(8.33333333% * 11 - 20px);box-sizing:content-box;padding-left:20px}.row.thin>.span-12{width:calc(8.33333333% * 12 - 20px);box-sizing:content-box;padding-left:20px}.row:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.row .col{float:right;box-sizing:border-box}.row .col.sticky-top{position:sticky;top:0}.row .col.sticky-bottom{position:sticky;bottom:0}.row .span-1{width:calc(8.33333333% * 1 - 40px);box-sizing:content-box;padding-left:40px}.row .span-2{width:calc(8.33333333% * 2 - 40px);box-sizing:content-box;padding-left:40px}.row .span-3{width:calc(8.33333333% * 3 - 40px);box-sizing:content-box;padding-left:40px}.row .span-4{width:calc(8.33333333% * 4 - 40px);box-sizing:content-box;padding-left:40px}.row .span-5{width:calc(8.33333333% * 5 - 40px);box-sizing:content-box;padding-left:40px}.row .span-6{width:calc(8.33333333% * 6 - 40px);box-sizing:content-box;padding-left:40px}.row .span-7{width:calc(8.33333333% * 7 - 40px);box-sizing:content-box;padding-left:40px}.row .span-8{width:calc(8.33333333% * 8 - 40px);box-sizing:content-box;padding-left:40px}.row .span-9{width:calc(8.33333333% * 9 - 40px);box-sizing:content-box;padding-left:40px}.row .span-10{width:calc(8.33333333% * 10 - 40px);box-sizing:content-box;padding-left:40px}.row .span-11{width:calc(8.33333333% * 11 - 40px);box-sizing:content-box;padding-left:40px}.row .span-12{width:calc(8.33333333% * 12 - 40px);box-sizing:content-box;padding-left:40px}@media only screen and (max-width:550px),only screen and (min-width:551px) and (max-width:970px){.row.responsive{width:100%;padding:0;margin:0}.row.responsive>.span-1,.row.responsive>.span-10,.row.responsive>.span-11,.row.responsive>.span-12,.row.responsive>.span-2,.row.responsive>.span-3,.row.responsive>.span-4,.row.responsive>.span-5,.row.responsive>.span-6,.row.responsive>.span-7,.row.responsive>.span-8,.row.responsive>.span-9{width:calc(8.33333333% * 12 - 0px)!important;box-sizing:content-box!important;padding-left:0!important;width:100%!important}}.tiles{position:relative}.tiles:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.tiles li{margin-left:50px!important;float:right;width:calc(33% - 33px)}.tiles li .photo-title{width:calc(100% + 30px);height:15px;margin:-15px -15px 10px -15px;border-radius:10px 10px 0 0;background:#f1f3f5;border-bottom:solid 1px #f1f3f5}.tiles li:nth-child(3n){margin-left:0!important}@media only screen and (max-width:550px){.tiles li{width:100%;margin-left:0!important}}@font-face{font-family:fontello;src:url(data:application/octet-stream;base64,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) format('woff'),url(data:application/octet-stream;base64,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b250ZWxsby5jb20AQwBvAHAAeQByAGkAZwBoAHQAIAAoAEMAKQAgADIAMAAxADkAIABiAHkAIABvAHIAaQBnAGkAbgBhAGwAIABhAHUAdABoAG8AcgBzACAAQAAgAGYAbwBuAHQAZQBsAGwAbwAuAGMAbwBtAGYAbwBuAHQAZQBsAGwAbwBSAGUAZwB1AGwAYQByAGYAbwBuAHQAZQBsAGwAbwBmAG8AbgB0AGUAbABsAG8AVgBlAHIAcwBpAG8AbgAgADEALgAwAGYAbwBuAHQAZQBsAGwAbwBHAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAHMAdgBnADIAdAB0AGYAIABmAHIAbwBtACAARgBvAG4AdABlAGwAbABvACAAcAByAG8AagBlAGMAdAAuAGgAdAB0AHAAOgAvAC8AZgBvAG4AdABlAGwAbABvAC4AYwBvAG0AAAAAAgAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAQIBAwEEAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgETARQBFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBKgErASwBLQEuAS8BMAExATIBMwE0ATUBNgE3ATgBOQE6ATsBPAE9AT4BPwFAAUEBQgFDAUQBRQFGAUcBSAFJAUoBSwFMAU0BTgFPAVABUQFSAVMBVAFVAVYBVwFYAVkBWgFbAVwBXQFeAV8BYAFhAWIBYwFkAWUABHVzZXIGZm9sZGVyBGxpc3QFbG9naW4DY29nB3R3aXR0ZXILYXJ0aWNsZS1hbHQGY2FuY2VsBGhvbWUIZG93bi1kaXIIZmFjZWJvb2sIYXN0ZXJpc2sGdXBsb2FkCXN0b3B3YXRjaAZleHBvcnQFaGVhcnQEcGx1cwZ1cC1kaXIEbWVudQlsZWZ0LW9wZW4KcmlnaHQtb3BlbgVpbmJveAZ3cmVuY2gHY29tbWVudA1zdGFja292ZXJmbG93CHF1ZXN0aW9uCm9rLWNpcmNsZWQHd2FybmluZwRtYWlsBGxpbmsHa2V5LWludgV0cmFzaAhkb3dubG9hZAdnbGFzc2VzBnFyY29kZQdzaHVmZmxlA2V5ZQRsb2NrBnNlYXJjaARiZWxsBXVzZXJzCGxvY2F0aW9uCWJyaWVmY2FzZQlpbnN0YWdyYW0FY2xvY2sFcGhvbmUIY2FsZW5kYXIFcHJpbnQEZWRpdARib2xkBml0YWxpYwZyb2NrZXQId2hhdHNhcHAFZG90LTMMaW5mby1jaXJjbGVkCHZpZGVvY2FtC3F1b3RlLXJpZ2h0B3BpY3R1cmUHcGFsZXR0ZQRsYW1wCWJvb2stb3BlbgJvawhjaGF0LWFsdAdhcmNoaXZlBHBsYXkFcGF1c2UJZG93bi1vcGVuB3VwLW9wZW4FbWludXMIZXhjaGFuZ2UHbmV0d29yawhsaW5rLWV4dA5naXRodWItY2lyY2xlZAZmaWx0ZXIEZG9jcwtsaXN0LWJ1bGxldA1saXN0LW51bWJlcmVkCXVuZGVybGluZQRzb3J0CGxpbmtlZGluBXNtaWxlCGtleWJvYXJkBGNvZGUGc2hpZWxkCWJpdGJ1Y2tldAd3aW5kb3dzCndoZWVsY2hhaXIEYmFuawZnb29nbGUPYnVpbGRpbmctZmlsbGVkCGRhdGFiYXNlCGxpZmVidW95BmhlYWRlcgpiaW5vY3VsYXJzCmNoYXJ0LWFyZWEJcGludGVyZXN0Bm1lZGl1bQZnaXRsYWIIdGVsZWdyYW0AAAAAAQAB//8ADwAAAAAAAAAAAAAAAAAAAAAAGAAYABgAGAOB/zoDgf86sAAsILAAVVhFWSAgS7gADlFLsAZTWliwNBuwKFlgZiCKVViwAiVhuQgACABjYyNiGyEhsABZsABDI0SyAAEAQ2BCLbABLLAgYGYtsAIsIGQgsMBQsAQmWrIoAQpDRWNFUltYISMhG4pYILBQUFghsEBZGyCwOFBYIbA4WVkgsQEKQ0VjRWFksChQWCGxAQpDRWNFILAwUFghsDBZGyCwwFBYIGYgiophILAKUFhgGyCwIFBYIbAKYBsgsDZQWCGwNmAbYFlZWRuwAStZWSOwAFBYZVlZLbADLCBFILAEJWFkILAFQ1BYsAUjQrAGI0IbISFZsAFgLbAELCMhIyEgZLEFYkIgsAYjQrEBCkNFY7EBCkOwAWBFY7ADKiEgsAZDIIogirABK7EwBSWwBCZRWGBQG2FSWVgjWSEgsEBTWLABKxshsEBZI7AAUFhlWS2wBSywB0MrsgACAENgQi2wBiywByNCIyCwACNCYbACYmawAWOwAWCwBSotsAcsICBFILALQ2O4BABiILAAUFiwQGBZZrABY2BEsAFgLbAILLIHCwBDRUIqIbIAAQBDYEItsAkssABDI0SyAAEAQ2BCLbAKLCAgRSCwASsjsABDsAQlYCBFiiNhIGQgsCBQWCGwABuwMFBYsCAbsEBZWSOwAFBYZVmwAyUjYUREsAFgLbALLCAgRSCwASsjsABDsAQlYCBFiiNhIGSwJFBYsAAbsEBZI7AAUFhlWbADJSNhRESwAWAtsAwsILAAI0KyCwoDRVghGyMhWSohLbANLLECAkWwZGFELbAOLLABYCAgsAxDSrAAUFggsAwjQlmwDUNKsABSWCCwDSNCWS2wDywgsBBiZrABYyC4BABjiiNhsA5DYCCKYCCwDiNCIy2wECxLVFixBGREWSSwDWUjeC2wESxLUVhLU1ixBGREWRshWSSwE2UjeC2wEiyxAA9DVVixDw9DsAFhQrAPK1mwAEOwAiVCsQwCJUKxDQIlQrABFiMgsAMlUFixAQBDYLAEJUKKiiCKI2GwDiohI7ABYSCKI2GwDiohG7EBAENgsAIlQrACJWGwDiohWbAMQ0ewDUNHYLACYiCwAFBYsEBgWWawAWMgsAtDY7gEAGIgsABQWLBAYFlmsAFjYLEAABMjRLABQ7AAPrIBAQFDYEItsBMsALEAAkVUWLAPI0IgRbALI0KwCiOwAWBCIGCwAWG1EBABAA4AQkKKYLESBiuwcisbIlktsBQssQATKy2wFSyxARMrLbAWLLECEystsBcssQMTKy2wGCyxBBMrLbAZLLEFEystsBossQYTKy2wGyyxBxMrLbAcLLEIEystsB0ssQkTKy2wHiwAsA0rsQACRVRYsA8jQiBFsAsjQrAKI7ABYEIgYLABYbUQEAEADgBCQopgsRIGK7ByKxsiWS2wHyyxAB4rLbAgLLEBHistsCEssQIeKy2wIiyxAx4rLbAjLLEEHistsCQssQUeKy2wJSyxBh4rLbAmLLEHHistsCcssQgeKy2wKCyxCR4rLbApLCA8sAFgLbAqLCBgsBBgIEMjsAFgQ7ACJWGwAWCwKSohLbArLLAqK7AqKi2wLCwgIEcgILALQ2O4BABiILAAUFiwQGBZZrABY2AjYTgjIIpVWCBHICCwC0NjuAQAYiCwAFBYsEBgWWawAWNgI2E4GyFZLbAtLACxAAJFVFiwARawLCqwARUwGyJZLbAuLACwDSuxAAJFVFiwARawLCqwARUwGyJZLbAvLCA1sAFgLbAwLACwAUVjuAQAYiCwAFBYsEBgWWawAWOwASuwC0NjuAQAYiCwAFBYsEBgWWawAWOwASuwABa0AAAAAABEPiM4sS8BFSotsDEsIDwgRyCwC0NjuAQAYiCwAFBYsEBgWWawAWNgsABDYTgtsDIsLhc8LbAzLCA8IEcgsAtDY7gEAGIgsABQWLBAYFlmsAFjYLAAQ2GwAUNjOC2wNCyxAgAWJSAuIEewACNCsAIlSYqKRyNHI2EgWGIbIVmwASNCsjMBARUUKi2wNSywABawBCWwBCVHI0cjYbAJQytlii4jICA8ijgtsDYssAAWsAQlsAQlIC5HI0cjYSCwBCNCsAlDKyCwYFBYILBAUVizAiADIBuzAiYDGllCQiMgsAhDIIojRyNHI2EjRmCwBEOwAmIgsABQWLBAYFlmsAFjYCCwASsgiophILACQ2BkI7ADQ2FkUFiwAkNhG7ADQ2BZsAMlsAJiILAAUFiwQGBZZrABY2EjICCwBCYjRmE4GyOwCENGsAIlsAhDRyNHI2FgILAEQ7ACYiCwAFBYsEBgWWawAWNgIyCwASsjsARDYLABK7AFJWGwBSWwAmIgsABQWLBAYFlmsAFjsAQmYSCwBCVgZCOwAyVgZFBYIRsjIVkjICCwBCYjRmE4WS2wNyywABYgICCwBSYgLkcjRyNhIzw4LbA4LLAAFiCwCCNCICAgRiNHsAErI2E4LbA5LLAAFrADJbACJUcjRyNhsABUWC4gPCMhG7ACJbACJUcjRyNhILAFJbAEJUcjRyNhsAYlsAUlSbACJWG5CAAIAGNjIyBYYhshWWO4BABiILAAUFiwQGBZZrABY2AjLiMgIDyKOCMhWS2wOiywABYgsAhDIC5HI0cjYSBgsCBgZrACYiCwAFBYsEBgWWawAWMjICA8ijgtsDssIyAuRrACJUZSWCA8WS6xKwEUKy2wPCwjIC5GsAIlRlBYIDxZLrErARQrLbA9LCMgLkawAiVGUlggPFkjIC5GsAIlRlBYIDxZLrErARQrLbA+LLA1KyMgLkawAiVGUlggPFkusSsBFCstsD8ssDYriiAgPLAEI0KKOCMgLkawAiVGUlggPFkusSsBFCuwBEMusCsrLbBALLAAFrAEJbAEJiAuRyNHI2GwCUMrIyA8IC4jOLErARQrLbBBLLEIBCVCsAAWsAQlsAQlIC5HI0cjYSCwBCNCsAlDKyCwYFBYILBAUVizAiADIBuzAiYDGllCQiMgR7AEQ7ACYiCwAFBYsEBgWWawAWNgILABKyCKimEgsAJDYGQjsANDYWRQWLACQ2EbsANDYFmwAyWwAmIgsABQWLBAYFlmsAFjYbACJUZhOCMgPCM4GyEgIEYjR7ABKyNhOCFZsSsBFCstsEIssDUrLrErARQrLbBDLLA2KyEjICA8sAQjQiM4sSsBFCuwBEMusCsrLbBELLAAFSBHsAAjQrIAAQEVFBMusDEqLbBFLLAAFSBHsAAjQrIAAQEVFBMusDEqLbBGLLEAARQTsDIqLbBHLLA0Ki2wSCywABZFIyAuIEaKI2E4sSsBFCstsEkssAgjQrBIKy2wSiyyAABBKy2wSyyyAAFBKy2wTCyyAQBBKy2wTSyyAQFBKy2wTiyyAABCKy2wTyyyAAFCKy2wUCyyAQBCKy2wUSyyAQFCKy2wUiyyAAA+Ky2wUyyyAAE+Ky2wVCyyAQA+Ky2wVSyyAQE+Ky2wViyyAABAKy2wVyyyAAFAKy2wWCyyAQBAKy2wWSyyAQFAKy2wWiyyAABDKy2wWyyyAAFDKy2wXCyyAQBDKy2wXSyyAQFDKy2wXiyyAAA/Ky2wXyyyAAE/Ky2wYCyyAQA/Ky2wYSyyAQE/Ky2wYiywNysusSsBFCstsGMssDcrsDsrLbBkLLA3K7A8Ky2wZSywABawNyuwPSstsGYssDgrLrErARQrLbBnLLA4K7A7Ky2waCywOCuwPCstsGkssDgrsD0rLbBqLLA5Ky6xKwEUKy2wayywOSuwOystsGwssDkrsDwrLbBtLLA5K7A9Ky2wbiywOisusSsBFCstsG8ssDorsDsrLbBwLLA6K7A8Ky2wcSywOiuwPSstsHIsswkEAgNFWCEbIyFZQiuwCGWwAyRQeLABFTAtAEu4AMhSWLEBAY5ZsAG5CAAIAGNwsQAFQrIAAQAqsQAFQrMKAgEIKrEABUKzDgABCCqxAAZCugLAAAEACSqxAAdCugBAAAEACSqxAwBEsSQBiFFYsECIWLEDZESxJgGIUVi6CIAAAQRAiGNUWLEDAERZWVlZswwCAQwquAH/hbAEjbECAEQAAA==) format('truetype')}[class*=" icon-"]:before,[class^=icon-]:before{font-family:fontello;font-style:normal;font-weight:400;display:inline-block;text-decoration:inherit;width:1em;margin-right:.2em;text-align:center;font-variant:normal;text-transform:none;line-height:1em;margin-left:.2em}.icon-user:before{content:'\e800'}.icon-folder:before{content:'\e801'}.icon-list:before{content:'\e802'}.icon-login:before{content:'\e803'}.icon-cog:before{content:'\e804'}.icon-twitter:before{content:'\e805'}.icon-article-alt:before{content:'\e806'}.icon-cancel:before{content:'\e807'}.icon-home:before{content:'\e808'}.icon-down-dir:before{content:'\e809'}.icon-facebook:before{content:'\e80a'}.icon-asterisk:before{content:'\e80b'}.icon-upload:before{content:'\e80c'}.icon-stopwatch:before{content:'\e80d'}.icon-export:before{content:'\e80e'}.icon-heart:before{content:'\e80f'}.icon-plus:before{content:'\e810'}.icon-up-dir:before{content:'\e811'}.icon-menu:before{content:'\e812'}.icon-left-open:before{content:'\e813'}.icon-right-open:before{content:'\e814'}.icon-inbox:before{content:'\e815'}.icon-wrench:before{content:'\e816'}.icon-comment:before{content:'\e817'}.icon-stackoverflow:before{content:'\e818'}.icon-question:before{content:'\e819'}.icon-ok-circled:before{content:'\e81a'}.icon-warning:before{content:'\e81b'}.icon-mail:before{content:'\e81c'}.icon-link:before{content:'\e81d'}.icon-key-inv:before{content:'\e81e'}.icon-trash:before{content:'\e81f'}.icon-download:before{content:'\e820'}.icon-glasses:before{content:'\e821'}.icon-qrcode:before{content:'\e822'}.icon-shuffle:before{content:'\e823'}.icon-eye:before{content:'\e824'}.icon-lock:before{content:'\e825'}.icon-search:before{content:'\e826'}.icon-bell:before{content:'\e827'}.icon-users:before{content:'\e828'}.icon-location:before{content:'\e829'}.icon-briefcase:before{content:'\e82a'}.icon-instagram:before{content:'\e82b'}.icon-clock:before{content:'\e82c'}.icon-phone:before{content:'\e82d'}.icon-calendar:before{content:'\e82e'}.icon-print:before{content:'\e82f'}.icon-edit:before{content:'\e830'}.icon-bold:before{content:'\e831'}.icon-italic:before{content:'\e832'}.icon-rocket:before{content:'\e833'}.icon-whatsapp:before{content:'\e834'}.icon-dot-3:before{content:'\e835'}.icon-info-circled:before{content:'\e836'}.icon-videocam:before{content:'\e837'}.icon-quote-right:before{content:'\e838'}.icon-picture:before{content:'\e839'}.icon-palette:before{content:'\e83a'}.icon-lamp:before{content:'\e83b'}.icon-book-open:before{content:'\e83c'}.icon-ok:before{content:'\e83d'}.icon-chat-alt:before{content:'\e83e'}.icon-archive:before{content:'\e83f'}.icon-play:before{content:'\e840'}.icon-pause:before{content:'\e841'}.icon-down-open:before{content:'\e842'}.icon-up-open:before{content:'\e843'}.icon-minus:before{content:'\e844'}.icon-exchange:before{content:'\e845'}.icon-network:before{content:'\e846'}.icon-link-ext:before{content:'\f08e'}.icon-github-circled:before{content:'\f09b'}.icon-filter:before{content:'\f0b0'}.icon-docs:before{content:'\f0c5'}.icon-list-bullet:before{content:'\f0ca'}.icon-list-numbered:before{content:'\f0cb'}.icon-underline:before{content:'\f0cd'}.icon-sort:before{content:'\f0dc'}.icon-linkedin:before{content:'\f0e1'}.icon-smile:before{content:'\f118'}.icon-keyboard:before{content:'\f11c'}.icon-code:before{content:'\f121'}.icon-shield:before{content:'\f132'}.icon-bitbucket:before{content:'\f171'}.icon-windows:before{content:'\f17a'}.icon-wheelchair:before{content:'\f193'}.icon-bank:before{content:'\f19c'}.icon-google:before{content:'\f1a0'}.icon-building-filled:before{content:'\f1ad'}.icon-database:before{content:'\f1c0'}.icon-lifebuoy:before{content:'\f1cd'}.icon-header:before{content:'\f1dc'}.icon-binoculars:before{content:'\f1e5'}.icon-chart-area:before{content:'\f1fe'}.icon-pinterest:before{content:'\f231'}.icon-medium:before{content:'\f23a'}.icon-gitlab:before{content:'\f296'}.icon-telegram:before{content:'\f2c6'}.datalist-polyfill{list-style:none;display:none;background:#fff;box-shadow:0 2px 2px #999;position:absolute;left:0;top:0;margin:0;padding:0;max-height:300px;overflow-y:auto}.datalist-polyfill:empty{display:none!important}.datalist-polyfill>li{padding:3px;font:13px "Lucida Grande",Sans-Serif}.datalist-polyfill__active{background:#3875d7;color:#fff}date-input-polyfill{z-index:1000!important;max-width:320px!important;width:320px!important}date-input-polyfill .monthSelect-wrapper,date-input-polyfill .yearSelect-wrapper{height:50px;line-height:50px;padding:0;width:40%!important;margin-bottom:10px!important}date-input-polyfill .monthSelect-wrapper select,date-input-polyfill .yearSelect-wrapper select{padding:0 12px;height:50px;line-height:50px;box-sizing:border-box}date-input-polyfill .yearSelect-wrapper{width:35%!important}date-input-polyfill table{width:100%!important;max-width:100%!important;padding:0 12px 12px 12px!important;box-sizing:border-box;margin:0}date-input-polyfill table td:first-child,date-input-polyfill table td:last-child,date-input-polyfill table th:first-child,date-input-polyfill table th:last-child{width:32px!important;padding:4px!important}date-input-polyfill select{margin-bottom:10px}date-input-polyfill button{width:25%!important;height:50px!important;line-height:50px!important;margin-bottom:10px!important;background:inherit;position:relative;color:inherit;padding:inherit;box-sizing:inherit;border-radius:inherit;font-size:inherit;box-shadow:none;border:none;border-bottom:none!important}::placeholder{color:#868686;text-align:right}::-webkit-input-placeholder{text-align:right}input:-moz-placeholder{text-align:right}.button,button{display:inline-block;background:#f02e65;border-radius:26px;border:none;color:#fff;height:52px;line-height:52px;padding:0 25px;cursor:pointer;font-size:16px;box-sizing:border-box;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.button:focus,.button:hover,button:focus,button:hover{background:#c52653;border-bottom:none}.button.fly,button.fly{position:fixed;z-index:2;bottom:30px;left:30px}.button.fill,button.fill{display:block;width:100%;text-align:center;padding:0 10px!important}.button.fill-aligned,button.fill-aligned{display:block;width:100%;text-align:right;padding:0 20px!important}.button.icon,button.icon{padding-left:30px!important}.button.icon-reduce,button.icon-reduce{padding-right:15px!important}.button.reverse,button.reverse{background:0 0;height:50px;line-height:48px;padding:0 23px;color:#f02e65;border:solid 2px #f02e65}.button.reverse:focus,.button.reverse:hover,button.reverse:focus,button.reverse:hover{color:#c52653;border-color:#c52653}.button.round,button.round{width:52px;padding:0}.button.round.small,button.round.small{font-size:12px;width:30px;height:30px;line-height:30px}.button.white,button.white{background:#fff;color:#f02e65}.button.white.reverse,button.white.reverse{color:#fff;background:0 0;border:solid 2px #fff}.button.trans,button.trans{background:0 0!important}.button.trans.reverse,button.trans.reverse{background:0 0!important}.button.success,button.success{background:#1bbf61}.button.success.reverse,button.success.reverse{color:#1bbf61;background:#fff;border:solid 2px #1bbf61}.button.danger,button.danger{background:#f53d3d}.button.danger.reverse,button.danger.reverse{color:#f53d3d;background:#fff;border:solid 2px #f53d3d}.button .disabled,.button.disabled,.button:disabled,button .disabled,button.disabled,button:disabled{background:#818181;cursor:default}.button.link,button.link{background:0 0;border-radius:0;color:#1e849e;height:auto;line-height:normal;padding:0;padding-left:0!important}.button.link:hover,button.link:hover{border-bottom:dotted 1px #1e849e}.button.link:focus,button.link:focus{box-shadow:inherit}.button.strip,button.strip{background:0 0;height:auto;line-height:16px;color:inherit;padding:0 5px}.button.facebook,button.facebook{color:#fff!important;background:#4070b4!important}.button.twitter,button.twitter{color:#fff!important;background:#56c2ea!important}.button.linkedin,button.linkedin{color:#fff!important;background:#0076b5!important}.button.github,button.github{color:#fff!important;background:#7e7c7c!important}.button:focus,button:focus{outline:0}label{margin-bottom:15px;display:block;line-height:normal}.input,input[type=date],input[type=datetime-local],input[type=email],input[type=file],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=url],select,textarea{-webkit-appearance:none;-moz-appearance:none;-webkit-transform:translateZ(0);box-sizing:content-box;height:40px;line-height:40px;border:solid 1px #e2e2e2;border-radius:10px;padding:5px 15px;font-size:16px;display:block;width:calc(100% - 32px);margin-bottom:30px}.input[type=file],input[type=date][type=file],input[type=datetime-local][type=file],input[type=email][type=file],input[type=file][type=file],input[type=number][type=file],input[type=password][type=file],input[type=search][type=file],input[type=tel][type=file],input[type=text][type=file],input[type=url][type=file],select[type=file],textarea[type=file]{line-height:0;padding:15px;height:auto}.input[xtype=file],input[type=date][xtype=file],input[type=datetime-local][xtype=file],input[type=email][xtype=file],input[type=file][xtype=file],input[type=number][xtype=file],input[type=password][xtype=file],input[type=search][xtype=file],input[type=tel][xtype=file],input[type=text][xtype=file],input[type=url][xtype=file],select[xtype=file],textarea[xtype=file]{line-height:normal;height:auto;border:none;position:absolute;top:0;right:0;bottom:0;opacity:0;cursor:pointer;padding:0;margin:0;font-size:0;width:100%}.input[xtype=file]:disabled,input[type=date][xtype=file]:disabled,input[type=datetime-local][xtype=file]:disabled,input[type=email][xtype=file]:disabled,input[type=file][xtype=file]:disabled,input[type=number][xtype=file]:disabled,input[type=password][xtype=file]:disabled,input[type=search][xtype=file]:disabled,input[type=tel][xtype=file]:disabled,input[type=text][xtype=file]:disabled,input[type=url][xtype=file]:disabled,select[xtype=file]:disabled,textarea[xtype=file]:disabled{opacity:0!important}.input:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=email]:focus,input[type=file]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=url]:focus,select:focus,textarea:focus{outline:0;border-color:#b3d7fd}.input:disabled,input[type=date]:disabled,input[type=datetime-local]:disabled,input[type=email]:disabled,input[type=file]:disabled,input[type=number]:disabled,input[type=password]:disabled,input[type=search]:disabled,input[type=tel]:disabled,input[type=text]:disabled,input[type=url]:disabled,select:disabled,textarea:disabled{background:#f1f3f5}.input.strip,input[type=date].strip,input[type=datetime-local].strip,input[type=email].strip,input[type=file].strip,input[type=number].strip,input[type=password].strip,input[type=search].strip,input[type=tel].strip,input[type=text].strip,input[type=url].strip,select.strip,textarea.strip{border:none;border-radius:0;padding:5px 0;width:100%;background-color:transparent;background-position:left 2px top 50%;border-bottom:solid 1px #e2e2e2;color:#868686}.input.strip:focus,input[type=date].strip:focus,input[type=datetime-local].strip:focus,input[type=email].strip:focus,input[type=file].strip:focus,input[type=number].strip:focus,input[type=password].strip:focus,input[type=search].strip:focus,input[type=tel].strip:focus,input[type=text].strip:focus,input[type=url].strip:focus,select.strip:focus,textarea.strip:focus{border-color:#b3d7fd}input[type=email],input[type=url]{direction:ltr}input[type=email]::placeholder,input[type=url]::placeholder{text-align:left;direction:ltr}select{background:0 0;-webkit-appearance:none;background-image:url("data:image/svg+xml;utf8,");background-position:left 15px top 50%;background-repeat:no-repeat;background-color:#fff;width:calc(100% - 62px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-left:45px}select:-webkit-autofill{background-image:url("data:image/svg+xml;utf8,")!important;background-position:100% 50%!important;background-repeat:no-repeat!important}input[type=search],input[type=search].strip{background:0 0;-webkit-appearance:none;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAdZJREFUWIXt1s2LjWEYBvDfnDMzFpNIamZIFrMiJYMyFmKhZKfOwoiFr2LFn2BByG6WVrKwMcjWxgoLIlKIUk6RrzAjZWZ8LO731FlwvB+PUbjq6X0X7/VeV/d9P9fz8IdRL8Hpw3x8w0xaOz9GNxq4gJeZcGs1cRab0fU7xLfgMSYzoT3YgNXYhIO4iM+4iTWphGs4jikcFSXvhEGczr4/UFW8C2N4jXUFudvwCYeqGNgnSr6yJH8rpkWLCqMfE9hdUryFE3iC3qLEk7ij+kT34Q32FiHV8Qr7K4q3cArXihCGxd5elMjARnzBvE4f1dreV+AtnicycC/7/7K8BhaIvqXCO3zFwrwGZtCT0EAtW9N5DTSxWGR/CizNns/yEgbFEK5NZGCnaEPHE7e9Ai9wA6OJDIzistgJubFdxHB/RfFVYgCHixJruI5x5dNwDm6J47sUhkTvjpUw0Y1zeOrXR3hHjOA9zmBuTs4Arog4/yhuUZWwHPdFMh7280BZgiP4ILJ/UuymqRQmejPxphiquzgvKnMJDzOxB9glZqiRiecykbfHdawX98EhcdxO4BGu4nYm2EJDzEKPSMIdYrBnFYUq8d/EP2di1gey3cS4ErflvxffASbhcakIINaMAAAAAElFTkSuQmCC);background-position:right 15px top 50%;background-repeat:no-repeat;background-size:20px 20px;width:calc(100% - 60px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-right:45px}select[multiple]{min-height:75px;padding:5px 10px!important;padding-left:50px!important}select[multiple] option{padding:10px 4px;border-bottom:solid 1px #f1f1f1}select[multiple] option:last-child{border-bottom:none}textarea{min-height:75px;resize:vertical;line-height:32px;padding:5px 15px}textarea.tall{min-height:180px}fieldset{border:none;margin:0;padding:0}.counter{font-size:13px;float:left;margin-top:-20px}.file-preview{background:#fff url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAIElEQVQoU2NkYGAwZsAEZ9GFGIeIQix+wfQgyDODXSEAcUwGCrDSHgkAAAAASUVORK5CYII=)!important;border:solid 1px #e2e2e2;box-shadow:inset 0 0 3px #a0a0a0;border-radius:8px;width:calc(100% - 2px);max-height:180px;visibility:visible!important}.video-preview{padding-top:56%;position:relative;border-radius:10px;background:#e7e7e7;overflow:hidden;margin:0}.video-preview iframe{position:absolute;top:0;width:100%;height:100%;border:none}.map-preview{padding-top:50%;position:relative;margin-bottom:10px;border-radius:10px;background:#e7e7e7;overflow:hidden;box-shadow:0 0 30px rgba(218,218,218,.5)}.map-preview iframe{position:absolute;top:0;width:100%;height:100%;border:none}.tooltip{position:relative}.tooltip.large:hover:after{white-space:normal;width:280px}.tooltip:hover:after{white-space:nowrap;background:#333;border-radius:5px;bottom:26px;color:#fff;content:attr(data-tooltip);padding:5px 15px;position:absolute;font-size:13px;line-height:20px;z-index:98;right:20%;margin-right:-30px}.tooltip:hover:before{border:solid;border-color:#333 transparent;border-width:6px 6px 0 6px;bottom:20px;content:"";position:absolute;z-index:99;right:5px}.tooltip.down:hover:after{top:26px;bottom:inherit}.tooltip.down:hover:before{top:20px;border-width:0 6px 6px 6px;bottom:inherit}.tag{display:inline-block;background:#e7e7e7;color:#868686;border-radius:12px;line-height:24px;padding:0 8px;font-size:12px;box-shadow:none!important;border:none;height:auto;width:auto;white-space:nowrap;text-overflow:ellipsis}.tag:hover{border:none}.tag.green{background:#1bbf61;color:#fff}.tag.red{background:#f53d3d;color:#fff}.tag.yellow{background:#ffe28b;color:#494949}.tag.focus{background:#f02e65;color:#fff}.tag.dark{background:#6f6f6f;color:#e7e7e7}.tag.blue{background:#4abde8;color:#fff}.tag.link{background:#1e849e;color:#fff}input[type=checkbox]{width:26px;height:16px;position:relative;-webkit-appearance:none;border-radius:0;border:none;background:0 0;vertical-align:middle}input[type=checkbox]:after{content:"";display:block;width:20px;height:20px;background:#fff;top:-5px;border-radius:50%;position:absolute;border:solid 3px #f02e65;vertical-align:middle}input[type=checkbox]:checked:after{text-align:center;font-family:fontello;content:'\e83d';font-size:16px;line-height:20px;color:#fff;background:#f02e65}input[type=checkbox]:focus{outline:0}input[type=checkbox]:focus:after,input[type=checkbox]:hover:after{outline:0;border-color:#000}input[type=checkbox]:checked:focus:after,input[type=checkbox]:checked:hover:after{border-color:#f02e65}.input-copy{position:relative}.input-copy input,.input-copy textarea{padding-left:65px;width:calc(100% - 82px);resize:none}.input-copy .copy{position:absolute;top:0;left:0;border-right:solid 1px #e2e2e2;height:calc(100% - 2px);width:50px;line-height:50px;text-align:center;background:#fbfbfb;margin:1px;border-radius:0 10px 10px 0}.paging{color:#8d8e8e;padding:5px 15px;font-size:12px}.paging form{display:inline-block}.blue-snap iframe{-webkit-appearance:none;-moz-appearance:none;-webkit-transform:translateZ(0);box-sizing:content-box;height:40px;line-height:40px;border:solid 1px #e2e2e2;border-radius:10px;padding:5px 15px;font-size:16px;display:block;width:calc(100% - 32px);margin-bottom:30px;float:none!important;height:40px!important;width:calc(100% - 32px)!important;border:solid 1px #e2e2e2!important;background:0 0!important;position:static!important}.blue-snap iframe[type=file]{line-height:0;padding:15px;height:auto}.blue-snap iframe[xtype=file]{line-height:normal;height:auto;border:none;position:absolute;top:0;right:0;bottom:0;opacity:0;cursor:pointer;padding:0;margin:0;font-size:0;width:100%}.blue-snap iframe[xtype=file]:disabled{opacity:0!important}.blue-snap iframe:focus{outline:0;border-color:#b3d7fd}.blue-snap iframe:disabled{background:#f1f3f5}.blue-snap iframe.strip{border:none;border-radius:0;padding:5px 0;width:100%;background-color:transparent;background-position:left 2px top 50%;border-bottom:solid 1px #e2e2e2;color:#868686}.blue-snap iframe.strip:focus{border-color:#b3d7fd}.blue-snap .error{font-size:12px;margin-top:-25px;color:#f53d3d;height:40px;padding-right:2px}.pell{height:auto;padding-bottom:0;margin-bottom:0;padding-top:0;background:#fff;line-height:normal!important}.pell.hide{padding:0!important;height:1px;min-height:1px;max-height:1px;border:none;box-shadow:none;margin-bottom:20px;opacity:0}.pell [contenteditable=true]:empty:before{content:attr(placeholder);display:block;color:#868686}.pell .pell-actionbar{border-bottom:solid 1px #e7e7e7;margin:0 -15px 15px -15px;padding:10px 15px}.pell .pell-content{min-height:100px;display:block;padding:10px;margin:-10px;cursor:text}.pell .pell-content:focus{outline:0}.pell button{background:inherit;color:inherit;margin:0;padding:0;padding-left:15px;height:40px;line-height:40px;box-shadow:none;cursor:pointer;font-size:13px;border-radius:0}.pell button.pell-button-selected,.pell button:focus,.pell button:hover{color:#1e849e}.pell h1,.pell h2,.pell h3,.pell h4,.pell h5,.pell h6{text-align:inherit;margin-bottom:30px}.pell b,.pell strong{font-weight:700}.pell ol,.pell ul{margin:0 0 20px 0}.pell ol li,.pell ul li{display:list-item!important;list-style:inherit;margin-bottom:10px}.pell ol li p,.pell ul li p{margin:0}.pell ul li{margin:0 20px;display:list-item}label.switch{line-height:42px}input[type=checkbox].switch{width:67px;height:42px;line-height:42px;border-radius:21px;background:#818181;display:block;margin:0;padding:5px;padding-right:30px;padding-left:5px}input[type=checkbox].switch:checked{background:#f02e65;padding-right:5px;padding-left:30px}input[type=checkbox].switch:focus:after,input[type=checkbox].switch:hover:after{background:#fff}input[type=checkbox].switch:after{content:"";display:block;width:32px;height:32px;background:#fff;border-radius:50%;border:none;position:static;top:0}.password-meter{margin:-41px 10px 30px 10px;height:2px;background:0 0;max-width:100%;z-index:2;position:relative}.password-meter.weak{background:#f53d3d}.password-meter.medium{background:#ffed4d}.password-meter.strong{background:#1bbf61}.color-input:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.color-input .color-preview{width:53px;height:53px;float:right;margin-left:10px;background:#000;border-radius:10px;box-shadow:inset 0 0 3px #a0a0a0;position:relative}.color-input .color-preview input{opacity:0;position:absolute;top:0;bottom:0;left:0;right:0;width:100%;height:100%;cursor:pointer}.color-input input{text-transform:uppercase;float:right;width:calc(100% - 95px)}.grecaptcha-badge{box-shadow:none!important;border-radius:10px!important;overflow:hidden!important;background:#4d92df!important;bottom:25px}.grecaptcha-badge:hover{width:256px!important}.back{font-size:15px;line-height:24px;height:24px;margin-right:-15px;margin-top:-25px;margin-bottom:20px}hr{height:1px;background:#eceff1;border:none}.upload{position:relative}.upload:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.upload input{position:absolute;top:0;right:0;opacity:0;cursor:pointer}.upload.single .preview{height:0;position:relative;padding-top:100%;width:100%;margin-bottom:15px!important}.upload.single .preview li{position:absolute;top:0;width:calc(100% - 20px);height:calc(100% - 20px);margin-left:0!important;margin-bottom:0!important}.upload .button{float:right;margin-left:20px!important}.upload .button.disabled,.upload .button.disabled:hover{background:0 0;color:inherit;border-color:inherit}.upload .count{float:right;line-height:52px}.upload .progress{background:#1bbf61;height:6px;border-radius:3px;margin-bottom:15px!important}.upload .preview:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.upload .preview li{float:right;margin-left:20px!important;margin-bottom:15px!important;background:#f1f1f1;width:150px;height:150px;line-height:148px;text-align:center;border-radius:20px;overflow:hidden;position:relative;cursor:pointer;border:solid 10px #f1f1f1}.upload .preview li:hover:before{background:#f02e65}.upload .preview li:before{content:'\e807';font-family:fontello;font-size:12px;position:absolute;width:20px;height:20px;display:block;top:5px;left:5px;text-align:center;line-height:20px;vertical-align:middle;border-radius:50%;background:#484848;color:#fff;z-index:1}.upload .preview li img{vertical-align:middle;max-height:150px;max-width:150px;-webkit-filter:drop-shadow(0 0 6px rgba(0, 0, 0, .3));filter:drop-shadow(0 0 1px rgba(0, 0, 0, .3))}.upload.wide .preview li{height:0;width:100%;position:relative;padding-top:30.547%;background:#e7e7e7;border-radius:10px;overflow:hidden;border:solid 1px #f9f9f9;margin:0}.upload.wide .preview li img{border-radius:10px;position:absolute;top:0;width:100%;display:block;opacity:1;max-width:inherit;max-height:inherit}ol{list-style:none;counter-reset:x-counter;padding:0}ol li{counter-increment:x-counter;line-height:30px;margin-bottom:30px;margin-right:45px}ol li::before{display:inline-block;content:counter(x-counter);color:#f02e65;color:#fff;background:#fff;background:#f02e65;border:solid 2px #f02e65;margin-left:15px;margin-right:-45px;width:26px;height:26px;border-radius:50%;text-align:center;line-height:26px}.required{color:#f53d3d;font-size:8px;position:relative;top:-8px}.drop-list{position:relative;outline:0}.drop-list.open ul{display:block}.drop-list ul{position:relative;background:#fff;border-radius:10px;box-shadow:0 0 3px rgba(0,0,0,.05);padding:30px;display:block;border-bottom:none;box-shadow:0 0 6px rgba(0,0,0,.1);display:none;position:absolute;bottom:calc(100% + 10px);z-index:2;padding:0;right:-10px;max-width:280px;min-width:240px;overflow:hidden}.drop-list ul.padding-small{padding:15px}.drop-list ul.y-scroll{overflow-y:auto}.drop-list ul.danger{background:#f53d3d;color:#fff}.drop-list ul.focus{background:#f02e65;color:#fff}.drop-list ul.focus .button,.drop-list ul.focus button{background:#fff;color:#f02e65}.drop-list ul.warning{background:#ffed4d;color:#2d2d2d}.drop-list ul.warning .button,.drop-list ul.warning button{background:rgba(45,45,45,.8);color:#ffed4d}.drop-list ul>footer{margin:30px -30px -30px -30px;padding:15px 30px;background:#f5f5f5;border:solid 1px #eaeaea;border-radius:0 0 10px 10px}.drop-list ul hr{height:2px;background:#eceff1;border:none;margin:30px -30px}.drop-list ul .header{position:static;height:40px;padding:20px 30px 20px 30px;margin-bottom:30px;margin:-30px -30px 20px -30px;background:#f9f9f9;border-bottom:solid 1px #efefef}.drop-list ul .toggle{position:relative;border-top:2px solid #f6f7f8;border-bottom:2px solid #f6f7f8;margin:0 -30px;padding:30px;height:35px;overflow:hidden}.drop-list ul .toggle button.ls-ui-open{position:absolute;top:0;right:0;width:100%;height:95px;background:0 0;opacity:.5;border-radius:0}.drop-list ul .toggle .icon-minus{display:none}.drop-list ul .toggle .content{display:none}.drop-list ul .toggle.open{height:auto}.drop-list ul .toggle.open .icon-minus{display:block}.drop-list ul .toggle.open .icon-plus{display:none}.drop-list ul .toggle.open .content{display:block}.drop-list ul .list li{border-bottom:solid 2px #f6f7f8;margin:0 -30px 30px -30px;padding:0 30px 30px 30px}.drop-list ul .list li:last-child{padding-bottom:0;margin-bottom:0;border-bottom:none}.drop-list ul.new{text-align:center}.drop-list ul.new i{font-size:80px;line-height:80px;font-family:Poppins,sans-serif;font-style:normal;font-weight:300}.drop-list ul.new b{margin-top:20px;display:block}.drop-list ul:before{border:solid;border-color:#fff transparent;border-width:8px 8px 0 8px;bottom:-8px;content:"";position:absolute;z-index:99;right:30px}.drop-list ul li{border-bottom:solid 1px #f1f3f5;margin:0;padding:0}.drop-list ul li:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.drop-list ul li .link,.drop-list ul li a{vertical-align:middle;height:30px;line-height:30px;display:block;padding:10px 25px;color:inherit;font-size:14px;border:none;max-width:260px;cursor:pointer}.drop-list ul li .link:hover,.drop-list ul li a:hover{background:#f1f3f5;border-color:transparent}.drop-list ul li.disabled .link:hover,.drop-list ul li.disabled a:hover{background:0 0}.drop-list ul li .avatar{width:30px;height:30px;margin-left:10px;float:right}.drop-list ul li:last-child{border-bottom:none}.drop-list.bottom ul{bottom:auto;margin-top:-2px}.drop-list.bottom ul:before{bottom:auto;top:-8px;border-width:0 8px 8px 8px}.disabled{opacity:.2;cursor:default}.disabled .button,.disabled .link,.disabled a,.disabled button{cursor:default!important}.disabled .button:hover,.disabled .link:hover,.disabled a:hover,.disabled button:hover{background:0 0}.tags{-webkit-appearance:none;-moz-appearance:none;-webkit-transform:translateZ(0);box-sizing:content-box;height:40px;line-height:40px;border:solid 1px #e2e2e2;border-radius:10px;padding:5px 15px;font-size:16px;display:block;width:calc(100% - 32px);margin-bottom:30px;background:#fff;min-height:42px;height:auto}.tags[type=file]{line-height:0;padding:15px;height:auto}.tags[xtype=file]{line-height:normal;height:auto;border:none;position:absolute;top:0;right:0;bottom:0;opacity:0;cursor:pointer;padding:0;margin:0;font-size:0;width:100%}.tags[xtype=file]:disabled{opacity:0!important}.tags:focus{outline:0;border-color:#b3d7fd}.tags:disabled{background:#f1f3f5}.tags.strip{border:none;border-radius:0;padding:5px 0;width:100%;background-color:transparent;background-position:left 2px top 50%;border-bottom:solid 1px #e2e2e2;color:#868686}.tags.strip:focus{border-color:#b3d7fd}.tags .add{display:inline-block!important;border:none;padding:0;width:auto;margin:0}.tags ul.tags-list{display:inline}.tags ul.tags-list li{display:inline-block!important;margin-left:10px;font-size:16px;padding:5px 10px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tags ul.tags-list li::before{float:left;content:'\e807';font-family:fontello;font-style:normal;display:inline-block;text-align:center;line-height:16px;width:16px;height:16px;font-size:12px;background:#000;color:#fff;border-radius:50%;margin-top:4px;margin-bottom:4px;margin-right:6px;margin-left:0}.console{height:100%;width:100%;padding:0}.console body{position:relative;height:calc(100% - 70px);width:calc(100% - 320px);padding-top:70px;padding-bottom:0;padding-left:50px;padding-right:270px;margin:0;color:#4b4b4b;background:#eceff1}.console body .project-only{display:none!important}.console body.show-nav .project-only{display:inline-block!important}.console body.hide-nav .console-back{display:block}.console body.hide-nav .account{display:none}.console body.index .console-back{display:none}.console body.index .account{display:block}.console body .console-back{display:none}.console body:before{content:'';display:block;position:absolute;width:calc(100% - 220px);height:100px;top:-100px;left:0;right:0;background:#fff;z-index:1000;border-right:solid 220px #132a3b}.console header{position:fixed;top:0;width:calc(100% - 280px);height:40px;line-height:40px;padding:15px 30px;background:#fff;box-shadow:0 0 2px rgba(0,0,0,.1);margin:0 -50px;z-index:2;font-size:14px}.console header .setup-new{width:40px;height:40px;line-height:40px}.console header .list{width:240px}.console header .list select{height:40px;line-height:40px;padding-top:0;padding-bottom:0;border:none;border-radius:26px;background-color:#ececec;color:#868686}.console header .account{margin-right:25px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.console header .account:hover{border-bottom:none}.console header .avatar{height:40px;width:40px}.console header .notifications{position:relative;font-size:20px}.console header .notifications a{color:#1b3445}.console header .notifications:after{position:absolute;content:"";display:block;background:#f53d3d;width:8px;height:8px;border-radius:50%;top:3px;left:3px}.console header nav{background:#1b3445;background:linear-gradient(#132a3b,#302839);background:linear-gradient(#143650,#302839);color:#788c99;position:fixed;height:100%;width:220px;top:0;right:0}.console header nav .logo{height:39px;padding:15px 20px;display:block;border-bottom:none}.console header nav .logo:hover{border-bottom:none}.console header nav .logo img{display:inline-block;margin-top:9px;width:75%}.console header nav .logo svg g{fill:#f02e65}.console header nav .icon{display:block;border:none;margin:18px 10px 50px 10px}.console header nav .icon img{display:block}.console header nav .icon:hover{border-bottom:none}.console header nav .icon:hover svg g{fill:#f02e65}.console header nav .container{overflow:scroll;height:calc(100% - 183px);padding-bottom:50px;width:100%}.console header nav .project-box{padding:20px;text-align:center;display:block;border:none;line-height:100px;height:100px}.console header nav .project-box img{max-height:80px;max-width:80%;display:inline-block;vertical-align:middle}.console header nav .project{display:block;padding:85px 25px 20px 25px;color:#788c99;position:relative;border:none;height:20px}.console header nav .project:hover{border-bottom:none}.console header nav .project .name{height:20px;line-height:20px;margin:0;padding:0;display:inline-block;max-width:100%}.console header nav .project .arrow{display:block;position:absolute;left:5px;top:10px;width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #788c99;transform:rotate(225deg)}.console header nav .project img{position:absolute;bottom:40px;display:block;margin-bottom:10px;max-height:35px;max-width:40%}.console header nav .subtitle{padding:0 30px 5px 30px;display:block;font-size:12px;font-weight:300}.console header nav .links{margin-bottom:15px!important}.console header nav .links.top{border:none;padding-bottom:0;margin-bottom:5px!important}.console header nav .links.bottom{position:absolute;bottom:0;left:0;right:0;padding-bottom:0;border:none;margin-bottom:0!important}.console header nav .links.bottom a{border-top:solid 1px #2a253a;border-bottom:none}.console header nav .links .sub{display:inline-block;border:none;width:25px;height:25px;line-height:25px;border-radius:50%;padding:0;background:#f02e65;color:#fff;text-align:center;font-size:12px;margin:18px}.console header nav .links .sub i{width:auto;margin:0}.console header nav .links .sub:hover{border:none}.console header nav .links a{padding:12px 20px;border:none;display:block;color:#87a5b9;font-weight:400;border-right:solid 5px transparent}.console header nav .links a i{margin-left:8px;width:22px;display:inline-block}.console header nav .links a.selected,.console header nav .links a:hover{color:#e4e4e4;font-weight:500}.console header nav:after{content:'';display:block;position:absolute;background:#302839;height:100px;width:100%;bottom:-100px}.console>footer{width:calc(100% + 100px);margin:0 -50px;box-sizing:border-box;background:0 0;padding-left:30px;padding-right:30px}.console>footer ul{float:none;text-align:center}.console>footer ul li{float:none;display:inline-block}.console .projects{position:relative}.console .projects:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.console .projects li{float:right;margin-left:50px;margin-bottom:50px;width:270px}.console .projects li.new,.console .projects li:nth-child(3n){margin-left:0}.console .dashboard{padding:20px;min-height:95px;overflow:hidden;position:relative;z-index:1}.console .dashboard hr{margin:20px -20px}.console .dashboard footer{margin:-20px;padding:20px;background:#fcfeff;border:none;color:#1e849e}.console .dashboard .col{position:relative}.console .dashboard .col:last-child:after{display:none}.console .dashboard .col:after{content:"";display:block;width:2px;background:#eceff1;height:calc(100% + 110px);position:absolute;top:-20px;bottom:-20px;left:24px}@media only screen and (max-width:550px),only screen and (min-width:551px) and (max-width:970px){.console .dashboard .col:after{width:calc(100% + 40px);height:3px;position:static;margin:20px -20px}}.console .dashboard .value{color:#f02e65;vertical-align:bottom;line-height:55px}.console .dashboard .value .sum{font-size:55px;line-height:55px;font-weight:700;vertical-align:bottom}.console .dashboard .unit{font-weight:500;line-height:20px;vertical-align:bottom;font-size:16px;display:inline-block;margin-bottom:5px;margin-right:5px;color:#f02e65}.console .dashboard .metric{color:#f02e65;font-weight:400;font-size:13px;line-height:16px}.console .dashboard .range{color:#818181;font-weight:400;font-size:14px;line-height:16px}.console .dashboard a{display:block;font-weight:400;font-size:14px;line-height:16px;padding:0;border:none}.console .dashboard .chart-metric{width:19%}@media only screen and (min-width:551px) and (max-width:970px),only screen and (max-width:550px){.console .dashboard .chart-metric{width:100%}}.console .dashboard .chart{width:80%;position:relative;height:0;padding-top:20px;padding-bottom:26%;margin-left:-2px;overflow:hidden;background-color:#fff;background-image:linear-gradient(transparent 1px,transparent 1px),linear-gradient(90deg,transparent 1px,transparent 1px),linear-gradient(#f1f1f1 1px,transparent 1px),linear-gradient(90deg,#f1f1f1 1px,transparent 1px);background-size:100px 100px,100px 100px,20px 20px,20px 20px;background-position:-2px -2px,-2px -2px,-1px -1px,-1px -1px;background-repeat:round;border:solid 1px #f1f1f1;border-right:solid 1px transparent;border-bottom:solid 1px transparent}@media only screen and (min-width:551px) and (max-width:970px),only screen and (max-width:550px){.console .dashboard .chart{width:100%;float:none;margin-bottom:20px}}.console .dashboard .chart canvas{position:absolute;bottom:0;display:block;height:100%;width:100%}.console .link-list li{margin-bottom:15px}.console .link-list i{display:inline-block;width:30px;height:30px;line-height:30px;text-align:center;background:#818181;color:#f1f3f5;border-radius:50%;margin-left:15px}.console .link-list i.fade{background:0 0;color:#818181}.console .provider{width:50px;height:50px;background:#f5f5f5;color:#868686;line-height:50px;text-align:center;font-size:25px;border-radius:50%}.console .provider.facebook{color:#fff;background:#3b5998}.console .provider.twitter{color:#fff;background:#55beff}.console .provider.telegram{color:#fff;background:#3ba9e1}.console .provider.github{color:#fff;background:#24292e}.console .provider.whatsapp{color:#fff;background:#25d366}.console .provider.linkedin{color:#fff;background:#1074af}.console .provider.microsoft{color:#fff;background:#137ad4}.console .provider.google{color:#fff;background:#4489f1}.console .provider.bitbucket{color:#fff;background:#2a88fb}.console .provider.gitlab{color:#faa238;background:#30353e}.console .provider.instagram{color:#fff;background:radial-gradient(circle at 30% 107%,#fdf497 0,#fdf497 5%,#fd5949 45%,#d6249f 60%,#285aeb 90%)}.console .premium{z-index:3;margin-top:320px}.console .premium .message{height:190px;overflow:hidden;position:absolute;top:-280px}.console .premium:after{content:'';position:absolute;top:0;left:-20px;right:-20px;bottom:-20px;background:#f6f7f8;opacity:.7;z-index:300}.console .app-section{height:90px}.console .confirm{background:#1e849e;color:#fff;border-radius:25px;padding:12px;line-height:28px;text-align:center}.console .confirm .action{font-weight:500;cursor:pointer}.console .platforms{overflow:hidden}.console .platforms .box{overflow:hidden}.console .platforms .box img{width:50px;margin:0 auto;margin-bottom:20px}.console .platforms .box .cover{margin:-30px -30px 30px -30px;padding:30px}.console .platforms .box .cover.android{background:#a4ca24}.console .platforms .box .cover.android h1{color:#fff;font-size:18px;margin-top:20px}.console .platforms .col{text-align:center;line-height:30px}.console .platforms a{display:block;margin:-20px;padding:20px}.console .platforms a:hover{background:#fbfeff}.console .platforms img{display:block;margin:0 30px;width:calc(100% - 60px);border-radius:50%;margin-bottom:20px}.dev-feature{display:none}.prod-feature{display:none}.development .dev-feature{display:block;opacity:.6!important;outline:solid #ff0 3px;outline-offset:3px}.development .dev-feature.dev-inline{display:inline-block}.development .prod-feature{display:none}.production .dev-feature{display:none}.production .prod-feature{display:block}.search{opacity:1!important}@media only screen and (max-width:550px),only screen and (min-width:551px) and (max-width:970px){.search button{margin-top:20px}}html.home body{padding:0 50px}html.home .logo img{max-height:35px;margin:45px 25px 25px 25px}.alerts ul{width:100%;visibility:hidden;position:fixed;padding:0;right:0;left:0;color:#fff;z-index:1002;margin:0 auto;bottom:15px;max-width:650px;opacity:.9}.alerts ul li{margin:1px 0 0 0;padding:0}.alerts ul li div.message{position:relative;padding:12px 35px;margin:0 auto;list-style:none;background:#818181;text-align:center;font-weight:700;border-radius:20px;line-height:16px;min-height:16px}.alerts ul li div.message i{cursor:pointer;position:absolute;font-size:22px;top:8px;right:8px}.alerts ul li div.message.error{color:#fff;background:#f53d3d}.alerts ul li div.message.success{color:#fff;background:#1bbf61}.alerts ul li div.message.warning{color:#fff;background:#ffed4d}.alerts ul li div.message.open{display:block}.alerts ul li div.message.close{display:none}.alerts .cookie-alert{background:#fff2f6!important;color:#f02e65}.alerts .cookie-alert a{color:#f02e65;font-weight:400;border-bottom:dotted 1px #f02e65}@media only screen and (max-width:550px),only screen and (min-width:551px) and (max-width:970px){.alerts ul{top:auto;bottom:0;max-width:100%}.alerts ul li{margin:5px 0 0 0}.alerts ul li div.message{border-radius:0}}article{overflow-wrap:break-word;word-wrap:break-word}article h1{font-size:36px}article h2{font-size:24px}article h3{font-size:20px}article h4{font-size:20px}article h5{font-size:18px}article h6{font-size:16px}article h1,article h2,article h3,article h4,article h5,article h6{margin-top:30px!important;margin-bottom:30px!important}article p{line-height:32px;font-size:17px}article .update{display:block;margin-top:50px!important}article table{width:100%;margin:0;margin-bottom:30px!important;border-radius:0;border-bottom:solid 1px #e7e7e7}article table thead td{font-weight:500;padding:5px 15px}article table td,article table th{padding:15px;height:auto}article table td:first-child,article table th:first-child{padding-right:10px}article table td:last-child,article table th:last-child{padding-left:10px}article table td p,article table th p{font-size:inherit;line-height:inherit}article table td p:last-child,article table th p:last-child{margin:0}.avatar{width:60px;height:60px;border-radius:50%;background:#ddd;display:inline-block;overflow:hidden;box-shadow:0 0 6px rgba(0,0,0,.09);position:relative;z-index:1;opacity:1!important}.avatar:before{content:"";position:absolute;width:100%;height:100%;z-index:0;background:#ddd}.avatar.inline{display:inline-block;vertical-align:middle}.avatar.trans{background:0 0}.avatar.xs{width:20px;height:20px}.avatar.small{width:50px;height:50px}.avatar.big{width:100px;height:100px}.avatar.huge{width:150px;height:150px}.box{position:relative;background:#fff;border-radius:10px;box-shadow:0 0 3px rgba(0,0,0,.05);padding:30px;display:block;border-bottom:none}.box.padding-small{padding:15px}.box.y-scroll{overflow-y:auto}.box.danger{background:#f53d3d;color:#fff}.box.focus{background:#f02e65;color:#fff}.box.focus .button,.box.focus button{background:#fff;color:#f02e65}.box.warning{background:#ffed4d;color:#2d2d2d}.box.warning .button,.box.warning button{background:rgba(45,45,45,.8);color:#ffed4d}.box>footer{margin:30px -30px -30px -30px;padding:15px 30px;background:#f5f5f5;border:solid 1px #eaeaea;border-radius:0 0 10px 10px}.box hr{height:2px;background:#eceff1;border:none;margin:30px -30px}.box .header{position:static;height:40px;padding:20px 30px 20px 30px;margin-bottom:30px;margin:-30px -30px 20px -30px;background:#f9f9f9;border-bottom:solid 1px #efefef}.box .toggle{position:relative;border-top:2px solid #f6f7f8;border-bottom:2px solid #f6f7f8;margin:0 -30px;padding:30px;height:35px;overflow:hidden}.box .toggle button.ls-ui-open{position:absolute;top:0;right:0;width:100%;height:95px;background:0 0;opacity:.5;border-radius:0}.box .toggle .icon-minus{display:none}.box .toggle .content{display:none}.box .toggle.open{height:auto}.box .toggle.open .icon-minus{display:block}.box .toggle.open .icon-plus{display:none}.box .toggle.open .content{display:block}.box .list li{border-bottom:solid 2px #f6f7f8;margin:0 -30px 30px -30px;padding:0 30px 30px 30px}.box .list li:last-child{padding-bottom:0;margin-bottom:0;border-bottom:none}.box.new{text-align:center}.box.new i{font-size:80px;line-height:80px;font-family:Poppins,sans-serif;font-style:normal;font-weight:300}.box.new b{margin-top:20px;display:block}a.box{border-right:none;border-left:none}a.box:hover{border-bottom:none;border-right:none;border-left:none;background:#f8fdff;box-shadow:0 0 1px rgba(0,0,0,.2)}.box-asidex{padding-left:25px!important;padding-right:70px;left:0;background:#f9f9f9;border-radius:0 10px 10px 0;height:calc(100% - 30px);position:absolute;padding-top:30px}.box-asidex:after{content:"";display:block;position:absolute;height:100%;width:51px;background:#fff;top:0;bottom:0;right:-6px}.cover{background:#fff2f6;padding:30px 50px;margin:0 -50px;position:relative;border-bottom:solid 1px #dedede}.cover .title,.cover h1,.cover h2,.cover h3,.cover h4{color:#f02e65;font-weight:600;margin-bottom:40px!important;font-size:28px;line-height:42px}.cover i:before{margin:0!important}.cover p{color:#737373}.cover .button{color:#fff}.cover .link,.cover a{color:#f02e65;border-left:none;border-right:none;cursor:pointer}.cover .link:hover,.cover a:hover{border-bottom-color:#f02e65}.console .database .row .col{height:452px}.console .database .row .col:after{width:2px;left:20px}.console .database hr{margin:0 -20px;background:#efefef;height:2px}.console .database h3{font-size:13px;line-height:20px;height:20px;background-color:#f5f5f5;margin:-20px -20px 0 -20px;padding:10px 20px;border-bottom:solid 1px #e1e2e2;font-weight:600}.console .database .empty{height:160px;font-size:12px;text-align:center;margin:50px 0}.console .database .empty h4{font-size:13px;font-weight:600;line-height:120px}.console .database .search{background-color:#f5f5f5;margin:0 -20px 0 -20px;padding:10px 15px}.console .database .search input{height:40px;background-color:#fff;border-radius:25px;padding-top:0;padding-bottom:0}.console .database .code{height:411px;background:#f5f5f5;margin:0 -20px -20px -20px;padding:20px;width:calc(100% - 10px)}.console .database .code .ide{overflow:scroll;height:451px;margin:-20px;box-shadow:none;border-radius:0}.console .database .paging{background:#f5f5f5;margin:0 -20px -20px -20px;padding:20px}.console .database .button{margin:0 -20px;padding:0 20px!important;text-align:inherit;color:#f02e65;width:100%;font-size:15px;line-height:55px;box-sizing:content-box}.console .database .button i{margin-left:8px}.console .database .button:hover{border:none;background:#fff2f6}.console .database .items{margin:0 -20px;height:260px;overflow-x:hidden;overflow-y:scroll}.console .database .items form{opacity:0;position:relative}.console .database .items form button{background:red;position:absolute;top:0;bottom:0;right:0;left:0;width:100%;height:45px;border-radius:0;cursor:pointer}.console .database .items li{padding:0;margin:0 0;line-height:45px;font-size:15px;padding-right:50px;padding-left:30px;position:relative}.console .database .items li i{position:absolute;display:none;left:10px}.console .database .items li .name{display:inline-block;width:100%;height:28px}.console .database .items li.selected,.console .database .items li:hover{background:#f5f5f5}.console .database .items li.selected i,.console .database .items li:hover i{display:block}.console .database .items li:last-child{border-bottom:none}body>footer{color:#818181;line-height:40px;margin:0 -50px;padding:12px 50px;font-size:13px;width:100%;background:#f1f1f1;position:relative;margin-top:80px!important}body>footer:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}body>footer .logo img{height:22px;padding-top:12px}body>footer a{color:#505050}body>footer a:hover{border-bottom-color:#505050}body>footer ul:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}body>footer ul li{float:right;margin-left:20px!important}body>footer .copyright{padding-right:2px}[data-ls-if]{display:none}[data-service]{opacity:0}.load-service-start{opacity:0}.load-service-end{opacity:1;transition:opacity .5s ease-out;-moz-transition:opacity .5s ease-out;-webkit-transition:opacity .5s ease-out;-o-transition:opacity .5s ease-out}.modal-open .modal-bg,.modal-open body .modal-bg{position:fixed;content:'';display:block;width:100%;height:100%;left:0;right:0;top:0;bottom:0;background:#0c0c0c;opacity:.5;z-index:4}.modal{overflow:auto;display:none;position:fixed;width:100%;max-height:90%;max-width:640px;background:#fff;z-index:1000;box-shadow:0 0 4px rgba(0,0,0,.25);padding:30px;left:50%;top:50%;transform:translate(-50%,-50%);border-radius:10px;box-sizing:border-box;text-align:right}@media only screen and (max-width:550px),only screen and (min-width:551px) and (max-width:970px){.modal{width:calc(100% - 20px)}}.modal.padding-small{padding:15px}.modal.height-tiny form{height:100px}.modal.height-small form{height:220px}.modal.width-small{max-width:400px}.modal.width-medium{max-width:500px}.modal.width-large{max-width:800px}.modal.open{display:block}.modalbutton.close{display:none}.modal.fill{height:95%;max-height:95%;max-width:75%}.modal h1,.modal h2{margin-bottom:25px;margin-top:0;font-size:20px;text-align:right}.modal h1,.modal h2,.modal h3,.modal h4,.modal h5,.modal h6{color:inherit!important;line-height:35px}.modal .main,.modal form{position:relative;border-top:solid 1px #e7e7e7;padding:30px 30px 0 30px;margin:0 -30px}.modal .separator{margin:20px -30px}.modal .info{margin:0 -30px;padding:20px 30px;background:#f5fbff;color:#3b5d73;border-top:solid 1px #eaf2f7;border-bottom:solid 1px #eaf2f7}.modal button.close{width:30px;height:30px;line-height:30px;padding:0;margin:0;background:#1b1b1b;color:#fff;border-radius:50%}.phases{list-style:none;margin:0;padding:0;position:relative}.phases li{display:none}.phases li li{display:block}.phases li.selected{display:block}.phases .number{display:none}.phases h2,.phases h3,.phases h4,.phases h5,.phases h6{margin:0 0 30px 0;text-align:inherit}.container{position:relative}.container .tabs{height:55px;line-height:55px;list-style:none;padding:0;margin-bottom:50px!important;margin-top:-55px;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.container .tabs:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.container .tabs .selected{font-weight:400;color:#f02e65;position:relative;opacity:1}.container .tabs .selected:after{content:"";display:block;height:2px;background:#f02e65;width:calc(100% - 46px);position:absolute;bottom:0;border-radius:2px;right:-2px}.container .tabs .number{display:none}.container .tabs li{float:right;padding-left:50px;color:#f02e65;opacity:.9;cursor:pointer}.container .tabs li:focus{outline:0}.container .icon{display:none}@media only screen and (max-width:550px),only screen and (min-width:551px) and (max-width:970px){.container .tabs{width:auto;overflow-x:scroll;overflow-y:hidden;white-space:nowrap}.container .tabs li{display:inline-block;float:none}}.ide{background-color:#373738;overflow:hidden;position:relative;z-index:1;box-shadow:0 2px 4px 0 rgba(50,50,93,.3);border-radius:10px;margin-bottom:30px}.ide .copy{position:absolute;bottom:15px;left:15px;cursor:pointer;background:#39393c;border-radius:50%;padding:2px;color:#6a6a6d;border:solid 2px #414142}.ide pre{-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none;color:#e6ebf1;font-weight:400;line-height:20px;font-size:13px;margin:0;padding:20px;padding-left:60px}.ide.light{box-shadow:0 2px 4px 0 rgba(50,50,93,.1);background-color:#fff}.ide.light pre{color:#414770}.ide.light .token.cdata,.ide.light .token.comment,.ide.light .token.doctype,.ide.light .token.prolog{color:#91a2b0}.ide.light .token.attr-name,.ide.light .token.builtin,.ide.light .token.char,.ide.light .token.inserted,.ide.light .token.selector,.ide.light .token.string{color:#149570}.ide.light .token.punctuation{color:#414770}.ide.light .language-css .token.string,.ide.light .style .token.string,.ide.light .token.entity,.ide.light .token.operator,.ide.light .token.url,.ide.light .token.variable{color:#414770}.ide.light .line-numbers .line-numbers-rows{background:#f2feef}.ide.light .line-numbers-rows>span:before{color:#5dc79e}.ide.light .token.keyword{color:#6772e4;font-weight:500}code[class*=language-],pre[class*=language-]{text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4}pre[class*=language-]{overflow:auto}:not(pre)>code[class*=language-]{padding:.1em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#6b7c93}.token.punctuation{color:#f8f8f2}.namespace{opacity:.7}.token.constant,.token.deleted,.token.property,.token.symbol,.token.tag{color:#f92672}.token.boolean,.token.number{color:#f79a59}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#3ecf8e}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url,.token.variable{color:#f8f8f2}.token.atrule,.token.attr-value,.token.class-name,.token.function{color:#45b2e8}.token.keyword{color:#7795f8}.token.important,.token.regex{color:#fd971f}.token.italic{font-style:italic}.token.entity{cursor:help}pre[class*=language-].line-numbers{position:relative;padding-left:60px;counter-reset:linenumber}pre[class*=language-].line-numbers>code{position:relative;white-space:inherit}.line-numbers .line-numbers-rows{background:#39393c;position:absolute;pointer-events:none;top:-20px;padding:20px 0;font-size:100%;left:-60px;width:40px;letter-spacing:-1px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.line-numbers-rows>span{padding-left:5px;pointer-events:none;display:block;counter-increment:linenumber}.line-numbers-rows>span:before{content:counter(linenumber);color:#636365;display:block;padding-right:.8em;text-align:right}html{padding:0;margin:0;direction:rtl}body{margin:0;background:#f6f7f8 no-repeat fixed}main{min-height:100%}ul{padding:0;margin:0}ul li{margin:0;list-style:none}.force-left{direction:ltr;text-align:left}.force-right{direction:rtl;text-align:right}.pull-left{float:left}.pull-right{float:right}.icon-left-open:before{content:'\e814'!important}.icon-right-open:before{content:'\e813'!important}.icon-link-ext:before{-moz-transform:scaleX(-1);-o-transform:scaleX(-1);-webkit-transform:scaleX(-1);transform:scaleX(-1)}.icon-article-alt:before{-moz-transform:scaleX(-1);-o-transform:scaleX(-1);-webkit-transform:scaleX(-1);transform:scaleX(-1)}.copy{border-radius:10px 0 0 10px!important} \ No newline at end of file +.pull-start{float:right}.pull-end{float:left}img[src=""]{visibility:hidden;display:inline-block}.margin-end{margin-left:20px!important}.margin-start{margin-right:20px!important}.margin-end-small{margin-left:10px!important}.margin-start-small{margin-right:10px!important}.margin-end-large{margin-left:50px!important}.margin-start-large{margin-right:50px!important}.margin-end-no{margin-left:0!important}.margin-start-no{margin-right:0!important}.margin-top{margin-top:30px!important}.margin-bottom{margin-bottom:30px!important}.margin-top-no{margin-top:0!important}.margin-bottom-no{margin-bottom:0!important}.margin-top-xxl{margin-top:140px!important}.margin-top-xl{margin-top:80px!important}.margin-top-large{margin-top:50px!important}.margin-top-small{margin-top:15px!important}.margin-top-tiny{margin-top:5px!important}.margin-top-negative{margin-top:-30px!important}.margin-top-negative-tiny{margin-top:-5px!important}.margin-top-negative-small{margin-top:-15px!important}.margin-top-negative-large{margin-top:-50px!important}.margin-top-negative-xl{margin-top:-80px!important}.margin-top-negative-xxl{margin-top:-100px!important}.margin-bottom-xxl{margin-bottom:140px!important}.margin-bottom-xl{margin-bottom:80px!important}.margin-bottom-large{margin-bottom:50px!important}.margin-bottom-small{margin-bottom:15px!important}.margin-bottom-tiny{margin-bottom:5px!important}.margin-bottom-negative{margin-bottom:-30px!important}.margin-bottom-negative-tiny{margin-bottom:-5px!important}.margin-bottom-negative-small{margin-bottom:-15px!important}.margin-bottom-negative-large{margin-bottom:-50px!important}.margin-bottom-negative-xl{margin-bottom:-80px!important}.margin-bottom-negative-xl{margin-bottom:-100px!important}.ratio-wide{height:0;overflow:hidden;padding-top:56%;position:relative;width:100%}.ratio-wide>*{position:absolute;top:0;left:0;width:100%;height:100%}.ratio-square{height:0;overflow:hidden;padding-top:56%;position:relative;width:100%}.ratio-square>*{position:absolute;top:0;left:0;width:100%;height:100%}.clear:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}*{font-family:Poppins,sans-serif,Arial;-webkit-font-smoothing:antialiased;font-weight:300}h1,h2,h3,h4,h5,h6{margin:0}h4,h5,h6{font-weight:400}.link,a{color:#1e849e;text-decoration:none;border-left:2px solid transparent;border-right:2px solid transparent;border-bottom:solid 1px transparent}.link:hover,a:hover{border-bottom:dotted 1px #1e849e}.link.disabled,a.disabled{opacity:.5}.link.disabled:hover,a.disabled:hover{border-bottom:none}.link.tag:hover,a.tag:hover{border-bottom:none;opacity:.9}b,strong{font-weight:500}p{margin:0 0 20px 0;line-height:26px}small{font-size:16px;color:#818181}.text-size-small{font-size:13px}.text-size-normal{font-size:16px}.text-one-liner{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.text-bold{font-weight:400!important}.text-danger{color:#f53d3d}.text-success{color:#1bbf61}.text-upper{text-transform:uppercase}.text-warning{color:#ffed4d}.text-focus{color:#f02e65}.text-fade{color:#818181}.text-disclaimer{font-size:11px;color:#818181}.text-fade-extra{color:#818181;opacity:.5}.text-line-high-large{line-height:30px}.text-line-high-xl{line-height:40px}.text-sign{margin:5px 0;font-size:25px;width:25px;height:25px;line-height:25px;display:inline-block}.text-align-center{text-align:center}.text-align-start{text-align:right}.text-align-end{text-align:left}.text-align-left{text-align:left}.text-align-right{text-align:right}.text-dir-ltr{direction:ltr;display:inline-block}.text-dir-rtl{direction:rtl;display:inline-block}.icon-dot-3:before{-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-o-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}table{width:calc(100% + 60px);border-collapse:collapse;margin:-30px;border-radius:10px;overflow:hidden;position:relative;table-layout:fixed}table thead{box-shadow:0 0 2px rgba(0,0,0,.25);border-bottom:solid 1px #f1f3f5;font-size:14px}table thead th{position:sticky;top:0}table.small{font-size:14px}table.open-end tbody tr:last-child{border-bottom:none;font-weight:700;background:#f7fbf7}table.full tbody td,table.full tbody th{vertical-align:top;white-space:normal;overflow:auto;line-height:24px;padding-top:20px;padding-bottom:20px;height:auto}table .avatar{width:30px;height:30px}table tr{border-bottom:solid 1px #f1f3f5}table tr:last-child{border-bottom:none}table tr:nth-child(even){background:#fbfbfb}table th{text-align:right;font-weight:400}table th i{color:#818181;font-size:10px;display:inline-block;vertical-align:top;line-height:16px;padding:0 3px}table td,table th{height:65px;padding:0 15px;line-height:50px}table td:first-child,table th:first-child{padding-right:30px}table td:last-child,table th:last-child{padding-left:30px}@media only screen and (max-width:550px){table td:first-child,table th:first-child{width:auto}}table td,table th{overflow:hidden;white-space:nowrap}@media only screen and (max-width:550px),only screen and (min-width:551px) and (max-width:970px){table.vertical{display:block;overflow:hidden;padding-top:12px}table.vertical .hide{display:none}table.vertical tbody,table.vertical td,table.vertical th,table.vertical thead,table.vertical tr{width:100%;display:block}table.vertical th,table.vertical tr{padding-top:12px;padding-bottom:12px}table.vertical th:first-child,table.vertical tr:first-child{padding-top:0}table.vertical td,table.vertical th{padding:5px 20px!important;text-overflow:ellipsis;white-space:normal;height:40px;line-height:40px}table.vertical td:first-child,table.vertical td:last-child,table.vertical th:first-child,table.vertical th:last-child{padding:0 10px}table.vertical td:last-child,table.vertical th:last-child{padding-bottom:0}table.vertical td p,table.vertical th p{display:inline-block;width:calc(100% - 40px)}table.vertical td:before{content:attr(data-title);margin-right:4px;font-weight:400}table.vertical thead{display:none}}.zone{max-width:910px;margin:0 auto 40px auto}.zone.xxxl{max-width:calc(100% - 100px)}@media only screen and (max-width:550px),only screen and (min-width:551px) and (max-width:970px){.zone.xxxl{max-width:100%}}.zone.xxl{max-width:1100px}.zone.xl{max-width:910px}.zone.large{max-width:700px}.zone.medium{max-width:550px}.zone.small{max-width:320px}.row{position:relative;margin:0 -50px;padding-right:50px}@media only screen and (max-width:550px),only screen and (min-width:551px) and (max-width:970px){.row{margin:0 -30px;padding-right:30px}}.row.force-ltr>.col{float:left}.row.force-rtl>.col{float:right}.row.force-reverse>.col{float:left}.row.wide{margin:0 -100px;padding-right:100px}.row.wide>.span-1{width:calc(8.33333333% * 1 - 100px);box-sizing:content-box;padding-left:100px}.row.wide>.span-2{width:calc(8.33333333% * 2 - 100px);box-sizing:content-box;padding-left:100px}.row.wide>.span-3{width:calc(8.33333333% * 3 - 100px);box-sizing:content-box;padding-left:100px}.row.wide>.span-4{width:calc(8.33333333% * 4 - 100px);box-sizing:content-box;padding-left:100px}.row.wide>.span-5{width:calc(8.33333333% * 5 - 100px);box-sizing:content-box;padding-left:100px}.row.wide>.span-6{width:calc(8.33333333% * 6 - 100px);box-sizing:content-box;padding-left:100px}.row.wide>.span-7{width:calc(8.33333333% * 7 - 100px);box-sizing:content-box;padding-left:100px}.row.wide>.span-8{width:calc(8.33333333% * 8 - 100px);box-sizing:content-box;padding-left:100px}.row.wide>.span-9{width:calc(8.33333333% * 9 - 100px);box-sizing:content-box;padding-left:100px}.row.wide>.span-10{width:calc(8.33333333% * 10 - 100px);box-sizing:content-box;padding-left:100px}.row.wide>.span-11{width:calc(8.33333333% * 11 - 100px);box-sizing:content-box;padding-left:100px}.row.wide>.span-12{width:calc(8.33333333% * 12 - 100px);box-sizing:content-box;padding-left:100px}.row.thin{margin:0 -20px;padding-right:20px}.row.thin>.span-1{width:calc(8.33333333% * 1 - 20px);box-sizing:content-box;padding-left:20px}.row.thin>.span-2{width:calc(8.33333333% * 2 - 20px);box-sizing:content-box;padding-left:20px}.row.thin>.span-3{width:calc(8.33333333% * 3 - 20px);box-sizing:content-box;padding-left:20px}.row.thin>.span-4{width:calc(8.33333333% * 4 - 20px);box-sizing:content-box;padding-left:20px}.row.thin>.span-5{width:calc(8.33333333% * 5 - 20px);box-sizing:content-box;padding-left:20px}.row.thin>.span-6{width:calc(8.33333333% * 6 - 20px);box-sizing:content-box;padding-left:20px}.row.thin>.span-7{width:calc(8.33333333% * 7 - 20px);box-sizing:content-box;padding-left:20px}.row.thin>.span-8{width:calc(8.33333333% * 8 - 20px);box-sizing:content-box;padding-left:20px}.row.thin>.span-9{width:calc(8.33333333% * 9 - 20px);box-sizing:content-box;padding-left:20px}.row.thin>.span-10{width:calc(8.33333333% * 10 - 20px);box-sizing:content-box;padding-left:20px}.row.thin>.span-11{width:calc(8.33333333% * 11 - 20px);box-sizing:content-box;padding-left:20px}.row.thin>.span-12{width:calc(8.33333333% * 12 - 20px);box-sizing:content-box;padding-left:20px}.row:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.row .col{float:right;box-sizing:border-box}.row .col.sticky-top{position:sticky;top:0}.row .col.sticky-bottom{position:sticky;bottom:0}.row .span-1{width:calc(8.33333333% * 1 - 40px);box-sizing:content-box;padding-left:40px}.row .span-2{width:calc(8.33333333% * 2 - 40px);box-sizing:content-box;padding-left:40px}.row .span-3{width:calc(8.33333333% * 3 - 40px);box-sizing:content-box;padding-left:40px}.row .span-4{width:calc(8.33333333% * 4 - 40px);box-sizing:content-box;padding-left:40px}.row .span-5{width:calc(8.33333333% * 5 - 40px);box-sizing:content-box;padding-left:40px}.row .span-6{width:calc(8.33333333% * 6 - 40px);box-sizing:content-box;padding-left:40px}.row .span-7{width:calc(8.33333333% * 7 - 40px);box-sizing:content-box;padding-left:40px}.row .span-8{width:calc(8.33333333% * 8 - 40px);box-sizing:content-box;padding-left:40px}.row .span-9{width:calc(8.33333333% * 9 - 40px);box-sizing:content-box;padding-left:40px}.row .span-10{width:calc(8.33333333% * 10 - 40px);box-sizing:content-box;padding-left:40px}.row .span-11{width:calc(8.33333333% * 11 - 40px);box-sizing:content-box;padding-left:40px}.row .span-12{width:calc(8.33333333% * 12 - 40px);box-sizing:content-box;padding-left:40px}@media only screen and (max-width:550px),only screen and (min-width:551px) and (max-width:970px){.row.responsive{width:100%;padding:0;margin:0}.row.responsive>.span-1,.row.responsive>.span-10,.row.responsive>.span-11,.row.responsive>.span-12,.row.responsive>.span-2,.row.responsive>.span-3,.row.responsive>.span-4,.row.responsive>.span-5,.row.responsive>.span-6,.row.responsive>.span-7,.row.responsive>.span-8,.row.responsive>.span-9{width:calc(8.33333333% * 12 - 0px)!important;box-sizing:content-box!important;padding-left:0!important;width:100%!important}}.tiles{position:relative}.tiles:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.tiles li{margin-left:50px!important;float:right;width:calc(33% - 33px)}.tiles li .photo-title{width:calc(100% + 30px);height:15px;margin:-15px -15px 10px -15px;border-radius:10px 10px 0 0;background:#f1f3f5;border-bottom:solid 1px #f1f3f5}.tiles li:nth-child(3n){margin-left:0!important}@media only screen and (max-width:550px){.tiles li{width:100%;margin-left:0!important}}@font-face{font-family:fontello;src:url(data:application/octet-stream;base64,d09GRgABAAAAAFOgAA8AAAAAgfQAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABWAAAADsAAABUIIslek9TLzIAAAGUAAAAQwAAAFY+UFQBY21hcAAAAdgAAAKxAAAHpH+PHuxjdnQgAAAEjAAAABMAAAAgBzP+pGZwZ20AAASgAAAFkAAAC3CKkZBZZ2FzcAAACjAAAAAIAAAACAAAABBnbHlmAAAKOAAAQqUAAGLi7VuK5mhlYWQAAEzgAAAAMwAAADYVIVKIaGhlYQAATRQAAAAgAAAAJAgaBJRobXR4AABNNAAAAMEAAAGQXMf/nGxvY2EAAE34AAAAygAAAMqKk3GubWF4cAAATsQAAAAgAAAAIAJQDRRuYW1lAABO5AAAAXcAAALNzJ0fIXBvc3QAAFBcAAACxQAAA/s98MKvcHJlcAAAUyQAAAB6AAAAhuVBK7x4nGNgZGBg4GIwYLBjYHJx8wlh4MtJLMljkGJgYYAAkDwymzEnMz2RgQPGA8qxgGkOIGaDiAIAJjsFSAB4nGNgZK5lnMDAysDAVMW0h4GBoQdCMz5gMGRkAooysDIzYAUBaa4pDA4vGD4dYw76n8UQxdzIcAwozAiSAwD63AzZAHic3dTLbpVVAMXx/ym13iqIqNRaLlUQr2iroNYLqFDlpiKCd0D7BJ32IZg06QQGvAAJA8amkzamTd+gEwZNVhjtfR6Asj72CvMy9Jz8mp4v50u+7q61gCeAbfauDcJAoeff6N3z1d7D69t45uH1wd6//jzFfn9vVNPlWrlebpelslrWynq5W0fqWB2vk3W2ztX5eqPerLfqYl2r63Wj3u9P9Kf6C/3lzU0Qj+5d2eq9j/nq+bmXH73/28K7u3fAZzDokxriSZ7iaZ/HswzzHNvZwfPs5AV28SIv8TK7GeEVRnmVMfawl30+rXFe43UOcJA3OMSbvMXbvONzfY/DvM8HTDDJh3zEEY7yMZ/wqZ/1Mz7nC77kGMf5iq/5hhOcZJpv+Y5TnOYMZznH9/zAj5znJy7wMxe5xC/8ym/8zh/8yV9c5gpX+Zt/mPGfMfTYp/f/eQ13Pwbv5NNMl8Wmy7rC/28UXTcUXT8UXW8UzgUKJwSFs4LCqUHR9UnhJKHonk7hdKFwzlA4cSicPRROIQrnEYWTicIZReG0onBuUTjBKJxlFE41CucbhZOOwplH4fSjcA9QuBEo3A0UbgkK9wWFm4PCHULhNqFwr1C4YSjcNRRuHQr3D4WbiKLbQIXbicI9ReHGonB3UbjFKNxnFG42CncchduOwr1H4QVA4S1A4VVA4X1A4aVA4c1A4fVA4R1B4UVB4W1B4ZVB4b1B4eVB4Q1C4TVC4V1C4YXyujfeKsr1xqtFud14vyhLjZeMstJ40yirjdeNstZ45yjrjRePcrfx9lFHGq8gdazxHlLHGy8jdbLxRlJnG68lda7xblLnGy8o9UbjLaXebLyq1FuN95W62HhpqWuNN5e63nh9qRuNd5h6v/Ei059ovM30pxqvNP2FxntNf7lh5gGv2IS+AAAAeJxjYEADEhDI3PjfCoQBEyID2wB4nK1WaXfTRhQdeUmchCwlCy1qYcTEabBGJmzBgAlBsmMgXZytlaCLFDvpvvGJ3+Bf82Tac+g3flrvGy8kkLTncJqTo3fnzdXM22USWpLYC+uRlJsvxdTWJo3sPAnphk3LUXwoO3shZYrJ3wVREK2W2rcdh0REIlC1rrBEEPseWZpkfOhRRsu2pFdNyi096S5b40G9Vd9+GjrKsTuhpGYzdGg9siVVGFWiSKY9UtKmZaj6K0krvL/CzFfNUMKITiJpvBnG0EjeG2e0ymg1tuMoimyy3ChSJJrhQRR5lNUS5+SKCQzKB82Q8sqnEeXD/Iis2KOcVrBLttP8vi95p3c5P7Ffb1G25EAfyI7s4Ox0JV+EW1th3LST7ShUEXbXd0Js2exU/2aP8ppGA7crMr3QjGCpfIUQKz+hzP4hWS2cT/mSR6NaspETQetlTuxLPoHW44gpcc0YWdDd0QkR1P2SMwz2mD4e/PHeKZYLEwJ4HMt6RyWcCBMpYXM0SdowcmAlZYsqqfWumDjldVrEW8J+7drRl85o41B3YjxbDx1bOVHJ8WhSp5lMndpJzaMpDaKUdCZ4zK8DKD+iSV5tYzWJlUfTOGbGhEQiAi3cS1NBLDuxpCkEzaMZvbkbprl2LVqkyQP13KP39OZWuLnTU9oO9LNGf1anYjrYC9PpaeQv8Wna5SJF6frpGX5M4kHWAjKRLTbDlIMHb/0O0svXlhyF1wbY7u3zK6h91kTwpAH7G9AeT9UpCUyFmFWIVkBirWtZlsnVrBapyNR3Q5pWvqzTBIpyHBfHvoxx/V8zM5aYEr7fidOzIy49c+1LCNMcfJt1PZrXqcVyAXFmeU6nWZbv6zTH8gOd5lme1+kIS1unoyw/1GmB5Uc6HWN5QQuadN/BkIsw5AIOkDCEpQNDWF6CISwVDGG5CENYFmEIyyUYwvJjGMJyGYawvKxl1dRTSePamVgGbEJgYo4eucxF5WoquVRCu2hUakOeEm6VVBTPqn9loF488oY5sBZIl8iaXzHOlY9G5fjWFS1vGjtXwLHqbx+O9jnxUtaLhT8F/9XWVCW9Ys3Dk6vwG4aebCeqNql4dE2Xz1U9uv5fVFRYC/QbSIVYKMqybHBnIoSPOp2GaqCVQ8xszDy063XLmp/D/TcxQhZQ/fg3FBoL3INOWUlZ7eCs1dfbstw7g3I4EyxJMTfz+lb4IiOz0n6RWcqej3wecAWMSmXYagOtFbzZJzEPmd4kzwRxW1E2SNrYzgSJDRzzgHnznQQmYeqqDeRO4YYN+AVhbsF5J1yieqMsh+5F7PMopPxbp+JE9qhojMCz2Rthr+9Cym9xDCQ0+aV+DFQVoakYNRXQNFJuqAZfxtm6bULGDvQjKnbDsqziw8cW95WSbRmEfKSI1aOjn9Zeok6q3H5mFJfvnb4FwSA1MX9733RxkMq7WskyR20DU7calVPXmkPjVYfq5lH1vePsEzlrmm66Jx56X9Oq28HFXCyw9m0O0lImF9T1YYUNosvFpVDqZTRJ77gHGBYY0O9Qio3/q/rYfJ4rVYXRcSTfTtS30edgDPwP2H9H9QPQ92Pocg0uz/eaE59u9OFsma6iF+un6Dcwa625WboG3NB0A+IhR62OuMoNfKcGcXqkuRzpIeBj3RXiAcAmgMXgE921jOZTAKP5jDk+wOfMYdBkDoMt5jDYZs4awA5zGOwyh8Eecxh8wZx1gC+ZwyBkDoOIOQyeMCcAeMocBl8xh8HXzGHwDXPuA3zLHAYxcxgkzGGwr+nWMMwtXtBdoLZBVaADU09Y3MPiUFNlyP6OF4b9vUHM/sEgpv6o6faQ+hMvDPVng5j6i0FM/VXTnSH1N14Y6u8GMfUPg5j6TL8Yy2UGv4x8lwoHlF1sPufvifcP28VAuQABAAH//wAPeJy1fA1gW9V97/mfc790JV1dSVdXsizL+pYty7ItyZJjO47iOLZxnBCMSZPUOCYkaYjzBYTw0UBpoBRaRrqMpgw6mnRAGR8dBNYxxtqupR2jvI6yLnTr9vq5jnYt2+voXkvjm/c/V7JjKN26vfck3XvPufece6/O+X/8/v/zP4dQQs49SV9kLhIgUZKuJYgI4gEGIMABIlDhAKGEHiCE7PIHvd5gURLDHWlDSsYTmd7yEAuaxWoxypghJQpQiQJ9cbTHSvWMqqHcUOcFL07khjMR5diRp28Qjj5269rBzZsHu6c3DbbB+HhmaHoTfH7zTTc9cTM9Qgg9Z537KvsRfZ1o+B471j3h3ri5liRMENjlIhAKlMA+ArAfX4oK00QQ6LsIFei6ZnxlJrAD/2GhLTUvkJZw0PDqDolo4JZEowOKpsw0wL+SZZlKKR2MV4dgAIqtYJbiRZM9G9Npjhqxs39XFnJUj7E96tnTmhAzHignorEKTBspeCMUsgZD4SI8Hwrtb7vViCSiqRC2FlHOnTv3c/ZD5iQe0kq6yCpyIdlGDpD3kcO1q6+/7soLxldLiuOKy+ba4zFJELdsvmhjU8irK5St6OtxKCAREMY84NBAER3KnBtEFwhMFGadwFSgwOisDEAITOMByCYJCJCJG997zdX75nfuuPTdl0yvn8xkgpkgfgxdbOmoBgwpm0xkqr3lSrVUNLPL8sFGXm7ksRFM4Nexl7O8fLye74Dz9ZdfD8Yb9Rv5UiOfXFb/mKrMyy74D/dss6os+GQVXBJ9XXadfejXX4P/IHd4sRKeeHnZI75qn5HmFVW1JpeVoTfyU/W0tf6dK/zV+SKE88wv2Bb6PAmRGtlYW+8C7JGxOHbBKGGyJDNpH6ESSJRToyiBOE+IKIhE2EdkIlFZmiOYEaeJKAqbMSFM5tO5rN9MGooY6QBDBimRWQnJRuuVcGcGwax6G12QzayCIcBeq2S95Qz2WjlT6YLFkyb9qNP6mjNqvOkxwNTeNKJO6HI+P7vmNP4n4K+qKKfTFShnnpZUShfPrJmFWc1pvawanlOmdgbrntJM6sATf2Rdt2ZWVZwOyS0rUEnB7VhboIrQODOL9G7LEbYV6V0he8ja2vDOLZOrBSIMqBRIua1ZFxiwMd4KByTA8yhSANkBGIoZRhmKGbpr5t0XX3TBeEcuEfP7ZNHswDdMaGAWK2mkJQ9Ishk0DVmDbKILM/jljdGbzWRlKYH7TBn5t5rpggLwZlsFlWrjZAl5ulLFLydsZO9gtVIMNm4m4wmUWwNT103RTYc2QUSRd6tOf5skeja6ZXl9U9ghC/oRxaU3By+UdGnUFESlTfUou/Cfq+JuRQum62WV9aGwQ2HeI9jMnkjwQtEjjxuC4KgXVmF2YHr68PT0dfy6Hg00FyVNCmwEcdCtTEZ0VX6PwzUoSrWoqEmuoifS7AGXbJdtCsc6ZZdsbFxW1DkgimsijaJhHamSNyg597/Z7fSLKG/W1yYK+VyMiqLUBIJo+igTnNjTwhiRROmA3RFEYMJi6wMKeVucoPgkm/m9JlOmmfQm2mSxuQObO2BoLJvImqViFdu3fliJTVmAcjUKwQwn1GKwUpXkCrs93ZvbdN3Dl33sRn/opu0DMz6/JxRaNZXJp/NNI58/KO6ZuLB3ZSUwUKb7K9ngBR+5bUeNXkTXw2iFSe7twzRAmzbM5S7eIQaMdbthhStWS0n4/3A7dz87xloIQz5yEp00oa6YqI3xN2dAZvE8FVEycu6SUFaqLoVJsixN2wlJ3ux0IPPJkz5vtCXSbAa8Tb4mr8/LP7qbc168N760lYtGIl00NSjQSpBn2LGzt7AbrScXXqEFuJCnz95y8CCEzASNdsdo6rmDB+njB60nD1p/eMA60nfllYl8ChKFWLXvynrf/Av9Or2NpEi01pxo0mUBW32MAdevXJLvMiKGIYghVK9I60jiMt9lyqsgy3cVpOEq35l4OWjSr3sm9bz+wAO4m9T5UT+f93geeMBz0OSJBx/0/GpBT4EXaMix4/RL2JI9pFDrKGTSoYBHcyvAXCjM6JiA/Mk4YcAByl8x15ZMxL2GKAY7wMv1RW8ywKWU14HSSeb6I+sACVkwU6nab9xQJi34xgbzoVg5xgULrMbvkYQoU1m0brJukt1iUqAi/Lav2387SllFvUGCNutnWPTMGewBDyjWzyHVLuLrDFufxaLtkibCBo/nyr1cLH9vl6DX6R8F0SD8BDFEsGbw14Yx++U5fuk1KJcpjcbN1LUUHVDfdEacbzrxKW9oJvylhmn8RUyz3mdP0iCbIgYp1boxL+H9kF8OclJEFT0nIkdRmBK5DN0koBylE0lOTf64zTXYNlILlOSkF7+9XIyXijT4ru7EA+Zdj95116HLpti632lr2/OgtRkefvCG3Vc1nsl2oBztJS21cG8+GfYq0lv+SHtmgIqBDpRaHtCgC5YUt1xveSSYAnBdYDc/19UtSDlc7qEQZQNhTUt6+ps+mmsZa8nD3eF+LaVpzXffHdY9KU9f89256FhL7qPhPj3p0ZvuBkXrD6/EOpc82pKDfOTRS/DsSqy0adOvu0AE+z+cYgXUBV7SjjpytLamF+nZgVKe0DHikBwHFC7CDxCZySiHEKRN885FDMfIHMdtmzlum1w5mCwlE8X0ipBPRQyTLmc0GkVRvnhchjGCpSgHb/b/ZagZGq2S7cVdnXtM+qIRNWgoHPotI+ajZiQ0GjPPfiUYhZj5uquSPJaouF83Y59xhI4ZnmNIe8eCfu+balR909eCmtAX8wlh12LijqfMWMzEHbS2tbVGYcpsaNs8VlHf9HJSFLEd+tkj7P2kDflrmKwj0+Tm2o3NKhWwb1TsVbeKOlEA1IiIGCQVJHWeONyy2yHv84BK3A7VPYeiTnHJyhyX8U7R5ZxjnNqwfahrXANR5NKauMkF6ydH1uTaL9o4Ob1+enxszbqRdbVV/dVysdDZ3pPrCSVLbYZXbOoAM2Bgg/eWfdVeu3FQZ5aKUUAwGJADZpC3FScUCdtSzwiSbvqxRetYcSWU8aKcLZo+BCi+ir9YKYBGTfaui60fIyP/+F9P01IgRiPBlwNRmvCX4eNXSc0eVENaWLQOfezMGeuVM2e+sjsQiwU+jrtcDMrv/wx91npOePqW+Xvpib87Qe+lTdfc/QXrdQrm558G1Q+sFMthF7UloATMu9cR9kTznrC48IEzUDhDX7G++grcH8U7Rc2Pm9Go+XvPWNYzzwB9ZuEL956xb2nLuW+w1+j30cZJcVpMInpJNVEE1AIdSwCsRd7CPqkrDgTZcxIw1ChTeGC8eRmZJCQeC5p4g4CR7pVR/qV7F6mv18tlCZdSSS8kJLk8JJZ6RaCv74gaCz4jGjEhFqu41KO076F7pqkeGdx42xRMWk8P9k09Z0SRJDNIi0XNZQ3BzNSdSmR6Yma48PE3rbNkUR68hvZZhMRrUa8t0xCzoSxgXCIDCQbcThKBiIAmjZjIIvMzWxdHaRDtM+w6RJMo25zWAx41lwjfdWNifKjgN/K10eSNd91sPaheqMJGj1qpbEy/90MQyiUCRqotDHf+7GbrSdV+/i+YD+VRkrTXMnXIgE8/KNpNxLkWmwiVA7ZRspRGduUWom0cJJcE03Igy9VBMMCZ1BczX4uZ88hCr9k8+Fo0OI8JnvljfvaHJp4N/LBxlrPbazEC586hjB+Av0QZ761pS0IxUOTSPW3bJFz61Rl+wPBYLo9BXTYbq4+ihEc0zBnUSXi38v+2FXF83Uar1sptiJUUJBjUfYu0wEEFmltzb4dHmV78lmx7eJnpw00d9jbTiC0XUzy/xdDP/ostLpjXg6/063M7xuykvQd9nL+/x96DNqaZ/AKmSYNOPk/vYSOoq1D3wVt1XzDIW8dBTVv7ZVH71dWzadC7rFehXVUvRS1obXc64X5sqUtV+oj1DetVO6nCJ/AI9zudl6rRxnMOLT7H8dbnRHz2cxoatuqAOnIJ8gftwdtHnJfiI9qsb9g3w5uqcIV1Wf3p0A5t9QK8IGnYFHU7y43UhxrYRI7l1M/NBsL2YQ8BEdH84F6CKcIYN6aYMNle9iYN3abDUjmTZXG08gOlYCntbfSTt1z1o6mEXRH0I5E8QeGwdc1hoE/0PgUXN9pf+4AY1eBrWlT8gAb9aM1BwPpnNOnm3239m90n4E4koKwZ4PNYLyVIg54Os5O2DWSQAn/jDL5xW9bHqMAJB4U9d1Us96vYRhDsiiQ7Qz4RxfOiaksvtiGq+XTd6MlwruZWiwcCwYotp880FBrssm4J9JsDgQAcMafhd93NRy/cffz47thok8Px+3tpbl3coy4psX+3bjGMlcaACUeq0/9gptfNwvGXP0KxyXzy7I2DtKnTUBdp6gqUm18kGRKpNTXbfe0GMrLU36lE0oYihobGata2yZDKMxWucRGB0FXcFisPUa5g2Gu3/eD2bG7/7zSnVA0bhDKX4DZkQ5c9m3fAxluf23H7D26D2csemBMuyygCuFRAE5N5RM1UIhF/rnh8+oJb5/rmHkCFSM7tYTp2ObcCPMRPgqQZORglu9/jZtjUY9HmcFPQDPi8DrIW6UUgHGSIyNyzSDsMpvCfsE0SR7cThDhVh4K3khG4ccke8AZZ3FvypuOB+CoQ5XRVlAE3VvXLftwmGfzswoXX4XbrOlDgDsW6MwhHQtZLeZjqfGTtD0aD06unT8ApsJ6EDdZl37z47ksyl/z11PwUlC946QL43aL1uSI8p1nv1RZp5gXWSX+G/yGGmO9kTdXwtbxIN3Rs3RPmxs21IpdHQHc6QUZ2ozLhooghNL+MCCqIkiDOEUlRpGkiScpmokjKZHOtxCuh4Nr3X6i1pRZPxJtCQPId8d5Eb0skFGuK6R63UxYFRoIQdHGvWUIKlMoov7lQS2QDpd4hhJkFYAnJQFO9nGEN01passrR8IaPbpg62qK5Eymn42h3T26i0NrZOVQotO7fNlPp66vMbPuH2ZlKtVqZmaV7pi/sj0STrXBDybW22j3Rbs0XVhUKQ1001tdbL8hrzP7DtpnePltOnFtAHbkN+S5AEqS71ikjEkeptMzNQJFeKWN0GmET28wx/GQgGDQMznJQRkZLeNDMwp1koFQsonQMIk0nCnQIkHTp/1BLKJq+fxPuSqr6oso9KuqdV335tRf2Szc898azN8Ezulp0Or93k9NZVFuxhIoF1l3z/KFDz/+I7wg7971zJ4RWliEuG4VUsIeQLpEkuS+IodmKoAMFHp3GA+UqhpJJbK94c9jndQe0QKDIXSJpk2uSbIaL7yDjzZ2QouCv8B6QgvV3r7Bv1XbfuHDsplJvDXqHzqz6g0ShMNJN89eL5ckKSOOiziaenf+TS2fmKczPLxzDi90jBbjF7c+UaV/K6z3tcJy229VCAv0IvRlRfJKkavG3+Gwom0aRy4Eoo5PBFcESt139mSq3q3jnN+wssRLwLuGkoIjvF40JNMQ2ZHyKrp3+jN7v+8xpNmIk9LPf1hMG3Ozr89EJNBVjmiLNbVfV7XOzqmF9RI/FdDhoqC+o6iLfPMvuYRcgLhogM+ShWrgfHOK7xigR/E4KMhvb1EEdoxKV6ei6J1TkowoRmUMQdxKQkTd2opBmosLmiIMQ2cGtDiKDIF9GqCTZdCJtJhKVkJf6eEUmOvbxmkhb+37Tqltq2pbNwWCkLYgy2qhbMJzWZAQ0rYDKCKFKV4PkUGIuEmKDBrMFygGD7bFqxatLlms1u+gZqOtwOWgfWad+SC/oJtruNGYqmiaYfv1qT6c+pVvXeq5G+39K1w95CijeVCEadGiyU1BUH7zRPVX4YOHqQk9P9we7DnV1TXXd1rWUezToOaT7TKZLHnxpQRVMb8FzyOO5SIdPmPrVumfKk8eb4j01zYGgDeETczi91l3DXRd1dV/d9cHunh68zW2FqULXocLt9VxDt3+CfYS1oKZsJZtrl8gAIowpgDCa0lEOuYCiiucSS5hHi3C/jOpIEok0p2BBEKfxIMJmgplJMwCkORxoNVs1twuluSQQAwxH3cdvqyY5kMRvvBe4n8o2W7IoxwyTXn/1A/Tk4UhQPHgA5fW0+MAh7s5pCsUSrOWBHzwg4vkrvw3TwZarP2mdjhUjNBEIcWXvw/f/W1ag30P9Y5AQUmEMubqNdKKlVyH9ZIisIeNo8W0gF6HVt7d2BZpkw6trQysH+1f0VUo93V2d+VxbNpNKJmKt0UhzGLWV4U/jPxtzAlFlCbEnIL6ZdShUpFSc4keRbiKYmwAyffFFGzesXzcxuhYNOa/ToaCIJh7QXPX/zP3ECHuSHDOUxGxSDsrBaraKm53An4y/rNwKVX4Ct9IqmpVXQX0LdgFWSVeTfgRNcslfTTLwNTf7pA9aE7c5/eGwH8b9h33rDzUNboit37Bh3+Tk+s7169fvW79+8q4Ob3hD6/r1G1onV2T6Y3j2ySbv5CF37+Rkq/8a33rr1rbu3d51oM9fcqU6QL8XzoQXNtIn8DDv9W54+v2D67HO5N7G3To3TE5O5i5p3vAmJlrX9/fHJjdsyN3sXf9UrTS54U+xRrVt4X9desUVdGUXyqufn/sM+zFTsDeS5No/itpqYN0TTmT+doIy6QA2ogTSAe62gQNo8KH8upzYph6KMrKFi5X1zbW2dy6LcO1tRbfUvC0tLcmWpNfvTfi9ZkUVIx3pul+GSzzbJ1+Sufs5zp3P2VJWTJcQWrAXfD4pIqTMsy+bKSGi5u7f/shpRWiDfJsinH5ke7d11jr70Ge/rOZ99xrhsHFvd2jvUWX/fuXomTfeAIImELNl82toltTpjusTVOIy4ksizNq+FDbFjTNA4wxzk+l0PJ5uSyPJxVPxlJHNhRwor72ZaroSND0QR51SQfEsM5TV/MVR2GACaSZeLeFGVdjd4nI2fY8e/36TU2uBPU7arDRZf9Ek9WR7i1LYeqFZyPpB6PiHdmAGHHW7nnU2x127d+stzc5nXe5zJEpD32oKfTtMI9/9M/wQ1ISLtiV7G5JLojVWIlXy+dqfpZqTrMkJDtbkmI2KLQjyERYyOquCEoaQWwnNEtl0y1PE9BNzKhEMtApu4ge3fzYC4OMuOzIb98Y8guRySVP1lOTaZOgac0muiXK5uzuVisUikVBIUQSBkHIVEUtvd6m7VOxJdaW6Cp35jlw7tls6lowlE/FIa6Q12hJqDtUhpuH3eXUPyh3FqaDoEWRBRinFCPOmERlXA8leP25x3KDUy52ASRE35o17Ac+VGtdROnlLiKUAz/PvmbGxMXhj3HK9ih94/MyZY9Z99JbxV8fHXx0bOzNm3Wfdx3zWfX+FpR4fx8/Cl87wDz8PO63vjvHq0TNjZ2AnL2HdiwYCbg29+UX2GquhBKuSK8nu2s55ACeiemhHMSP1oATflKVMEMeIE5wHiITwRBLR1kL8jIIY2eCgCiDbDTvnQJjKhGk8CGyzgpKaTe7ft+eKd2+e2jhcWzlYLnV3lQKVkAspDSQ5W2CLXqQBKNb1mT3MJXVBQcxWqlHBdhFwZeY9f1XjPnuNIlPRZdWHaJWbGOJSDTiU6DCUaLhg3sh9wjd+mH5VfEr0qN3RaDjrLoTawil3vMOlR8P50DFVk0+L9uVjzflY2OVr0kMpX3uwMpyp127OpQzdG464UqlCpdZWr0BHyzvb9UzYRW0n9cKXFLyFS5pHLASqapoZo7yjKZozDIpXxdMi/LhRQE8kmhMr08WRQFc4ZIJd2xdLNSVXDoVr3fmEi9Ur2P1j8/Vh1CotJE/W1GoJ7BIYk/gYBxKWPXRIRWHOBrl0WuYe6M0c4dpqMNeWToWbAi1mi1PlSlCxFUKUGRpLFFh5iPnroNEwqyaawIZkq4iiBvDGzCMHN7W1bTr4yDOLiZmZo0efOXp0RunPCcMztVpBU3R6uDixcSgyODVRLE5MDUaGNk4ULd9Np2/C3xnFpWr5oaGtQ4XuRfud3oL8LSNP52pZkXHPCloj+xAj7ScCgD1Iz19fgMmkP13x22a7P96LZjAExfMGeyVo97Mpc9fRU9AyfXga4OWYufBD23fkvfulE9SHyQf3DkzTjStPWZ+1vUcwjJhk76677961N4r64RzajaeYG/FbnBRrXa1ok3Nri47ZdM0d1yBwQwnFJvf0cEsB2GQwiUxetxQQZRvYbojd+BhkkhsIQpQGEYKZ9JbjLx/HH0Tz/cbndrx34/HdNTq4964H7to7CGs/F4Cj7zlOT7x4j3SndW9LLvC5tUN7PvLJu/b3C8O7Tqx/747PBWze3MOeZxejZAyTYfKBmovwkIaxtmYkMESxGiqygoyIB1HPTmxfIJfjXxGYYnupQGQw96votestFej8f1ZjS83VmvC1md6k3+dAyCqWuQ+vnEC0VC2m4xlvuUCRJwO6yFEGJyDu3+sdEqrlSpUHhXAPsxxF2ooyWHDEu8HX3+aw7qRnPhouT+2dKofpQ7mWN7ED32zJRQrdKR+99Qoxlo+Je46CmejunlO64w5Hez/8wcPQHhnsSyT6BiPWqw+35AampwdyLaHi9Ozt66eP66ozGEU85lT149MbbpubKvMxQt7HQhdqaS8pomUwQjbxuIva3gs17GIY84LD6ThAUFYf0EGhygGPrdllqPuS9rlUymMvpHmCIFKqI0+t7urUbFen23Z1zl66dcum6amN6yYuQFy3aqh/RVPAaELAFNd92GZQd3yWud+jWqwi0oSGC5A7h4tRNCv58HQxKgShzoJFExMFGKKmyF2nmSyadHyUFXm0mF0qsm5r/7rOGqwVcsPxTJrRW6bWWKGRjSC49FimPy6lCuMbR5vadSXRl4npGix8mY84I6vcYYfZPH0DrBkqrFuxtZMhHBhpE9aONa7PspF8/ktmGNwBfYP17uENG4ajfcN95YwZioSpqYdVambKfcMReqw+im39y5ab6A2fuU669a87CjDCVm/QA+5QCBqX6/EAdND2hYVIppbk3ggCDc6325MsOdeDQb+PW49Ql0zFStXgkTnYXCxjcz08Xn/Pu3xfcaQyGfkl38M/fhh+Un/WwMqstdFnmj54Irvy8MMP23z0GdRx/MkxROSP/FEae50jQR5UNCAhHcgi9vg+F/a6LJJ5AYgiE2UeMYXTqVyOL4pSVZ5zg9PhcE7hwenYQpBuEBsO/se1ZcU5/+urb6lF42hExzvjiCnaMwj9W5rD+JIhX6o34dW4hAnE/ajduGYD21NuBkvFIMpDJiNC64CEvzeOtjWSUm82HoAXrD5VmDupB4KaL/I/w4bLlzs5J6hW/wMRSEW0yD2RE/BpSZCmF3xbVfg0jO6A1N5we2fYpYViG/daf78Dtlcq4YUP7di8YXr6oR31Masn2Ra737wohabJPnJ5bc4HaI6MEZXKsrqTuJ0alUR3PYyF1H3kKDRtFxMCRTqH2Fl2ueRpfpRdW4hLdq2PNe/ZObtl6iLbAkKE1Twdu9hv4Nfn4Z7axViPaoMNqvWQsqKZTuDf1oCHamjUlPBr8IgNlPVFs4LfIeBhH0M0U8Fv2Y7+KCDpSGBHd0gJzGUzOi9TiWElFNSLsR7rbv7MUXrTs0dWRfMRGmtLWD8QsgPGSMEbybkkRaD8I6muXETvHs5NqhP5WtkdyavnLzlzLXphNLMRHmHizVcXreKhm0WGyUM9QHoO3SSxxZiPgXfzB91Ej34oEI3motFdgqQ4+X1HMhuljZmRUFsk55RUgX8Uqr7jJeuTN/fY95duusa+/2Lapvfj7B6Ws/ssSC6ojXJcKlABxmTuSGQC3Sdy/CAQ283EcYN0Hjf4fKoDiC/oC2puh1f1ItRTQKkjB6IjC+nEzwcDY3wwMBCUs1546bOgWT+1brV+CtpnT7zyinXm619/5kTxEZZbPAtHQDv70tchZ1+ke9/Aq+Dj4zcNzL+BJGuxIocDSDSoges+ukaw4XAtHsswBNBpw/YqozTtohm7K3kPo33CUbod2hM06+RAAwYiRZs2ejFvu02qCBODRe5sQU5iPpfkXFEueaLe8EClY+zejma/iphfZtDSGtG6PYqgGrpqyFRXYpkoolnQcvsnwSc6JVmNRmMuWQ/RuSyj93u6tUgsIohKwGjO3zPeUYkEdV9M85TLK5ySi7JsqxH10JCuOGPRqCoqTmbC+v05F0WFG0slAGFUxa8i3ECbh9iYZOodbCBuAQ3YkYNXk/tr961O0xbfBZ0p5m+hYzGIhsHXEvXNxVtpi9/RMt0M/qagmzkUv2NbyHQxJeCVmSgo4qyhS0zwOBHUIOSa1VTKSCRCpuwEiWxGazkyedXBfXves+vyuUvfveni9ZNrR1YNrRwcqDNquaerHYF3PNbKo2bCTaGG1dP46AlUeIjOknzLLjvC244MQR3eh4cSmdVSsQLLylcb14KNa9XzPkMUh0tRJIsDiDYKHDt16kunT39pcQ/3PfXUmdOn4bFTp8489dTzLillB+/x/X32qTOnTvlUJWmH9yUV9dV85OzrLblcy3g5nUqXz1RSyXQFxlpyF546dSp1+vTp1KmF50+9yXep09B9yr7bKV7byuC1U6fml53KL/TyW9GvtOQq6XI5Xanvc3bM0nH2OPIm79M2RPTdpEzurN2BGsRBHCKKVzQbnYq6zwDV7VTd88Ttcbo982jAay4NXPuI5AeHKDlmBR8qVadCnHNe8OjIYR5tlrgodU0Rl4t7hlx0Io6GLBDEHT3dDcM1nYq1xdvqRmuj73xuPuIhkWZoDtT9RQE7shDN/ORSk5fQZi0F0txOXbQY/PFsPIg2K9/Y9mhnZ3QysbC+eSre2RmfS1BPYuGn8JcLXw7G4vlY7BJa7bIi3/jwh7/84Q/TciFmHW8t/O7vdsZgf7zzmve//5q/sP4eUtZ7Yx0x/FkTP31/MplsxEz8gn0f5YOEvLCCDJFxkGuB2tCAzhUvEco8SGRsNRoMDbduN+FOD1nYR7hBQXYiI6GYE+YUzEgiSNsI95/xWEvuqxbpZPOiR6heXobfoELwv/WgWs/yKgIPTv7P6mzZsqVmEjKyZuVgT6E9E202/dgSkuHgsrCaRcIP2L4ZE/Gjf1kAQjVeDHLHk5TN4ClJ9hpmMF6soLGMBU0WhGQvyNlGABn8a+2SWi8EHI7nHT7cUrNrrO41s7Nr4OVk1MHkZkV1u6zudJkHe76cLospJVQ9Zd1xih4onSrpef0S/c9WX7K6tQLHF29hfXZP/QbDs6AJfimiCKycbtxjVMY7KHDspHXHSSiUT5U9nkv0vK23nmR+7GuD5BClr69NtCfRlr4I9ZOGaiGPSFwYa4QqEkYFNH7ro1pzCPQlxCZ42CxjKWmyo6NjW8eWURRcbe3VuMLD6BA9I4YuCMkEShwudBjH0zSL9ks2IRsmP2vUwQPLVHt1XjRbSVWLJg9p5/GOaMXI/JDIyAkZKu3pV4KeTKaci7XpqFaDmcJIBY3M/qFMpFMCsP4aHBsMAW0oAVnRiIYjjFZBu8BddGcnRosxX7iQatl0CNpqW2fKTdubBg6C709r6VDCp6LtNdAyEyjDCUFL1bqy/RzwRA62dEa1sMV6qabIuqlFxBRNhUQ014QC8CBwLZGfyLYUowldM/Zf3Le1ghpGAGlx7PZJOoBt20/6ar06Nmehw4WIm4418YAXTGCL1tH42wIbVvSWu7dHBdHsCFTrXpaKbyVgo1WRwlA2r0LrhiMr7uWUJeqhUgBhqiQnuJZOIqqVVVc+5dHRBOp3J/KquqZ7vLW5r61CFe9GQ2QiFahnBKlGAMcslaWQpA971mcipQ3dguqS/elP3g8JQ1MkSvsFPs4kmBFkANUdVKOOKevlwsUFU1WZJ9RKOQTn41S/OPdpdjkrkHa0+VprEZeTouHXiGmtj1R3d+U7moIMxV06CtyZJGW4p1taHKkegOCQELSHLhFF+M2GzKOtkmBINfd9sbDadnRPJOpq9SumZqaC5TE1c+i6RzYq2Ntq39yOlGbW8vla/sfFob5QmzTiikX239rmisQu7NE7W7SwpBWv2zzkkgR16jG8EbjMQq1QqC2OZX2abWUacsFKchGZq13aj1bmusEBBGwXgCywsQmQRxC2YeMBHxQhIiPzKFMQfs87sMNRkogoUwRZFqbxIMibiSzIk6uG8h3jo0MXrbqoXOpYmV/Zmgi3qdzO4oZFoD5ozyFVtbdSraBGxR92MY9mMXhDBLEVGHIMMgwygRGUq6YfbVc7Dli2TX1KM/IsA99QODZR3ZhrB5rVPIJLdCqCGMkA82dae2UtPz92dLavb/boXTfPVWBN/oObd2/6+MERWjt0z+a92344OTh81b1IWCKVfIVosmlqaLBbLGZcVHI7J5krh3+6PRltFirW3/bN3HrnrTP9tDJ38/iVM0c7+hkb2X/yoZN7x2nvuu9efnjTvYeGFn1o98BLDRumv1ZFlIcWC6fx6UaSwGaRcfA56bfhb9D0hf3h5QCYjx/5+VgKN77jv5LYX6jVZmo1uLNQG948bB/t/Eu1rcPDW2vL9/x1zp099xF2L8vjO/mRTrfXtrmA0WQiFBREGeGvLImSbPtZJVGYV4A4AOEZ5aYVn1Awp4LtLsPDor8sYPD3zqRi0eYmoz3QrmsOv+qvv7uT6/UK8fHQShJMSAEJOxehHENolUU+RarnSCyIvc5D/b78WdAl698Rub8ugeunuQJNxDKFp6N7y77ukKbmwt3Rw3162XS5UmGWo9bP6yVVBPm+E93hSCwf61/4dLkcSmVOzvUXwonEPbtJI3aMx4+08tHjJgVFDtiuNj6Sws5HvwR6e1O2/e81ONS3Q1rPR9bV41c50GevmbLsUb8zO2xda2ubO4Znv6N6ZNmkdy2cDDqY+p0Z+/ztfD/zHZWqjTgi7IBj9HGikgDprOUE7sM5gIqfsgNvMYfswZ5Jn9fvxU3nkzH8cYRG2d5iJZuE80kfXPj8h2duhW/xSPBG6nHr9J3Pw4Gjs7BhMWX3+8/P3cpeY8P2vKYM9+emU8l4jIsNO5RpLccz5IAIKBX51AjGhCnJ9qfzWKHJ1lbd05ppzYQCnqjektDteRHJrGxHFjN79MZfx29LDQa9WQ+KtgDbvOPImafLk3vVGH04pb2sm6a+kOd7+vHxh45+aIZKJ05sKJ+Etoz2czVh3RnSrTY9FNLhG3rIGvzkycFbHzmzyZav//vcd9k3mc+OUeG+HC5aWX36EY9GbSiOplA9ZKRLqIcn82gg3KLccOfuMNS0KbYIJtmW8X5fWJ+czkR9RUpHnjny7Cuq8vnrIDEezeeH8nm6v/vItCRElFyhf1wLT0y8+JHDP0pML3woX8vlanm7bX95bjf9HNpOEr5ZkfO5z00FkdmOzjEuJgUmztk8IFDsDXzTKa4bN3O1MFnsyaSD3oRXQsoLItqVslI1jrIO3zPG1QAD7myQ+Og7NYOlSkNTZDOxr0F4dHz0q9ZPx6drkvIYTD2iCm214W7rNkERNOpwUqfWujk0FdrcFBC8blTYutW/f/fuHKVfHb99623j1z322HWDezZN74WnhZgSlTx+wePP37B19nCyRW4xzYTv+YZeeBXp9h9JE3JQmrc8J51oS3MY5QMPxYIRxs3nA3wSzy5v2BuwuWhIqHoTXMfxARcvDwQVvWbQmwEv4sIKvCwaEzOfnN32ydlRF8o7TM/NnpwbdVufe2x+P7zx8P699BpRy8RMWNgeimZU1aWkEgal94eiKafTGtJWwJ/3W5PwBa3fWrViMe6ePUjvQe5qqYU99ZjAt6hfI2gwPmnAntqUXYpdqAcwsAd1K4ao0vpRY64C7LcnK1AkVSvm8YBZn7vwIBzgkxfsdjkofJetR5uqEzXm/fWYqVGPg8LIuidCPGZKBZSoEoJ0Ac1qQZ5DElFESbnMiYiBOUQeuwHgmCYOhz1A6gAeM2VXkom07zevtaXW2oIW1+CKck9bOhGLdLZ0Nple3aXW7avGeHzQniwR4EGhVbm3PqDBBVvAtmirfLgDr0lYzBS9ZRvB8zSC+oowunorzNR6P27NrZ6B37Mz9MrVM2d/+rXJClwcCywcC8Qgyt6Imgt/EOuGWIBeGYjRJ7YOW3dj4Y9/fKaG22qYXz0zs9qa+1FlEkr20Ij1UTN6BewNxLpbrU/zW9jteoXwBXaRHQ+b55FUyEHIUOdxIpLbnB1uOX0+3LJU7u3tLS2G/fLxGj5EZ0+h9L5Vjov1v2bw+ZUV4c9D/l9+1BsOe4V5Xzgf9v3yJ75w2Cf4fWHr5UzEur45k2mGDza3scwtvhCEvbdgWeuzC5/gVehlWPYRLFHJZOr0B2/Q4wStxqdUETo7wA57th8chB9omjUdSiRCcJ0aVa1/140opVFDX9IN1Eefs7FCshZDdMo4S3G5tosr2OWQoD5tFKVtAu8cX0zAM1ufts5ufZo+V1v48vAw7a8tHus68J/YZ2g72jhNNdO9LH67zhc+zheOZVwRdDTCetij1nb+vtsbwbJtPD7WNeOEY9blTif8njOqziA/fgNPO2d4xGydDz9DR+vPsmfEjpGl+UVBw35WmvtEl0J0G9G57NEZvJ31DesbjRjd+3lE7v3O+RlVhXbrVVXl1+F+VW0E59af5YOfIK2EaoG32xC9JXuyzdvmkPKQ74Wt9oAdfWgxzLse3x17i56WiJusqg06UUO7UE9yzxWwMTR5eDDnCI/V59FBs/ZTeSwn2cSfOiHLslt2+wydT1BKxwPZaiCe7o33BuVedmxh+7e+Re8/ewu9/1vfet+Bhz918FsHDzz0MO8FZcl/6kGJkiVVMkw2kEvJFeT9tZtSMQmfNdOdiYZU7ipcXwj7qCiRSwYrTBB3j60d6kOi58Pl9kuSfYo9NM4HkDgqn0cOAj5wLvAIsXkiy/uJDTgIxxsOG29wAfKene/aNLluoL/Uk4xHsi1Z4gGPygFoQs5kK1W0rwIG2lgZ2d73lvkZsK8hMMIz/vqIEZYsFfm1IJ/vKMkVLlmk+i34BXtsjufxzEqoMNsO4JgrW/m2aXTnKxMzg5IwVNH3G4PGcDFTUGBjxOzvm95w3f7JTeE9J48KWmYwHNVCs2364YzeXyxcJ9ETn71q64hrRNKi5l0wd0KoDYdq3TvUHWHNR7VNe/sr++HnanlyIp/J67qkd/cJ2xPhqw7vObp/bqgYgm4tF4kOaamwVQ5tNtRQJF8wlL23aie0gqAd39RdVFOTc0+kJj5ylGrb4ZXbXzLzPqlPOH7YMNXcwo9VxZfYWMu5Tp6PGX8NMUGWrCKTtQvaACQvtnK1gAArjl3BZ0CCxIOwkdU54ObBl/ONGSBzbx+a6m9O91bSpfp0rre4WxCV2vnlvhbbOen3Gnxa1hKHZRtzzZhvyc1yh6yqsnXtkoNFVVKKesaMOLdbd4u6UJMk2Ludz0lr8RgweXrJs2KXW3KrnFaQOf/O+h6f4IAVJakmanZFe/Zana6ft8dyLiZbyTayAyl6P7maXEf21N6TijYH0JTY6UY4vgft+DEQZYFPRqIgcHnPGWyeMAkYJ2UUppx4RZA5RYv7Of7gthQsoSkgV1915cHRkb5qT3e+oyVCLoaL6xF4dYtS4lohOyRkkUizGcnDwyALaP1zwo6yIHcpJLiDvwt4RCv34uNGK6Uq0j1KkQLwkWWGVWXJDFYyv7KrliWjUsVEBR4/9OWrHni/R2uJFfsSYZoPNOmDgUB5f68SrXmajHwo0deNcM8VziQ0Z8zldClUYYIrJElyoi3jcoOuvf+BQ1+4G9mcgmoITlk1JFVVI4Lb4U6DV/Bm/P4Y+KiPOQ89f82d3+5gmnq40sS0aH68e013aZVoam6PR/KFpVWl7jVd44WITo2MKIWCPpOBoEqMSVHNHQgrlBUjVNVYx7fvvOb5Qwv3CNjuguRhTskVEDRZMwS36nJIoktCAeIGp8y0un/n3C/OPclCaFsZXP5qPLJi2USMvqwtf015yaRCsoUMp0PmcXitn9iG1DHV+onPH6IvBunjJp60tgdV5jzm5HOZ/N784hy2PTY/tZIEYtASGSQHa/uSKOFawEGyMSqLfFoDimwmzbqQHhwicfCJVCgTZY69VUVQ55AWqVOhfEwUoD4myunGCZPlMpDyYHlwYEWlt7urkG9vS6cS8XBQw39NkAS0ZQjKViWNeJClEdJApeSBEsilYLW3PuXIi3iqAt6kPQnJy07bCscOFLG+hjtT/76nYvJpRpn42Kc+Zd33qU/te+JMNPhDiJo082o0+Bo9sqSnTiIMvtaseL6vmzHzj4PXfgpu/NQXnvghn5tk3XfMrFgb6C2voRaz7q3PT/46+yH9JxtLxEmO9JMJsq02MzI4wFRnOU8VR7OfGyhjiFRUyanO8vUAGF8PwEEU6lCWTTYSuT6tD6/Onter46O1VX2VtD8QNPnIqYsv7MAHTHnURe9SmEBD7XKBZC/dsPxCcjk+exteOzO0dWjpx3yqsrCVB0PRh2TX2Z+801lYnqnla3RwZpDWftpp38L65+VrLJDFk3u57OM7MM8vr2C33R72Q8T0rYjo16P23UdupMFadeuWS5jhuXY/1YwD4Na6QVbe05Vjqm8sQpm4qkVjTkFCNcpjXBxj20AN+lGija57woVmwOXEY3gOBED1eR0q2gLMyYSdSInYxDuJobmNaTSGNT+4Fc09i70m+xSkWR/xOnxe3ieS6JC2Id4V2TR3NTqp6Jx9O9RpXvdEGh+149c9yslXgfh/96wcPmvn+Wf5VO++/18Pq+16p+c49/2/fhAf88hv2BCLvff6q6+av+LyyzZcuuHSmXdPXbTxwnUXrBmOrYytHBxINZteX8ifTAT5cCOPnc9W6z4tOWuv9dCbkLJ2RKUcBX8gaS9PUy1zz32WDxOb9vBwqVdcxhwle10Te2Y2yg5JzlZLAfE/4ZG/GcoPplojMT00oAlaSFUdKcfAs72RBLwoRBJtqOXdTUaXuxJr68sUMjDG1r+Vjf50EEAMtk0OsA2/lpMqnUVI9zTpelJolXytbgWVcvSSntVSDoa3GGpLIRoKuTUdYvFIrNAWKYSjnsTpBrMpqgv+ta9vTWcQtVZu7DvfeGd+o0txHjNkL2xd94QD6aqprCMfeYGIhU4qkF2zVHUIYysA1jbXx9rsAvQdC/wHlbdsqd++QByKqjh2ElXdz+fuidMS5TM1nAxhB59FoSh2PCCfjiQok41nlpbX4uFwXCxSkXvs6lXpO1b1/TceWOuqV1D3/YY1OOW2ANmze/vcxRehZO4t9cSihs8jS4zMwAy3/v2ZLrCdlwi/K9ViVQ6iOpalgB2S0Dhrf/kUHlTT2YwHkA6DZrUOzfkXkSYva2e405777DmayiAosi1qLGDb1AjpqOxJtEz4uwqrva1egHgq7pRBYU1GoqdnoLs11KwaDpegCJSp/lCfAl1XdaxRGW0y25kCosJciifQnrv+oktvXeN2ODT6pqqc/QonTNarqPQMQA8wga8ao7SLmjx88vfWdsT9YV1Fq6s11v6ufN/GnnjaZaBE7paogghEcCN4ZIrH45Scr+xbmQun4q3p8vSaznc9e4VmnP2XFL95yqbJc+fO/Q0dRP2pkRZuizdWcFi+Qkljtm8585alMjJ1RZe1WXfZ9N+3Lu7w1snA/+ZR+VIPatQA8wXNNCP2yg9qw+/2EttCz2GKj8lM1MYSfM7JmOygoIjYTPskpDqRHOTqWuHqmjfdNFEUcTMRFXGSkPZsPBZpNg2v7uZAhseDq2Kgw+9Neqv1VXxshYxZ7EG0IaSAN4kWRLYUSKLYKppffOb5/gIU+vpn+uiH/7jQnSy4pWcAngFnKDOY2HYIfrbwKm1/tL1SmapUrJr1RWgbGM60eCPWV771oQebN/rCMR1uQvy2NDfOTyKI3ypkDRmurWoxeMzyGBfQzCHNiTzYZWmWs8wpXVYUeRrNVU7psjK5uha0IUdTU30lBo3HWWUQdfA4LB6Iw6epIsyoBzBiH/BL9UjRKMN/tHw23fWBg3ddZQhaJCxok7MTHiES1q0f5PrztG0oA7HcYBvN9xV+q3/2trtuRzzRN3fr8aPbKxcsm2735pppunGtFna49HxfX96jqeF/jObsipHG8VE+WZRXvXV2UCjvOrJ+2WS8RtzNL4RuegSRWNCebzBAxtBO2kbmybXkFnKMfIL8PnmKR2qMg91UUdIsRptnw8GAxymKpqGpgj0/vMnrdggspLsU7qmgl/llCj6JEjTq51oh0tISmcJDpGUzaYm0TJ48efoPH/nUyd8/+fufPPWJj997z0ePH7vzjttuufnGG649dOX++d07t2+b2bJpauP6ibGR1UMDfaXGpxirr+GFlIOcj8B3eTq7LI0YD3kA0ygP0r+mTPA3OB986z3/szK9PO/n0SJv8/mdcfQ68DfuuNGBv/F6jg46rKjDAd91WPc5Kg78NS6cUXhOGWvk6odX60Ws79aPxxYPeMchTIyd3cZea2s9u41H4LBT0dyX7Vq31ff1qn/7K6fu+ZV0fQ8B+1Tj97xdyGFdDG9YLr7xZ8AbSGMNOfEngkmfRRssRVbwdX0KXtsOY7C0ZE5vuS0b9PHRdNvxtmzqPV/GxwDGfQUF4BPSudG76JhbWvWHe+dgM1/pyTorSSCIuhCRpG9+U4KRl6kmJRQJvkZdclJWYC+W0KSIKH7zm6IYwSSWXotZELlfQJDwki78/TcljW5Y6JIV5kBhT1/GG6hUs45Zv6xX+ubfY2l8hHVW1BvretGv2PE4cdJWS8t8jRY7BsdeBoLYc1b5ui6beOGJwajXdvSjYEOdxl0h/P8UxEVyoNveXFO+ZT7VPzE8GvXoUsgzWttQyZgavQUldD/sXLgt2f4e6rEu7p6dGCm06TKa37n86PhcFzyu1f0a3CY9wXysZI/ntZNhsoMkaq2bVg3GiGgv5vEWeDm0sthDuRVpcjcCvlUUggUeT4qiawj8ttaVERvaYYLcrPRrDK9m+OhJJrsKzFg1CpJfYnwiCp4p0C6Kwm+IcdRZsSc7w18ItdaArplGLjqk7K8mc8Cmdo28z9nmavvkvaFwwqmXPT3ve2/RU+wRVCHi7z60d6CprZByal6mHoGhIy6q7PR0sVDIf+cLH75IcSkgtUqaSHVfQmkeveKvH9qUcMDVybzfUSg4nEpMHaw1eUYypXHHJrgMlZocbhYkn0c3qKR7ZGosfFXry7S5msPUIapG1F/Z5xAvvpgZUeqftf7VG/EpowHPKkkPybnHE9uzWlj3MTWsBnqaOpx8fqPQiEs8Pzerp1bwuGRBgLUqqkGBjNSJ3PaXk12KQojm5nOg6rOfbE+5N+0FWyQ0jjdat/CNnbJE+CVucevuXqjC/dZvw4B1wrpgFK6EH1lr4Zo63e1hv8VWYw9XuB+vE0TBCZJYCQJCPsbXzRH5KgoMZS7wpSAkWZS4Pc0QFv7KYh1xr5lNZPJJPqSbDtYxFHdKYzJgmMHiEKSDthuUxe2o8yqPuzdlNBWCqJGDfAYfHVgRf3jPu+7edGjOMTJ1966xw8PQGTsmO0z1A9bP3QatgCh3R9MV6M8YP/6ewwo63vfcVTuObLr7XTsfjl8QPbLuPcdh4gZPbUzwg9PnhqdULZKCcjpbEU6Nj/mt+vwPe+6Ci2RIN7mkNuVCwLvWDpGtz7t2yCLjS0jw8SVBIE634Jz1oFmsuafx4NY2YSdoE23ZfEe2u60rk4rzCPMmO07T5yv6+EKQIAaSDbd8sjfIZyMu+/LQyri9mpLIHZw8WaUhGhwz9bOP6SaMHTs2ht/xY3FPCM5uC3ni7Abd/OXXTC+bOtNYnuQYSsvHz2+GJ5XCC/OmNsaXMbF9V+cQk4zba8pUaiUf9qAfsN/4WAUCKuw9Yk83m337DKFAOplN1xf2iDfiVwqMry4RlBFEaWDw+CQEG0l4HO6Wdz13/eb7Dw3T0YOf3PSp664Z2TV+wzj+uqfKbbr4b3BfOnH9Z/eOXHXy0yevGrny4JqJG07cMBHJVPIBLmMMm/582BdvX7+TI4M/JJ8jf0W+Rf6FnAMPio0uWEWdq0f5lBo7FH4F9EEP+SH5Dvld8tukiXgRaPHgh3Zogzj5W/I1cgd5P0quOJ7n61I0gZf8Jflzcj25EvVID9rREqIwB/AwwT8hT5IryGXkArKae4lw+wX5OflfZAu5CKneQBn4B+QU3j2AXOrkMhlTChmrm1yIQJxGIODc2QYkE/Exhm8xl23xM5oK64heqDiXbvYyIRFCmScJ8lyyycOkmOliDkVyzEVBNRR1Oh50M4UYTsWYIwGAwDQJBGALgQCsb65dZj/CcAb2/f96xpbV77L5eSUgzoASdEIHpCEJLdCMl/3cLQp8OaIF8kvyM/Jv5Cfkn8k/ku+RfyDfJH9D/pr8D/IV8iXyRfJn5E/JHyGme5w8Sh5EdPd75D7yUfI75LfIh8kHEPPdSN5LriFXk32IAXeSy8ml5N3kEsSE68k6shZx80rEiL2kRDpJByLpJNoozdjWfuwR2UaUgFs775O3OCz5aAEPa+aLkyFU4pM4bHvtv5KXe/979X5dHt52P+//5f39jfry2/7nfzdPX7eX2Fmo1NdUs+O1f4Pd+G9a8PwOoqrCx1HquxT3laT+s9QxO8ljyxtnf8MkmzK1s3P1tZ1O8vVVl97kY0upE0tPOrFkGP/pUupjy1KLr/Wxd7jLwsr6crV8gCjzm9Z56b/8mCWc8G6Uk5o9X3Uluap2YIWLIafn4qi4mn1UFBhf06AdhDBaUqPOxsJ/RD5gDx8JBHhwG+GjcXMOe07+NB4Wl2kpdLZGdQ+QSm/nysLKTDqab80HTU+L3qLIRFtc8YAvBcgtTMj2RsH/1my1nqWLF6MgL10tDwE8fusPhq964fsv7mfDP/jAr0sfev4wrWcOPQ8Pdndtywxn8Letq9uaxlyW57KYO1O/RHNDbZijt+DZsfpFfuDzEy1srx9he/HVS/kYQQmlCrZZiLutgwjk2Iq+3tZosyTJbWkqSu0pbBdx7C0BgbLE5Dknj/sUJPEdIgPzHcmEzwuku6ujlC9lM4lcMldf7dShEB10V2NSsEa5Tc6CCb6CSLCagaq9uIiB1mUWbRXZrDYW+EsHK2XMGvDGrmdunxSmb/7885+/eVqYvP2ZXXu27S3MFvbNWZG9ur63BI/vmduHJ/Zu27M4QRAu31sq7dXZ1MZbn3vhuVs3Ng5jJbvCwofq9b9u/Vn9xKs3PXGzcN0zh6/Zu+3r/FaLa+B9CfHCTWRDbd2W6TLCyyBftZjbItg0gkOmjRWNCFCJ05Ntlqj2UjqMB9hN3nD9wQPzO+e2bb7kwg0TI4fMlXNOMdQhJjJ22HK1zCOdbZ8aGq8eMOzpZbabuV6g1y7Qm/VWz08ykzJVe0muYqW+HJLtxglyR1z9Vvb6LW+/7l+6NXu0aXtxe5NbB1845vAhVVq3mzIEHImoAS5PeHfPbMit+cwoXuPrjApUEZVEyASXFt7dPWdqmi8cUQ2QPXCbJoNfLUQ0LbSjay6kaUYoIRvgd8QiPnBdKAght0+nkuRc83cuBJDfvtAlCbpPCwG/4tUFQXavaYUve9wa3lDVkWVp43KYXxZdG56nVHKd3uCSqMtcdsG9fuGnw3gzn66Flo0V6ohL0oiaVvCVT0rtVFbiINKWgNuFfM7GBFTXo5KLOYXFBXWoiD04T5YmVJL9KiiyrGAXKoq8yQGyIk94vYRUe4s9nR1t2VQCeaTJa3gNvw8f56m6ecwh17lLetePBieaobB0gm+IFdOBZGMakbiUgjtMzdD5UDp8WHDDJ+6iA6ZmZ/H3E7dgDX1JVU6huri2fqSfsKbxivW5+lJwLfCay7oObrdcdh08sxq3x1yP31hfTeBGW1jatrRwLdKxiEitXOtxqg7G7GHbxWWwBZtwpwRYMqgJn1wqEtHrFUWzQwzwlcnAH/f6Qbj2l3eMsa13nZ17E1bL42zr2dfpgOWCYVhtfe78HIAX2cV4l7W14SR2gR8QbI9FAHgQDYdmPP5B4PEPhDvS+UxOLMHjH7goYTC5dmRgBZ//1ZaW8PFevuS/PaDPg8AzWVkT+bpZ9mrb9RWgbVjO51kIVduxGTD4xDwpicZ0bmJuf//me2aN7tpcf2bC61EVDc1bnyw6Qk0tvv7ORKYbiqnWMsJGCW64/MAJTdd0t6MlH3JRcXDPxv4oTNy1pbJrbrRAU62r2kN9ZndbhEmbvaWbL7sy1d+1EQqJ9IfGCpHu/tpgeG7vRw40FcJhwVMER36o39ZVf4z0KRIf4rYIaeMranI/LZ/P5tXUt4ygp5IGXSSpRDaN5qLXXuFaNIMIPhshHgaRmZ9790UT1mtu1WEtuHjsnw5RSEHOOkOv1cPuf4cO67uhv/sjh6FIUKD0PQtXaj4QbhHDbnrEpYFyjK6wIh+FtQtPaTpV3ks7qdXdBpdBRmcfA+7Dtc4dR52RQzpQUM8aJMzf3FAQ847Yqw4fYEsRZb6gz2/yxQr8Du5WSscZUou/UoSgKckO4MlgPzxrRVRFgH44+Iz1twcs64AQof/YJyiqFcFrPCvCCwsvwjY55Hps4UV2p/UIbHJZ9z/mCsnWKTR1N7nq6+DvxvacJibJcg+MoatsKeZsKbo7lYw0+7z21At/JSOLGl/Oyl51hhZX4WsBElOBonyNMnrPlGj6rKjuUrQjEOVBD//kcLsGb0zB1rdqj+vhaJOp/Imka0LmaUVk4ivvc/dfiuz6dgX1fwDea0A5AAAAeJxjYGRgYABi4b8Pq+L5bb4ycDO/AIow3JjXXgKj/z/+b8XyiLkRyOVgYAKJAgCNAQ50AHicY2BkYGAO+p/FwMDy6P/j/49ZHjEARVBACgCxVAe1eJxVULsNAjEMDUkGIOwBNwCTnMQcNwBiiJRXI7EBDS01E0CB6ZEOxMc855zLUTw58nt+z44jY+zRGHfjryNmV+MtaBWhr3bZY+hvAVIE4fpZ8Up+2UP4KTCXHn+85YvbICv7LETDD3dFLxRPuxYennj7ijllk/pGyQQn87vxDqgrfg6ayO/EtZpx4s7u+ZX38mfgYMzkjtnZ/z1JE0eZAb400tTl5nRXJXvq7Xke8E3iy7+S/LPmN6qn0v8BCIRlXQAAAAAAAAAARACsAZoCJALmA1YDtAP+BGYEjgTIBSoFrgZyBtAHEAdYB34H5AgYCE4IpgkOCVoJwApiCrQLDgtcDDwMnA1mDdwOPg74D8gQLhB2EMYRaBIsEmoTCBPiFDgUwBWwFkgXPhfsGGIYwhlqGbQaLhpyGrAbEhteG84cIhxaHQYdYh2AHbAd5h4cHkYegh9oH+4g3CEQIaYiRCP8JUYliiXwJnwnnigQKFopDClMKcYqOiqMLSAtuC5SLyYvti/uMHYw0jEeMXEAAAABAAAAZAFAABQAAAAAAAIAUgBiAHMAAAESC3AAAAAAeJx1kMtOwkAUhv+RiwqJGk3cOisDMZZL4gISEhIMbHRDDFtTSmlLSodMBxJew3fwYXwJn8WfdjAGYpvpfOebM2dOB8A1viGQP08cOQucMcr5BKfoWS7QP1sukl8sl1DFm+Uy/bvlCh4QWK7iBh+sIIrnjBb4tCxwJS4tn+BC3Fku0D9aLpJ7lku4Fa+Wy/Se5QomIrVcxb34GqjVVkdBaGRtUJftZqsjp1upqKLEjaW7NqHSqezLuUqMH8fK8dRyz2M/WMeu3of7eeLrNFKJbDnNvRr5ia9d48921dNN0DZmLudaLeXQZsiVVgvfM05ozKrbaPw9DwMorLCFRsSrCmEgUaOtc26jiRY6pCkzJDPzrAgJXMQ0LtbcEWYrKeM+x5xRQuszIyY78PhdHvkxKeD+mFX00ephPCHtzogyL9mXw+4Os0akJMt0Mzv77T3Fhqe1aQ137brUWVcSw4MakvexW1vQePROdiuGtosG33/+7wfseIRVAHicbZLnl900EMXf3XV9m02A0FvoJIBDCb0l9N6S0CEgyWNbx7LkVVnv/veMX06+oU86OqM7d353Nnub22e7+f/TYg/7yJCjQIkKNbY4wBkc4izO4S7cjXtwHvfiPtyPB/AgHsLDeASP4jE8jgt4Ak/iKTyNZ/AsnsPzuIhLeAEv4iU0uIyX8QpexWu4gtfxBt7EW3gb7+BdvIf38QE+xFVcw0f4GJ/gU3yGz/EFvsRX+Brf4Ft8h+/xA37ET7iOG7iJn/ELfsVv+B1/4E/8hb9xC//gXwhIKLSgTZYC+aJzpiWfGR1iblyv7b5yfRkXHSP5A+GjVoYaYWKhhFVkssFNVLVusU2rfdUJRdK5sRKB63UYizQbJ9o6RDcvIqqhoJPZ+ZgPxGLZbFLgkvVvNpFNtaEuNm4mu/W6H25fc22lOykWT1YNpXITV8bDEIUa3TH5zrilOkoUonZ268ZGac8m23IR3mrbZ5PQhieyYznSaaPtcR69CMPO9Wqu7I0IgUJx5JVrqQxD6jpD+3RKmXFqLAJ7VUMmyZh8pRQqfhZru1p6TZ0SgWpt2VHvxZSr9VM+D85SpYQh2wqfz17bmFGrYyaZcaGjMFoVnkspVssgYhDznLcuNlfOaNu5O2NUx7olbjcdHCUXqdlxKWetYvJUzqzP0WRGTHO9kt8R2+MEFEuuQZWrd31MzFqc5rPgAepdXmthyex3iCdtU6johH/ZnkpLcXF+rFZqDZ3Es72OQ5J3PBWdNpxv1joVDtZdaWQybORwd7dpkuSprZPlXWIJygJHvhNjADYPkzZUcRjSCd9mK/QiDJpMW0sdZVqRlIu2bDNsl4HIsC3eECnsWPTO9YbOyaQNa/UNW1kptSIKyTlwl45kcqcFbxi330ptnUpG+LBlFc9MPIl65jTYY4jFxJbSVPCARsgqkqE1xM3mP2RoMMMAAAB4nGPw3sFwIihiIyNjX+QGxp0cDBwMyQUbGVidNjEwMmiBGJu5mBg5ICw+BjCLzWkX0wGgNCeQze60i8EBwmZmcNmowtgRGLHBoSNiI3OKy0Y1EG8XRwMDI4tDR3JIBEhJJBBs5mFi5NHawfi/dQNL70YmBhcADHYj9AAA) format('woff'),url(data:application/octet-stream;base64,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b250ZWxsby5jb20AQwBvAHAAeQByAGkAZwBoAHQAIAAoAEMAKQAgADIAMAAxADkAIABiAHkAIABvAHIAaQBnAGkAbgBhAGwAIABhAHUAdABoAG8AcgBzACAAQAAgAGYAbwBuAHQAZQBsAGwAbwAuAGMAbwBtAGYAbwBuAHQAZQBsAGwAbwBSAGUAZwB1AGwAYQByAGYAbwBuAHQAZQBsAGwAbwBmAG8AbgB0AGUAbABsAG8AVgBlAHIAcwBpAG8AbgAgADEALgAwAGYAbwBuAHQAZQBsAGwAbwBHAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAHMAdgBnADIAdAB0AGYAIABmAHIAbwBtACAARgBvAG4AdABlAGwAbABvACAAcAByAG8AagBlAGMAdAAuAGgAdAB0AHAAOgAvAC8AZgBvAG4AdABlAGwAbABvAC4AYwBvAG0AAAAAAgAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAQIBAwEEAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgETARQBFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBKgErASwBLQEuAS8BMAExATIBMwE0ATUBNgE3ATgBOQE6ATsBPAE9AT4BPwFAAUEBQgFDAUQBRQFGAUcBSAFJAUoBSwFMAU0BTgFPAVABUQFSAVMBVAFVAVYBVwFYAVkBWgFbAVwBXQFeAV8BYAFhAWIBYwFkAWUABHVzZXIGZm9sZGVyBGxpc3QFbG9naW4DY29nB3R3aXR0ZXILYXJ0aWNsZS1hbHQGY2FuY2VsBGhvbWUIZG93bi1kaXIIZmFjZWJvb2sIYXN0ZXJpc2sGdXBsb2FkCXN0b3B3YXRjaAZleHBvcnQFaGVhcnQEcGx1cwZ1cC1kaXIEbWVudQlsZWZ0LW9wZW4KcmlnaHQtb3BlbgVpbmJveAZ3cmVuY2gHY29tbWVudA1zdGFja292ZXJmbG93CHF1ZXN0aW9uCm9rLWNpcmNsZWQHd2FybmluZwRtYWlsBGxpbmsHa2V5LWludgV0cmFzaAhkb3dubG9hZAdnbGFzc2VzBnFyY29kZQdzaHVmZmxlA2V5ZQRsb2NrBnNlYXJjaARiZWxsBXVzZXJzCGxvY2F0aW9uCWJyaWVmY2FzZQlp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) format('truetype')}[class*=" icon-"]:before,[class^=icon-]:before{font-family:fontello;font-style:normal;font-weight:400;display:inline-block;text-decoration:inherit;width:1em;margin-right:.2em;text-align:center;font-variant:normal;text-transform:none;line-height:1em;margin-left:.2em}.icon-user:before{content:'\e800'}.icon-folder:before{content:'\e801'}.icon-list:before{content:'\e802'}.icon-login:before{content:'\e803'}.icon-cog:before{content:'\e804'}.icon-twitter:before{content:'\e805'}.icon-article-alt:before{content:'\e806'}.icon-cancel:before{content:'\e807'}.icon-home:before{content:'\e808'}.icon-down-dir:before{content:'\e809'}.icon-facebook:before{content:'\e80a'}.icon-asterisk:before{content:'\e80b'}.icon-upload:before{content:'\e80c'}.icon-stopwatch:before{content:'\e80d'}.icon-export:before{content:'\e80e'}.icon-heart:before{content:'\e80f'}.icon-plus:before{content:'\e810'}.icon-up-dir:before{content:'\e811'}.icon-menu:before{content:'\e812'}.icon-left-open:before{content:'\e813'}.icon-right-open:before{content:'\e814'}.icon-inbox:before{content:'\e815'}.icon-wrench:before{content:'\e816'}.icon-comment:before{content:'\e817'}.icon-stackoverflow:before{content:'\e818'}.icon-question:before{content:'\e819'}.icon-ok-circled:before{content:'\e81a'}.icon-warning:before{content:'\e81b'}.icon-mail:before{content:'\e81c'}.icon-link:before{content:'\e81d'}.icon-key-inv:before{content:'\e81e'}.icon-trash:before{content:'\e81f'}.icon-download:before{content:'\e820'}.icon-glasses:before{content:'\e821'}.icon-qrcode:before{content:'\e822'}.icon-shuffle:before{content:'\e823'}.icon-eye:before{content:'\e824'}.icon-lock:before{content:'\e825'}.icon-search:before{content:'\e826'}.icon-bell:before{content:'\e827'}.icon-users:before{content:'\e828'}.icon-location:before{content:'\e829'}.icon-briefcase:before{content:'\e82a'}.icon-instagram:before{content:'\e82b'}.icon-clock:before{content:'\e82c'}.icon-phone:before{content:'\e82d'}.icon-calendar:before{content:'\e82e'}.icon-print:before{content:'\e82f'}.icon-edit:before{content:'\e830'}.icon-bold:before{content:'\e831'}.icon-italic:before{content:'\e832'}.icon-rocket:before{content:'\e833'}.icon-whatsapp:before{content:'\e834'}.icon-dot-3:before{content:'\e835'}.icon-info-circled:before{content:'\e836'}.icon-videocam:before{content:'\e837'}.icon-quote-right:before{content:'\e838'}.icon-picture:before{content:'\e839'}.icon-palette:before{content:'\e83a'}.icon-lamp:before{content:'\e83b'}.icon-book-open:before{content:'\e83c'}.icon-ok:before{content:'\e83d'}.icon-chat-alt:before{content:'\e83e'}.icon-archive:before{content:'\e83f'}.icon-play:before{content:'\e840'}.icon-pause:before{content:'\e841'}.icon-down-open:before{content:'\e842'}.icon-up-open:before{content:'\e843'}.icon-minus:before{content:'\e844'}.icon-exchange:before{content:'\e845'}.icon-network:before{content:'\e846'}.icon-link-ext:before{content:'\f08e'}.icon-github-circled:before{content:'\f09b'}.icon-filter:before{content:'\f0b0'}.icon-docs:before{content:'\f0c5'}.icon-list-bullet:before{content:'\f0ca'}.icon-list-numbered:before{content:'\f0cb'}.icon-underline:before{content:'\f0cd'}.icon-sort:before{content:'\f0dc'}.icon-linkedin:before{content:'\f0e1'}.icon-smile:before{content:'\f118'}.icon-keyboard:before{content:'\f11c'}.icon-code:before{content:'\f121'}.icon-shield:before{content:'\f132'}.icon-bitbucket:before{content:'\f171'}.icon-windows:before{content:'\f17a'}.icon-wheelchair:before{content:'\f193'}.icon-bank:before{content:'\f19c'}.icon-google:before{content:'\f1a0'}.icon-building-filled:before{content:'\f1ad'}.icon-database:before{content:'\f1c0'}.icon-lifebuoy:before{content:'\f1cd'}.icon-header:before{content:'\f1dc'}.icon-binoculars:before{content:'\f1e5'}.icon-chart-area:before{content:'\f1fe'}.icon-pinterest:before{content:'\f231'}.icon-medium:before{content:'\f23a'}.icon-gitlab:before{content:'\f296'}.icon-telegram:before{content:'\f2c6'}.datalist-polyfill{list-style:none;display:none;background:#fff;box-shadow:0 2px 2px #999;position:absolute;left:0;top:0;margin:0;padding:0;max-height:300px;overflow-y:auto}.datalist-polyfill:empty{display:none!important}.datalist-polyfill>li{padding:3px;font:13px "Lucida Grande",Sans-Serif}.datalist-polyfill__active{background:#3875d7;color:#fff}date-input-polyfill{z-index:1000!important;max-width:320px!important;width:320px!important}date-input-polyfill .monthSelect-wrapper,date-input-polyfill .yearSelect-wrapper{height:50px;line-height:50px;padding:0;width:40%!important;margin-bottom:10px!important}date-input-polyfill .monthSelect-wrapper select,date-input-polyfill .yearSelect-wrapper select{padding:0 12px;height:50px;line-height:50px;box-sizing:border-box}date-input-polyfill .yearSelect-wrapper{width:35%!important}date-input-polyfill table{width:100%!important;max-width:100%!important;padding:0 12px 12px 12px!important;box-sizing:border-box;margin:0}date-input-polyfill table td:first-child,date-input-polyfill table td:last-child,date-input-polyfill table th:first-child,date-input-polyfill table th:last-child{width:32px!important;padding:4px!important}date-input-polyfill select{margin-bottom:10px}date-input-polyfill button{width:25%!important;height:50px!important;line-height:50px!important;margin-bottom:10px!important;background:inherit;position:relative;color:inherit;padding:inherit;box-sizing:inherit;border-radius:inherit;font-size:inherit;box-shadow:none;border:none;border-bottom:none!important}::placeholder{color:#868686;text-align:right}::-webkit-input-placeholder{text-align:right}input:-moz-placeholder{text-align:right}.button,button{display:inline-block;background:#f02e65;border-radius:26px;border:none;color:#fff;height:52px;line-height:52px;padding:0 25px;cursor:pointer;font-size:16px;box-sizing:border-box;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.button:focus,.button:hover,button:focus,button:hover{background:#c52653;border-bottom:none}.button.fly,button.fly{position:fixed;z-index:2;bottom:30px;left:30px}.button.fill,button.fill{display:block;width:100%;text-align:center;padding:0 10px!important}.button.fill-aligned,button.fill-aligned{display:block;width:100%;text-align:right;padding:0 20px!important}.button.icon,button.icon{padding-left:30px!important}.button.icon-reduce,button.icon-reduce{padding-right:15px!important}.button.reverse,button.reverse{background:0 0;height:50px;line-height:48px;padding:0 23px;color:#f02e65;border:solid 2px #f02e65}.button.reverse:focus,.button.reverse:hover,button.reverse:focus,button.reverse:hover{color:#c52653;border-color:#c52653}.button.round,button.round{width:52px;padding:0}.button.round.small,button.round.small{font-size:12px;width:30px;height:30px;line-height:30px}.button.white,button.white{background:#fff;color:#f02e65}.button.white.reverse,button.white.reverse{color:#fff;background:0 0;border:solid 2px #fff}.button.trans,button.trans{background:0 0!important}.button.trans.reverse,button.trans.reverse{background:0 0!important}.button.success,button.success{background:#1bbf61}.button.success.reverse,button.success.reverse{color:#1bbf61;background:#fff;border:solid 2px #1bbf61}.button.danger,button.danger{background:#f53d3d}.button.danger.reverse,button.danger.reverse{color:#f53d3d;background:#fff;border:solid 2px #f53d3d}.button .disabled,.button.disabled,.button:disabled,button .disabled,button.disabled,button:disabled{background:#818181;cursor:default}.button.link,button.link{background:0 0;border-radius:0;color:#1e849e;height:auto;line-height:normal;padding:0;padding-left:0!important}.button.link:hover,button.link:hover{border-bottom:dotted 1px #1e849e}.button.link:focus,button.link:focus{box-shadow:inherit}.button.strip,button.strip{background:0 0;height:auto;line-height:16px;color:inherit;padding:0 5px}.button.facebook,button.facebook{color:#fff!important;background:#4070b4!important}.button.twitter,button.twitter{color:#fff!important;background:#56c2ea!important}.button.linkedin,button.linkedin{color:#fff!important;background:#0076b5!important}.button.github,button.github{color:#fff!important;background:#7e7c7c!important}.button:focus,button:focus{outline:0}label{margin-bottom:15px;display:block;line-height:normal}.input,input[type=date],input[type=datetime-local],input[type=email],input[type=file],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=url],select,textarea{-webkit-appearance:none;-moz-appearance:none;-webkit-transform:translateZ(0);box-sizing:content-box;height:40px;line-height:40px;border:solid 1px #e2e2e2;border-radius:10px;padding:5px 15px;font-size:16px;display:block;width:calc(100% - 32px);margin-bottom:30px}.input[type=file],input[type=date][type=file],input[type=datetime-local][type=file],input[type=email][type=file],input[type=file][type=file],input[type=number][type=file],input[type=password][type=file],input[type=search][type=file],input[type=tel][type=file],input[type=text][type=file],input[type=url][type=file],select[type=file],textarea[type=file]{line-height:0;padding:15px;height:auto}.input[xtype=file],input[type=date][xtype=file],input[type=datetime-local][xtype=file],input[type=email][xtype=file],input[type=file][xtype=file],input[type=number][xtype=file],input[type=password][xtype=file],input[type=search][xtype=file],input[type=tel][xtype=file],input[type=text][xtype=file],input[type=url][xtype=file],select[xtype=file],textarea[xtype=file]{line-height:normal;height:auto;border:none;position:absolute;top:0;right:0;bottom:0;opacity:0;cursor:pointer;padding:0;margin:0;font-size:0;width:100%}.input[xtype=file]:disabled,input[type=date][xtype=file]:disabled,input[type=datetime-local][xtype=file]:disabled,input[type=email][xtype=file]:disabled,input[type=file][xtype=file]:disabled,input[type=number][xtype=file]:disabled,input[type=password][xtype=file]:disabled,input[type=search][xtype=file]:disabled,input[type=tel][xtype=file]:disabled,input[type=text][xtype=file]:disabled,input[type=url][xtype=file]:disabled,select[xtype=file]:disabled,textarea[xtype=file]:disabled{opacity:0!important}.input:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=email]:focus,input[type=file]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=url]:focus,select:focus,textarea:focus{outline:0;border-color:#b3d7fd}.input:disabled,input[type=date]:disabled,input[type=datetime-local]:disabled,input[type=email]:disabled,input[type=file]:disabled,input[type=number]:disabled,input[type=password]:disabled,input[type=search]:disabled,input[type=tel]:disabled,input[type=text]:disabled,input[type=url]:disabled,select:disabled,textarea:disabled{background:#f1f3f5}.input.strip,input[type=date].strip,input[type=datetime-local].strip,input[type=email].strip,input[type=file].strip,input[type=number].strip,input[type=password].strip,input[type=search].strip,input[type=tel].strip,input[type=text].strip,input[type=url].strip,select.strip,textarea.strip{border:none;border-radius:0;padding:5px 0;width:100%;background-color:transparent;background-position:left 2px top 50%;border-bottom:solid 1px #e2e2e2;color:#868686}.input.strip:focus,input[type=date].strip:focus,input[type=datetime-local].strip:focus,input[type=email].strip:focus,input[type=file].strip:focus,input[type=number].strip:focus,input[type=password].strip:focus,input[type=search].strip:focus,input[type=tel].strip:focus,input[type=text].strip:focus,input[type=url].strip:focus,select.strip:focus,textarea.strip:focus{border-color:#b3d7fd}input[type=email],input[type=url]{direction:ltr}input[type=email]::placeholder,input[type=url]::placeholder{text-align:left;direction:ltr}select{background:0 0;-webkit-appearance:none;background-image:url("data:image/svg+xml;utf8,");background-position:left 15px top 50%;background-repeat:no-repeat;background-color:#fff;width:calc(100% - 62px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-left:45px}select:-webkit-autofill{background-image:url("data:image/svg+xml;utf8,")!important;background-position:100% 50%!important;background-repeat:no-repeat!important}input[type=search],input[type=search].strip{background:0 0;-webkit-appearance:none;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAdZJREFUWIXt1s2LjWEYBvDfnDMzFpNIamZIFrMiJYMyFmKhZKfOwoiFr2LFn2BByG6WVrKwMcjWxgoLIlKIUk6RrzAjZWZ8LO731FlwvB+PUbjq6X0X7/VeV/d9P9fz8IdRL8Hpw3x8w0xaOz9GNxq4gJeZcGs1cRab0fU7xLfgMSYzoT3YgNXYhIO4iM+4iTWphGs4jikcFSXvhEGczr4/UFW8C2N4jXUFudvwCYeqGNgnSr6yJH8rpkWLCqMfE9hdUryFE3iC3qLEk7ij+kT34Q32FiHV8Qr7K4q3cArXihCGxd5elMjARnzBvE4f1dreV+AtnicycC/7/7K8BhaIvqXCO3zFwrwGZtCT0EAtW9N5DTSxWGR/CizNns/yEgbFEK5NZGCnaEPHE7e9Ai9wA6OJDIzistgJubFdxHB/RfFVYgCHixJruI5x5dNwDm6J47sUhkTvjpUw0Y1zeOrXR3hHjOA9zmBuTs4Arog4/yhuUZWwHPdFMh7280BZgiP4ILJ/UuymqRQmejPxphiquzgvKnMJDzOxB9glZqiRiecykbfHdawX98EhcdxO4BGu4nYm2EJDzEKPSMIdYrBnFYUq8d/EP2di1gey3cS4ErflvxffASbhcakIINaMAAAAAElFTkSuQmCC);background-position:right 15px top 50%;background-repeat:no-repeat;background-size:20px 20px;width:calc(100% - 60px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-right:45px}select[multiple]{min-height:75px;padding:5px 10px!important;padding-left:50px!important}select[multiple] option{padding:10px 4px;border-bottom:solid 1px #f1f1f1}select[multiple] option:last-child{border-bottom:none}textarea{min-height:75px;resize:vertical;line-height:32px;padding:5px 15px}textarea.tall{min-height:180px}fieldset{border:none;margin:0;padding:0}.counter{font-size:13px;float:left;margin-top:-20px}.file-preview{background:#fff url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAIElEQVQoU2NkYGAwZsAEZ9GFGIeIQix+wfQgyDODXSEAcUwGCrDSHgkAAAAASUVORK5CYII=)!important;border:solid 1px #e2e2e2;box-shadow:inset 0 0 3px #a0a0a0;border-radius:8px;width:calc(100% - 2px);max-height:180px;visibility:visible!important}.video-preview{padding-top:56%;position:relative;border-radius:10px;background:#e7e7e7;overflow:hidden;margin:0}.video-preview iframe{position:absolute;top:0;width:100%;height:100%;border:none}.map-preview{padding-top:50%;position:relative;margin-bottom:10px;border-radius:10px;background:#e7e7e7;overflow:hidden;box-shadow:0 0 30px rgba(218,218,218,.5)}.map-preview iframe{position:absolute;top:0;width:100%;height:100%;border:none}.tooltip{position:relative}.tooltip.large:hover:after{white-space:normal;width:280px}.tooltip:hover:after{white-space:nowrap;background:#333;border-radius:5px;bottom:26px;color:#fff;content:attr(data-tooltip);padding:5px 15px;position:absolute;font-size:13px;line-height:20px;z-index:98;right:20%;margin-right:-30px}.tooltip:hover:before{border:solid;border-color:#333 transparent;border-width:6px 6px 0 6px;bottom:20px;content:"";position:absolute;z-index:99;right:5px}.tooltip.down:hover:after{top:26px;bottom:inherit}.tooltip.down:hover:before{top:20px;border-width:0 6px 6px 6px;bottom:inherit}.tag{display:inline-block;background:#e7e7e7;color:#868686;border-radius:12px;line-height:24px;padding:0 8px;font-size:12px;box-shadow:none!important;border:none;height:auto;width:auto;white-space:nowrap;text-overflow:ellipsis}.tag:hover{border:none}.tag.green{background:#1bbf61;color:#fff}.tag.red{background:#f53d3d;color:#fff}.tag.yellow{background:#ffe28b;color:#494949}.tag.focus{background:#f02e65;color:#fff}.tag.dark{background:#6f6f6f;color:#e7e7e7}.tag.blue{background:#4abde8;color:#fff}.tag.link{background:#1e849e;color:#fff}input[type=checkbox]{width:26px;height:16px;position:relative;-webkit-appearance:none;border-radius:0;border:none;background:0 0;vertical-align:middle}input[type=checkbox]:after{content:"";display:block;width:20px;height:20px;background:#fff;top:-5px;border-radius:50%;position:absolute;border:solid 3px #f02e65;vertical-align:middle}input[type=checkbox]:checked:after{text-align:center;font-family:fontello;content:'\e83d';font-size:16px;line-height:20px;color:#fff;background:#f02e65}input[type=checkbox]:focus{outline:0}input[type=checkbox]:focus:after,input[type=checkbox]:hover:after{outline:0;border-color:#000}input[type=checkbox]:checked:focus:after,input[type=checkbox]:checked:hover:after{border-color:#f02e65}.input-copy{position:relative}.input-copy input,.input-copy textarea{padding-left:65px;width:calc(100% - 82px);resize:none}.input-copy .copy{position:absolute;top:0;left:0;border-right:solid 1px #e2e2e2;height:calc(100% - 2px);width:50px;line-height:50px;text-align:center;background:#fbfbfb;margin:1px;border-radius:0 10px 10px 0}.paging{color:#8d8e8e;padding:5px 15px;font-size:12px}.paging form{display:inline-block}.blue-snap iframe{-webkit-appearance:none;-moz-appearance:none;-webkit-transform:translateZ(0);box-sizing:content-box;height:40px;line-height:40px;border:solid 1px #e2e2e2;border-radius:10px;padding:5px 15px;font-size:16px;display:block;width:calc(100% - 32px);margin-bottom:30px;float:none!important;height:40px!important;width:calc(100% - 32px)!important;border:solid 1px #e2e2e2!important;background:0 0!important;position:static!important}.blue-snap iframe[type=file]{line-height:0;padding:15px;height:auto}.blue-snap iframe[xtype=file]{line-height:normal;height:auto;border:none;position:absolute;top:0;right:0;bottom:0;opacity:0;cursor:pointer;padding:0;margin:0;font-size:0;width:100%}.blue-snap iframe[xtype=file]:disabled{opacity:0!important}.blue-snap iframe:focus{outline:0;border-color:#b3d7fd}.blue-snap iframe:disabled{background:#f1f3f5}.blue-snap iframe.strip{border:none;border-radius:0;padding:5px 0;width:100%;background-color:transparent;background-position:left 2px top 50%;border-bottom:solid 1px #e2e2e2;color:#868686}.blue-snap iframe.strip:focus{border-color:#b3d7fd}.blue-snap .error{font-size:12px;margin-top:-25px;color:#f53d3d;height:40px;padding-right:2px}.pell{height:auto;padding-bottom:0;margin-bottom:0;padding-top:0;background:#fff;line-height:normal!important}.pell.hide{padding:0!important;height:1px;min-height:1px;max-height:1px;border:none;box-shadow:none;margin-bottom:20px;opacity:0}.pell [contenteditable=true]:empty:before{content:attr(placeholder);display:block;color:#868686}.pell .pell-actionbar{border-bottom:solid 1px #e7e7e7;margin:0 -15px 15px -15px;padding:10px 15px}.pell .pell-content{min-height:100px;display:block;padding:10px;margin:-10px;cursor:text}.pell .pell-content:focus{outline:0}.pell button{background:inherit;color:inherit;margin:0;padding:0;padding-left:15px;height:40px;line-height:40px;box-shadow:none;cursor:pointer;font-size:13px;border-radius:0}.pell button.pell-button-selected,.pell button:focus,.pell button:hover{color:#1e849e}.pell h1,.pell h2,.pell h3,.pell h4,.pell h5,.pell h6{text-align:inherit;margin-bottom:30px}.pell b,.pell strong{font-weight:700}.pell ol,.pell ul{margin:0 0 20px 0}.pell ol li,.pell ul li{display:list-item!important;list-style:inherit;margin-bottom:10px}.pell ol li p,.pell ul li p{margin:0}.pell ul li{margin:0 20px;display:list-item}label.switch{line-height:42px}input[type=checkbox].switch{width:67px;height:42px;line-height:42px;border-radius:21px;background:#818181;display:block;margin:0;padding:5px;padding-right:30px;padding-left:5px}input[type=checkbox].switch:checked{background:#f02e65;padding-right:5px;padding-left:30px}input[type=checkbox].switch:focus:after,input[type=checkbox].switch:hover:after{background:#fff}input[type=checkbox].switch:after{content:"";display:block;width:32px;height:32px;background:#fff;border-radius:50%;border:none;position:static;top:0}.password-meter{margin:-41px 10px 30px 10px;height:2px;background:0 0;max-width:100%;z-index:2;position:relative}.password-meter.weak{background:#f53d3d}.password-meter.medium{background:#ffed4d}.password-meter.strong{background:#1bbf61}.color-input:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.color-input .color-preview{width:53px;height:53px;float:right;margin-left:10px;background:#000;border-radius:10px;box-shadow:inset 0 0 3px #a0a0a0;position:relative}.color-input .color-preview input{opacity:0;position:absolute;top:0;bottom:0;left:0;right:0;width:100%;height:100%;cursor:pointer}.color-input input{text-transform:uppercase;float:right;width:calc(100% - 95px)}.grecaptcha-badge{box-shadow:none!important;border-radius:10px!important;overflow:hidden!important;background:#4d92df!important;bottom:25px}.grecaptcha-badge:hover{width:256px!important}.back{font-size:15px;line-height:24px;height:24px;margin-right:-15px;margin-top:-25px;margin-bottom:20px}hr{height:1px;background:#eceff1;border:none}.upload{position:relative}.upload:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.upload input{position:absolute;top:0;right:0;opacity:0;cursor:pointer}.upload.single .preview{height:0;position:relative;padding-top:100%;width:100%;margin-bottom:15px!important}.upload.single .preview li{position:absolute;top:0;width:calc(100% - 20px);height:calc(100% - 20px);margin-left:0!important;margin-bottom:0!important}.upload .button{float:right;margin-left:20px!important}.upload .button.disabled,.upload .button.disabled:hover{background:0 0;color:inherit;border-color:inherit}.upload .count{float:right;line-height:52px}.upload .progress{background:#1bbf61;height:6px;border-radius:3px;margin-bottom:15px!important}.upload .preview:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.upload .preview li{float:right;margin-left:20px!important;margin-bottom:15px!important;background:#f1f1f1;width:150px;height:150px;line-height:148px;text-align:center;border-radius:20px;overflow:hidden;position:relative;cursor:pointer;border:solid 10px #f1f1f1}.upload .preview li:hover:before{background:#f02e65}.upload .preview li:before{content:'\e807';font-family:fontello;font-size:12px;position:absolute;width:20px;height:20px;display:block;top:5px;left:5px;text-align:center;line-height:20px;vertical-align:middle;border-radius:50%;background:#484848;color:#fff;z-index:1}.upload .preview li img{vertical-align:middle;max-height:150px;max-width:150px;-webkit-filter:drop-shadow(0 0 6px rgba(0, 0, 0, .3));filter:drop-shadow(0 0 1px rgba(0, 0, 0, .3))}.upload.wide .preview li{height:0;width:100%;position:relative;padding-top:30.547%;background:#e7e7e7;border-radius:10px;overflow:hidden;border:solid 1px #f9f9f9;margin:0}.upload.wide .preview li img{border-radius:10px;position:absolute;top:0;width:100%;display:block;opacity:1;max-width:inherit;max-height:inherit}ol{list-style:none;counter-reset:x-counter;padding:0}ol li{counter-increment:x-counter;line-height:30px;margin-bottom:30px;margin-right:45px}ol li::before{display:inline-block;content:counter(x-counter);color:#f02e65;color:#fff;background:#fff;background:#f02e65;border:solid 2px #f02e65;margin-left:15px;margin-right:-45px;width:26px;height:26px;border-radius:50%;text-align:center;line-height:26px}.required{color:#f53d3d;font-size:8px;position:relative;top:-8px}.drop-list{position:relative;outline:0}.drop-list.open ul{display:block}.drop-list ul{position:relative;background:#fff;border-radius:10px;box-shadow:0 0 3px rgba(0,0,0,.05);padding:30px;display:block;border-bottom:none;box-shadow:0 0 6px rgba(0,0,0,.1);display:none;position:absolute;bottom:calc(100% + 10px);z-index:2;padding:0;right:-10px;max-width:280px;min-width:240px;overflow:hidden}.drop-list ul.padding-small{padding:15px}.drop-list ul.y-scroll{overflow-y:auto}.drop-list ul.danger{background:#f53d3d;color:#fff}.drop-list ul.focus{background:#f02e65;color:#fff}.drop-list ul.focus .button,.drop-list ul.focus button{background:#fff;color:#f02e65}.drop-list ul.warning{background:#ffed4d;color:#2d2d2d}.drop-list ul.warning .button,.drop-list ul.warning button{background:rgba(45,45,45,.8);color:#ffed4d}.drop-list ul>footer{margin:30px -30px -30px -30px;padding:15px 30px;background:#f5f5f5;border:solid 1px #eaeaea;border-radius:0 0 10px 10px}.drop-list ul hr{height:2px;background:#eceff1;border:none;margin:30px -30px}.drop-list ul .header{position:static;height:40px;padding:20px 30px 20px 30px;margin-bottom:30px;margin:-30px -30px 20px -30px;background:#f9f9f9;border-bottom:solid 1px #efefef}.drop-list ul .toggle{position:relative;border-top:2px solid #f6f7f8;border-bottom:2px solid #f6f7f8;margin:0 -30px;padding:30px;height:35px;overflow:hidden}.drop-list ul .toggle button.ls-ui-open{position:absolute;top:0;right:0;width:100%;height:95px;background:0 0;opacity:.5;border-radius:0}.drop-list ul .toggle .icon-minus{display:none}.drop-list ul .toggle .content{display:none}.drop-list ul .toggle.open{height:auto}.drop-list ul .toggle.open .icon-minus{display:block}.drop-list ul .toggle.open .icon-plus{display:none}.drop-list ul .toggle.open .content{display:block}.drop-list ul .list li{border-bottom:solid 2px #f6f7f8;margin:0 -30px 30px -30px;padding:0 30px 30px 30px}.drop-list ul .list li:last-child{padding-bottom:0;margin-bottom:0;border-bottom:none}.drop-list ul.new{text-align:center}.drop-list ul.new i{font-size:80px;line-height:80px;font-family:Poppins,sans-serif;font-style:normal;font-weight:300}.drop-list ul.new b{margin-top:20px;display:block}.drop-list ul:before{border:solid;border-color:#fff transparent;border-width:8px 8px 0 8px;bottom:-8px;content:"";position:absolute;z-index:99;right:30px}.drop-list ul li{border-bottom:solid 1px #f1f3f5;margin:0;padding:0}.drop-list ul li:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.drop-list ul li .link,.drop-list ul li a{vertical-align:middle;height:30px;line-height:30px;display:block;padding:10px 25px;color:inherit;font-size:14px;border:none;max-width:260px;cursor:pointer}.drop-list ul li .link:hover,.drop-list ul li a:hover{background:#f1f3f5;border-color:transparent}.drop-list ul li.disabled .link:hover,.drop-list ul li.disabled a:hover{background:0 0}.drop-list ul li .avatar{width:30px;height:30px;margin-left:10px;float:right}.drop-list ul li:last-child{border-bottom:none}.drop-list.bottom ul{bottom:auto;margin-top:-2px}.drop-list.bottom ul:before{bottom:auto;top:-8px;border-width:0 8px 8px 8px}.disabled{opacity:.2;cursor:default}.disabled .button,.disabled .link,.disabled a,.disabled button{cursor:default!important}.disabled .button:hover,.disabled .link:hover,.disabled a:hover,.disabled button:hover{background:0 0}.tags{-webkit-appearance:none;-moz-appearance:none;-webkit-transform:translateZ(0);box-sizing:content-box;height:40px;line-height:40px;border:solid 1px #e2e2e2;border-radius:10px;padding:5px 15px;font-size:16px;display:block;width:calc(100% - 32px);margin-bottom:30px;background:#fff;min-height:42px;height:auto}.tags[type=file]{line-height:0;padding:15px;height:auto}.tags[xtype=file]{line-height:normal;height:auto;border:none;position:absolute;top:0;right:0;bottom:0;opacity:0;cursor:pointer;padding:0;margin:0;font-size:0;width:100%}.tags[xtype=file]:disabled{opacity:0!important}.tags:focus{outline:0;border-color:#b3d7fd}.tags:disabled{background:#f1f3f5}.tags.strip{border:none;border-radius:0;padding:5px 0;width:100%;background-color:transparent;background-position:left 2px top 50%;border-bottom:solid 1px #e2e2e2;color:#868686}.tags.strip:focus{border-color:#b3d7fd}.tags .add{display:inline-block!important;border:none;padding:0;width:auto;margin:0}.tags ul.tags-list{display:inline}.tags ul.tags-list li{display:inline-block!important;margin-left:10px;font-size:16px;padding:5px 10px;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tags ul.tags-list li::before{float:left;content:'\e807';font-family:fontello;font-style:normal;display:inline-block;text-align:center;line-height:16px;width:16px;height:16px;font-size:12px;background:#000;color:#fff;border-radius:50%;margin-top:4px;margin-bottom:4px;margin-right:6px;margin-left:0}.console{height:100%;width:100%;padding:0}.console body{position:relative;height:calc(100% - 70px);width:calc(100% - 320px);padding-top:70px;padding-bottom:0;padding-left:50px;padding-right:270px;margin:0;color:#4b4b4b;background:#eceff1}.console body .project-only{display:none!important}.console body.show-nav .project-only{display:inline-block!important}.console body.hide-nav .console-back{display:block}.console body.hide-nav .account{display:none}.console body.index .console-back{display:none}.console body.index .account{display:block}.console body .console-back{display:none}.console body:before{content:'';display:block;position:absolute;width:calc(100% - 220px);height:100px;top:-100px;left:0;right:0;background:#fff;z-index:1000;border-right:solid 220px #132a3b}.console header{position:fixed;top:0;width:calc(100% - 280px);height:40px;line-height:40px;padding:15px 30px;background:#fff;box-shadow:0 0 2px rgba(0,0,0,.1);margin:0 -50px;z-index:2;font-size:14px}.console header .setup-new{width:40px;height:40px;line-height:40px}.console header .list{width:240px}.console header .list select{height:40px;line-height:40px;padding-top:0;padding-bottom:0;border:none;border-radius:26px;background-color:#ececec;color:#868686}.console header .account{margin-right:25px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.console header .account:hover{border-bottom:none}.console header .avatar{height:40px;width:40px}.console header .notifications{position:relative;font-size:20px}.console header .notifications a{color:#1b3445}.console header .notifications:after{position:absolute;content:"";display:block;background:#f53d3d;width:8px;height:8px;border-radius:50%;top:3px;left:3px}.console header nav{background:#1b3445;background:linear-gradient(#132a3b,#302839);background:linear-gradient(#143650,#302839);color:#788c99;position:fixed;height:100%;width:220px;top:0;right:0}.console header nav .logo{height:39px;padding:15px 20px;display:block;border-bottom:none}.console header nav .logo:hover{border-bottom:none}.console header nav .logo img{display:inline-block;margin-top:9px;width:75%}.console header nav .logo svg g{fill:#f02e65}.console header nav .icon{display:block;border:none;margin:18px 10px 50px 10px}.console header nav .icon img{display:block}.console header nav .icon:hover{border-bottom:none}.console header nav .icon:hover svg g{fill:#f02e65}.console header nav .container{overflow:scroll;height:calc(100% - 183px);padding-bottom:50px;width:100%}.console header nav .project-box{padding:20px;text-align:center;display:block;border:none;line-height:100px;height:100px}.console header nav .project-box img{max-height:80px;max-width:80%;display:inline-block;vertical-align:middle}.console header nav .project{display:block;padding:85px 25px 20px 25px;color:#788c99;position:relative;border:none;height:20px}.console header nav .project:hover{border-bottom:none}.console header nav .project .name{height:20px;line-height:20px;margin:0;padding:0;display:inline-block;max-width:100%}.console header nav .project .arrow{display:block;position:absolute;left:5px;top:10px;width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #788c99;transform:rotate(225deg)}.console header nav .project img{position:absolute;bottom:40px;display:block;margin-bottom:10px;max-height:35px;max-width:40%}.console header nav .subtitle{padding:0 30px 5px 30px;display:block;font-size:12px;font-weight:300}.console header nav .links{margin-bottom:15px!important}.console header nav .links.top{border:none;padding-bottom:0;margin-bottom:5px!important}.console header nav .links.bottom{position:absolute;bottom:0;left:0;right:0;padding-bottom:0;border:none;margin-bottom:0!important}.console header nav .links.bottom a{border-top:solid 1px #2a253a;border-bottom:none}.console header nav .links .sub{display:inline-block;border:none;width:25px;height:25px;line-height:25px;border-radius:50%;padding:0;background:#f02e65;color:#fff;text-align:center;font-size:12px;margin:18px}.console header nav .links .sub i{width:auto;margin:0}.console header nav .links .sub:hover{border:none}.console header nav .links a{padding:12px 20px;border:none;display:block;color:#87a5b9;font-weight:400;border-right:solid 5px transparent}.console header nav .links a i{margin-left:8px;width:22px;display:inline-block}.console header nav .links a.selected,.console header nav .links a:hover{color:#e4e4e4;font-weight:500}.console header nav:after{content:'';display:block;position:absolute;background:#302839;height:100px;width:100%;bottom:-100px}.console>footer{width:calc(100% + 100px);margin:0 -50px;box-sizing:border-box;background:0 0;padding-left:30px;padding-right:30px}.console>footer ul{float:none;text-align:center}.console>footer ul li{float:none;display:inline-block}.console .projects{position:relative}.console .projects:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.console .projects li{float:right;margin-left:50px;margin-bottom:50px;width:270px}.console .projects li.new,.console .projects li:nth-child(3n){margin-left:0}.console .dashboard{padding:20px;min-height:95px;overflow:hidden;position:relative;z-index:1}.console .dashboard hr{margin:20px -20px}.console .dashboard footer{margin:-20px;padding:20px;background:#fcfeff;border:none;color:#1e849e}.console .dashboard .col{position:relative}.console .dashboard .col:last-child:after{display:none}.console .dashboard .col:after{content:"";display:block;width:2px;background:#eceff1;height:calc(100% + 110px);position:absolute;top:-20px;bottom:-20px;left:24px}@media only screen and (max-width:550px),only screen and (min-width:551px) and (max-width:970px){.console .dashboard .col:after{width:calc(100% + 40px);height:3px;position:static;margin:20px -20px}}.console .dashboard .value{color:#f02e65;vertical-align:bottom;line-height:55px}.console .dashboard .value .sum{font-size:55px;line-height:55px;font-weight:700;vertical-align:bottom}.console .dashboard .unit{font-weight:500;line-height:20px;vertical-align:bottom;font-size:16px;display:inline-block;margin-bottom:5px;margin-right:5px;color:#f02e65}.console .dashboard .metric{color:#f02e65;font-weight:400;font-size:13px;line-height:16px}.console .dashboard .range{color:#818181;font-weight:400;font-size:14px;line-height:16px}.console .dashboard a{display:block;font-weight:400;font-size:14px;line-height:16px;padding:0;border:none}.console .dashboard .chart-metric{width:19%}@media only screen and (min-width:551px) and (max-width:970px),only screen and (max-width:550px){.console .dashboard .chart-metric{width:100%}}.console .dashboard .chart{width:80%;position:relative;height:0;padding-top:20px;padding-bottom:26%;margin-left:-2px;overflow:hidden;background-color:#fff;background-image:linear-gradient(transparent 1px,transparent 1px),linear-gradient(90deg,transparent 1px,transparent 1px),linear-gradient(#f1f1f1 1px,transparent 1px),linear-gradient(90deg,#f1f1f1 1px,transparent 1px);background-size:100px 100px,100px 100px,20px 20px,20px 20px;background-position:-2px -2px,-2px -2px,-1px -1px,-1px -1px;background-repeat:round;border:solid 1px #f1f1f1;border-right:solid 1px transparent;border-bottom:solid 1px transparent}@media only screen and (min-width:551px) and (max-width:970px),only screen and (max-width:550px){.console .dashboard .chart{width:100%;float:none;margin-bottom:20px}}.console .dashboard .chart canvas{position:absolute;bottom:0;display:block;height:100%;width:100%}.console .link-list li{margin-bottom:15px}.console .link-list i{display:inline-block;width:30px;height:30px;line-height:30px;text-align:center;background:#818181;color:#f1f3f5;border-radius:50%;margin-left:15px}.console .link-list i.fade{background:0 0;color:#818181}.console .provider{width:50px;height:50px;background:#f5f5f5;color:#868686;line-height:50px;text-align:center;font-size:25px;border-radius:50%}.console .provider.facebook{color:#fff;background:#3b5998}.console .provider.twitter{color:#fff;background:#55beff}.console .provider.telegram{color:#fff;background:#3ba9e1}.console .provider.github{color:#fff;background:#24292e}.console .provider.whatsapp{color:#fff;background:#25d366}.console .provider.linkedin{color:#fff;background:#1074af}.console .provider.microsoft{color:#fff;background:#137ad4}.console .provider.google{color:#fff;background:#4489f1}.console .provider.bitbucket{color:#fff;background:#2a88fb}.console .provider.gitlab{color:#faa238;background:#30353e}.console .provider.instagram{color:#fff;background:radial-gradient(circle at 30% 107%,#fdf497 0,#fdf497 5%,#fd5949 45%,#d6249f 60%,#285aeb 90%)}.console .premium{z-index:3;margin-top:320px}.console .premium .message{height:190px;overflow:hidden;position:absolute;top:-280px}.console .premium:after{content:'';position:absolute;top:0;left:-20px;right:-20px;bottom:-20px;background:#f6f7f8;opacity:.7;z-index:300}.console .app-section{height:90px}.console .confirm{background:#1e849e;color:#fff;border-radius:25px;padding:12px;line-height:28px;text-align:center}.console .confirm .action{font-weight:500;cursor:pointer}.console .platforms{overflow:hidden}.console .platforms .box{overflow:hidden}.console .platforms .box img{width:50px;margin:0 auto;margin-bottom:20px}.console .platforms .box .cover{margin:-30px -30px 30px -30px;padding:30px}.console .platforms .box .cover.android{background:#a4ca24}.console .platforms .box .cover.android h1{color:#fff;font-size:18px;margin-top:20px}.console .platforms .col{text-align:center;line-height:30px}.console .platforms a{display:block;margin:-20px;padding:20px}.console .platforms a:hover{background:#fbfeff}.console .platforms img{display:block;margin:0 30px;width:calc(100% - 60px);border-radius:50%;margin-bottom:20px}.dev-feature{display:none}.prod-feature{display:none}.development .dev-feature{display:block;opacity:.6!important;outline:solid #ff0 3px;outline-offset:3px}.development .dev-feature.dev-inline{display:inline-block}.development .prod-feature{display:none}.production .dev-feature{display:none}.production .prod-feature{display:block}.search{opacity:1!important}@media only screen and (max-width:550px),only screen and (min-width:551px) and (max-width:970px){.search button{margin-top:20px}}html.home body{padding:0 50px}html.home .logo img{max-height:35px;margin:45px 25px 25px 25px}.alerts ul{width:100%;visibility:hidden;position:fixed;padding:0;right:0;left:0;color:#fff;z-index:1002;margin:0 auto;bottom:15px;max-width:650px;opacity:.9}.alerts ul li{margin:1px 0 0 0;padding:0}.alerts ul li div.message{position:relative;padding:12px 35px;margin:0 auto;list-style:none;background:#818181;text-align:center;font-weight:700;border-radius:20px;line-height:16px;min-height:16px}.alerts ul li div.message i{cursor:pointer;position:absolute;font-size:22px;top:8px;right:8px}.alerts ul li div.message.error{color:#fff;background:#f53d3d}.alerts ul li div.message.success{color:#fff;background:#1bbf61}.alerts ul li div.message.warning{color:#fff;background:#ffed4d}.alerts ul li div.message.open{display:block}.alerts ul li div.message.close{display:none}.alerts .cookie-alert{background:#fff2f6!important;color:#f02e65}.alerts .cookie-alert a{color:#f02e65;font-weight:400;border-bottom:dotted 1px #f02e65}@media only screen and (max-width:550px),only screen and (min-width:551px) and (max-width:970px){.alerts ul{top:auto;bottom:0;max-width:100%}.alerts ul li{margin:5px 0 0 0}.alerts ul li div.message{border-radius:0}}article{overflow-wrap:break-word;word-wrap:break-word}article h1{font-size:36px}article h2{font-size:24px}article h3{font-size:20px}article h4{font-size:20px}article h5{font-size:18px}article h6{font-size:16px}article h1,article h2,article h3,article h4,article h5,article h6{margin-top:30px!important;margin-bottom:30px!important}article p{line-height:32px;font-size:17px}article .update{display:block;margin-top:50px!important}article table{width:100%;margin:0;margin-bottom:30px!important;border-radius:0;border-bottom:solid 1px #e7e7e7}article table thead td{font-weight:500;padding:5px 15px}article table td,article table th{padding:15px;height:auto}article table td:first-child,article table th:first-child{padding-right:10px}article table td:last-child,article table th:last-child{padding-left:10px}article table td p,article table th p{font-size:inherit;line-height:inherit}article table td p:last-child,article table th p:last-child{margin:0}.avatar{width:60px;height:60px;border-radius:50%;background:#ddd;display:inline-block;overflow:hidden;box-shadow:0 0 6px rgba(0,0,0,.09);position:relative;z-index:1;opacity:1!important}.avatar:before{content:"";position:absolute;width:100%;height:100%;z-index:0;background:#ddd}.avatar.inline{display:inline-block;vertical-align:middle}.avatar.trans{background:0 0}.avatar.xs{width:20px;height:20px}.avatar.small{width:50px;height:50px}.avatar.big{width:100px;height:100px}.avatar.huge{width:150px;height:150px}.box{position:relative;background:#fff;border-radius:10px;box-shadow:0 0 3px rgba(0,0,0,.05);padding:30px;display:block;border-bottom:none}.box.padding-small{padding:15px}.box.y-scroll{overflow-y:auto}.box.danger{background:#f53d3d;color:#fff}.box.focus{background:#f02e65;color:#fff}.box.focus .button,.box.focus button{background:#fff;color:#f02e65}.box.warning{background:#ffed4d;color:#2d2d2d}.box.warning .button,.box.warning button{background:rgba(45,45,45,.8);color:#ffed4d}.box>footer{margin:30px -30px -30px -30px;padding:15px 30px;background:#f5f5f5;border:solid 1px #eaeaea;border-radius:0 0 10px 10px}.box hr{height:2px;background:#eceff1;border:none;margin:30px -30px}.box .header{position:static;height:40px;padding:20px 30px 20px 30px;margin-bottom:30px;margin:-30px -30px 20px -30px;background:#f9f9f9;border-bottom:solid 1px #efefef}.box .toggle{position:relative;border-top:2px solid #f6f7f8;border-bottom:2px solid #f6f7f8;margin:0 -30px;padding:30px;height:35px;overflow:hidden}.box .toggle button.ls-ui-open{position:absolute;top:0;right:0;width:100%;height:95px;background:0 0;opacity:.5;border-radius:0}.box .toggle .icon-minus{display:none}.box .toggle .content{display:none}.box .toggle.open{height:auto}.box .toggle.open .icon-minus{display:block}.box .toggle.open .icon-plus{display:none}.box .toggle.open .content{display:block}.box .list li{border-bottom:solid 2px #f6f7f8;margin:0 -30px 30px -30px;padding:0 30px 30px 30px}.box .list li:last-child{padding-bottom:0;margin-bottom:0;border-bottom:none}.box.new{text-align:center}.box.new i{font-size:80px;line-height:80px;font-family:Poppins,sans-serif;font-style:normal;font-weight:300}.box.new b{margin-top:20px;display:block}a.box{border-right:none;border-left:none}a.box:hover{border-bottom:none;border-right:none;border-left:none;background:#f8fdff;box-shadow:0 0 1px rgba(0,0,0,.2)}.box-asidex{padding-left:25px!important;padding-right:70px;left:0;background:#f9f9f9;border-radius:0 10px 10px 0;height:calc(100% - 30px);position:absolute;padding-top:30px}.box-asidex:after{content:"";display:block;position:absolute;height:100%;width:51px;background:#fff;top:0;bottom:0;right:-6px}.cover{background:#fff2f6;padding:30px 50px;margin:0 -50px;position:relative;border-bottom:solid 1px #dedede}.cover .title,.cover h1,.cover h2,.cover h3,.cover h4{color:#f02e65;font-weight:600;margin-bottom:40px!important;font-size:28px;line-height:42px}.cover i:before{margin:0!important}.cover p{color:#737373}.cover .button{color:#fff}.cover .link,.cover a{color:#f02e65;border-left:none;border-right:none;cursor:pointer}.cover .link:hover,.cover a:hover{border-bottom-color:#f02e65}.console .database .row .col{height:452px}.console .database .row .col:after{width:2px;left:20px}.console .database hr{margin:0 -20px;background:#efefef;height:2px}.console .database h3{font-size:13px;line-height:20px;height:20px;background-color:#f5f5f5;margin:-20px -20px 0 -20px;padding:10px 20px;border-bottom:solid 1px #e1e2e2;font-weight:600}.console .database .empty{height:160px;font-size:12px;text-align:center;margin:50px 0}.console .database .empty h4{font-size:13px;font-weight:600;line-height:120px}.console .database .search{background-color:#f5f5f5;margin:0 -20px 0 -20px;padding:10px 15px}.console .database .search input{height:40px;background-color:#fff;border-radius:25px;padding-top:0;padding-bottom:0}.console .database .code{height:411px;background:#f5f5f5;margin:0 -20px -20px -20px;padding:20px;width:calc(100% - 10px)}.console .database .code .ide{overflow:scroll;height:451px;margin:-20px;box-shadow:none;border-radius:0}.console .database .paging{background:#f5f5f5;margin:0 -20px -20px -20px;padding:20px}.console .database .button{margin:0 -20px;padding:0 20px!important;text-align:inherit;color:#f02e65;width:100%;font-size:15px;line-height:55px;box-sizing:content-box}.console .database .button i{margin-left:8px}.console .database .button:hover{border:none;background:#fff2f6}.console .database .items{margin:0 -20px;height:260px;overflow-x:hidden;overflow-y:scroll}.console .database .items form{opacity:0;position:relative}.console .database .items form button{background:red;position:absolute;top:0;bottom:0;right:0;left:0;width:100%;height:45px;border-radius:0;cursor:pointer}.console .database .items li{padding:0;margin:0 0;line-height:45px;font-size:15px;padding-right:50px;padding-left:30px;position:relative}.console .database .items li i{position:absolute;display:none;left:10px}.console .database .items li .name{display:inline-block;width:100%;height:28px}.console .database .items li.selected,.console .database .items li:hover{background:#f5f5f5}.console .database .items li.selected i,.console .database .items li:hover i{display:block}.console .database .items li:last-child{border-bottom:none}body>footer{color:#818181;line-height:40px;margin:0 -50px;padding:12px 50px;font-size:13px;width:100%;background:#f1f1f1;position:relative;margin-top:80px!important}body>footer:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}body>footer .logo img{height:22px;padding-top:12px}body>footer a{color:#505050}body>footer a:hover{border-bottom-color:#505050}body>footer ul:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}body>footer ul li{float:right;margin-left:20px!important}body>footer .copyright{padding-right:2px}[data-ls-if]{display:none}[data-service]{opacity:0}.load-service-start{opacity:0}.load-service-end{opacity:1;transition:opacity .5s ease-out;-moz-transition:opacity .5s ease-out;-webkit-transition:opacity .5s ease-out;-o-transition:opacity .5s ease-out}.modal-open .modal-bg,.modal-open body .modal-bg{position:fixed;content:'';display:block;width:100%;height:100%;left:0;right:0;top:0;bottom:0;background:#0c0c0c;opacity:.5;z-index:4}.modal{overflow:auto;display:none;position:fixed;width:100%;max-height:90%;max-width:640px;background:#fff;z-index:1000;box-shadow:0 0 4px rgba(0,0,0,.25);padding:30px;left:50%;top:50%;transform:translate(-50%,-50%);border-radius:10px;box-sizing:border-box;text-align:right}@media only screen and (max-width:550px),only screen and (min-width:551px) and (max-width:970px){.modal{width:calc(100% - 20px)}}.modal.padding-small{padding:15px}.modal.height-tiny form{height:100px}.modal.height-small form{height:220px}.modal.width-small{max-width:400px}.modal.width-medium{max-width:500px}.modal.width-large{max-width:800px}.modal.open{display:block}.modalbutton.close{display:none}.modal.fill{height:95%;max-height:95%;max-width:75%}.modal h1,.modal h2{margin-bottom:25px;margin-top:0;font-size:20px;text-align:right}.modal h1,.modal h2,.modal h3,.modal h4,.modal h5,.modal h6{color:inherit!important;line-height:35px}.modal .main,.modal form{position:relative;border-top:solid 1px #e7e7e7;padding:30px 30px 0 30px;margin:0 -30px}.modal .separator{margin:20px -30px}.modal .info{margin:0 -30px;padding:20px 30px;background:#f5fbff;color:#3b5d73;border-top:solid 1px #eaf2f7;border-bottom:solid 1px #eaf2f7}.modal button.close{width:30px;height:30px;line-height:30px;padding:0;margin:0;background:#1b1b1b;color:#fff;border-radius:50%}.phases{list-style:none;margin:0;padding:0;position:relative}.phases li{display:none}.phases li li{display:block}.phases li.selected{display:block}.phases .number{display:none}.phases h2,.phases h3,.phases h4,.phases h5,.phases h6{margin:0 0 30px 0;text-align:inherit}.container{position:relative}.container .tabs{height:55px;line-height:55px;list-style:none;padding:0;margin-bottom:50px!important;margin-top:-55px;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.container .tabs:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.container .tabs .selected{font-weight:400;color:#f02e65;position:relative;opacity:1}.container .tabs .selected:after{content:"";display:block;height:2px;background:#f02e65;width:calc(100% - 46px);position:absolute;bottom:0;border-radius:2px;right:-2px}.container .tabs .number{display:none}.container .tabs li{float:right;padding-left:50px;color:#f02e65;opacity:.9;cursor:pointer}.container .tabs li:focus{outline:0}.container .icon{display:none}@media only screen and (max-width:550px),only screen and (min-width:551px) and (max-width:970px){.container .tabs{width:auto;overflow-x:scroll;overflow-y:hidden;white-space:nowrap}.container .tabs li{display:inline-block;float:none}}.ide{background-color:#373738;overflow:hidden;position:relative;z-index:1;box-shadow:0 2px 4px 0 rgba(50,50,93,.3);border-radius:10px;margin-bottom:30px}.ide .tag{color:inherit!important;background:0 0!important;padding:inherit!important;font-size:inherit!important}.ide .copy{position:absolute;bottom:15px;left:15px;cursor:pointer;background:#39393c;border-radius:50%;padding:2px;color:#6a6a6d;border:solid 2px #414142}.ide pre{-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none;color:#e6ebf1;font-weight:400;line-height:20px;font-size:13px;margin:0;padding:20px;padding-left:60px}.ide.light{box-shadow:0 2px 4px 0 rgba(50,50,93,.1);background-color:#fff}.ide.light pre{color:#414770}.ide.light .token.cdata,.ide.light .token.comment,.ide.light .token.doctype,.ide.light .token.prolog{color:#91a2b0}.ide.light .token.attr-name,.ide.light .token.builtin,.ide.light .token.char,.ide.light .token.inserted,.ide.light .token.selector,.ide.light .token.string{color:#149570}.ide.light .token.punctuation{color:#414770}.ide.light .language-css .token.string,.ide.light .style .token.string,.ide.light .token.entity,.ide.light .token.operator,.ide.light .token.url,.ide.light .token.variable{color:#414770}.ide.light .line-numbers .line-numbers-rows{background:#f2feef}.ide.light .line-numbers-rows>span:before{color:#5dc79e}.ide.light .token.keyword{color:#6772e4;font-weight:500}code[class*=language-],pre[class*=language-]{text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4}pre[class*=language-]{overflow:auto}:not(pre)>code[class*=language-]{padding:.1em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#6b7c93}.token.punctuation{color:#f8f8f2}.namespace{opacity:.7}.token.constant,.token.deleted,.token.property,.token.symbol,.token.tag{color:#f92672}.token.boolean,.token.number{color:#f79a59}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#3ecf8e}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url,.token.variable{color:#f8f8f2}.token.atrule,.token.attr-value,.token.class-name,.token.function{color:#45b2e8}.token.keyword{color:#7795f8}.token.important,.token.regex{color:#fd971f}.token.italic{font-style:italic}.token.entity{cursor:help}pre[class*=language-].line-numbers{position:relative;padding-left:60px;counter-reset:linenumber}pre[class*=language-].line-numbers>code{position:relative;white-space:inherit}.line-numbers .line-numbers-rows{background:#39393c;position:absolute;pointer-events:none;top:-20px;padding:20px 0;font-size:100%;left:-60px;width:40px;letter-spacing:-1px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.line-numbers-rows>span{padding-left:5px;pointer-events:none;display:block;counter-increment:linenumber}.line-numbers-rows>span:before{content:counter(linenumber);color:#636365;display:block;padding-right:.8em;text-align:right}html{padding:0;margin:0;direction:rtl}body{margin:0;background:#f6f7f8 no-repeat fixed}main{min-height:100%}ul{padding:0;margin:0}ul li{margin:0;list-style:none}.force-left{direction:ltr;text-align:left}.force-right{direction:rtl;text-align:right}.pull-left{float:left}.pull-right{float:right}.icon-left-open:before{content:'\e814'!important}.icon-right-open:before{content:'\e813'!important}.icon-link-ext:before{-moz-transform:scaleX(-1);-o-transform:scaleX(-1);-webkit-transform:scaleX(-1);transform:scaleX(-1)}.icon-article-alt:before{-moz-transform:scaleX(-1);-o-transform:scaleX(-1);-webkit-transform:scaleX(-1);transform:scaleX(-1)}.copy{border-radius:10px 0 0 10px!important} \ No newline at end of file diff --git a/public/scripts/views/service.js b/public/scripts/views/service.js index cc77b5e6f..193b39db2 100644 --- a/public/scripts/views/service.js +++ b/public/scripts/views/service.js @@ -57,7 +57,8 @@ redirect: function(url) { return function(router) { - router.change(url || "/"); + //router.change(url || "/"); + window.location = url || "/"; }; }, diff --git a/public/styles/dependencies/prism.less b/public/styles/dependencies/prism.less index d56572f4d..eb8d2ac99 100644 --- a/public/styles/dependencies/prism.less +++ b/public/styles/dependencies/prism.less @@ -15,6 +15,13 @@ https://prismjs.com/download.html#themes=prism-okaidia&languages=markup+css+clik border-radius: 10px; margin-bottom: 30px; + .tag { + color: inherit!important; + background: transparent!important; + padding: inherit!important; + font-size: inherit!important; + } + .copy { position: absolute; bottom: 15px;